1、休眠喚醒後串列埠異常問題
stm8l主要用來做低功耗產品,這裡就有休眠前跟喚醒後有差異的情況,在除錯的時候碰到如果使用串列埠,在休眠前都正常,當喚醒後,串列埠傳送的資料會出現異常的情況,傳送的資料感覺會有丟幀。後來發現跟系統時鐘有關,如果系統時鐘採用外部時鐘就會有問題,內部時鐘就ok。
/*這裡要用內部時鐘
用外部時鐘在進入halt之後會出現
串列埠傳送異常
*/clk_hsicmd(enable);
while (clk_getflagstatus(clk_flag_hsirdy) == reset);
clk_sysclksourceconfig(clk_sysclksource_hsi);
clk_sysclkdivconfig(clk_sysclkdiv_1);
2、rtc喚醒設定問題
如果要做低功耗,主要是通過rtc來喚醒,這樣cpu能進入最低休眠。設定rtc也碰到乙個奇怪問題,設定喚醒計數器一定要在開中斷之前,不然設定會無效。
clk_peripheralclockconfig(clk_peripheral_rtc, enable);
clk_rtcclockconfig(clk_rtcclksource_lsi, clk_rtcclkdiv_1);
rtc_wakeupclockconfig(rtc_wakeupclock_rtcclk_div16); //38000/16 = 2048
rtc_setwakeupcounter(2375* g_rtcctl.u32wakeint); //這個要放在開中斷前
rtc_itconfig(rtc_it_wut, enable);
rtc_wakeupcmd(enable);
3、adc多通道切換問題
我程式要用到兩個採集,乙個用來做io口的ad採集,乙個用來內部參考電壓做電源電量採集,這裡碰到乙個奇葩問題,如果你在切換通道的時候,第一次採集的資料就是不對,需要第二次採集的資料才行。
smoke_det_pwr_en();
//adc_deinit(adc1);
clk_peripheralclockconfig(clk_peripheral_adc1, enable);
adc_init(adc1, adc_conversionmode_single, adc_resolution_12bit, adc_prescaler_1);
adc_samplingtimeconfig(adc1, adc_group_slowchannels, adc_samplingtime_384cycles);
adc_cmd(adc1, enable);
adc_channelcmd(adc1, adc_channel_4, enable);
t_u32 u32delay = 100;
while(u32delay--);
for(u8i = 0; u8i < 2; u8i++)
smoke_det_pwr_di();
adc_channelcmd(adc1, adc_channel_4, disable);
adc_cmd(adc1, disable);
clk_peripheralclockconfig(clk_peripheral_adc1, disable);
clk_peripheralclockconfig(clk_peripheral_adc1, enable);
adc_init(adc1, adc_conversionmode_single, adc_resolution_12bit, adc_prescaler_1);
adc_vrefintcmd(enable);
adc_cmd(adc1, enable);
adc_channelcmd(adc1, adc_channel_vrefint, enable);
t_u32 u32delay = 100;
while(u32delay--);
for(u8i = 0; u8i < 2; u8i++)
adc_cmd(adc1, disable);
adc_channelcmd(adc1, adc_channel_vrefint, disable);
4、低頻時鐘問題
stm8l內部的低頻是38khz,不是32768
STM8 系列微控制器命名規則
stm8 命名規則示列 stm8s005k6t6c 代表的意義為 超值型 stm8 核心 可以理解為8 位51 增強型核心 mcu,lqfp 32 封 裝,32kb flash 容量,溫度範圍 40 85 工業級 具體分解如下 stm8 微控制器包括以下幾個系列 stm8 8 位mcu stm8a ...
stm8觸控按鍵除錯筆記 1
預設狀態下觸控按鍵所有鍵的靈敏度是一樣的,但是實際應用不是這樣的。各個鍵都有可能不一樣。實現不同靈敏度的方法如下 tsl sckey init 函式裡面初始化了靈敏度 pkeystruct detectthreshold sckey detectthreshold default 我們增加乙個陣列,...
STM8微控制器時鐘
時鐘樹 時鐘源有四種 外部高速晶振 hse 1 16mhz 內部高速rc振盪器 hsi 16mhz 外部低速晶振 lse 32.768 內部低速rc振盪器 lsi 38khz 系統預設配置的時鐘為hsi的8分頻既2mhz 外部時鐘配置hse clk deinit 復位所有時鐘暫存器 clk hsic...