文章出處
文章列表
stm32相關的配置
由于例程使用的主控芯片為STM32L151C8T6,而在本設計中使用的主控芯片為STM32L051C8T6,內核不一樣,并且Cube庫相關的函數接口及配置也會有不同,所以芯片的驅動所以做修改。
RTC 的配置
此例程中,RTC被當做定時器使用,用于定時執行任務。
例程中,RTC使用外部LSE的32.768Khz的晶振作為時鐘源,
而在本設計中,使用內部LSI作為RTC的時鐘源,需要重新設置RTC的分頻參數,使得程序正常運行。
注意MCU內部的低速晶振往往誤差很大,在使用時很大可能會造成模塊接收不到下行包,因為接收對接收窗口的時間要求比較嚴格,所以如果是對下行要求比較嚴格的環境,建議不要使用內部晶振。
根據Fck_spre = Frtcclk/(PREDIV_S+1)/(PREDIV_A+1)
例程中RTC的工作頻率為32.778/(3+1)/(3+1) = 2.048Khz,
而內部晶振的頻率約為37Khz,故PRVEDIV_S和PREDIV_A的值需要改變。
37/2.048 ~= 18;
數據手冊里面有這樣一句話:
Note: When both prescalers are used, it is recommended to configure the asynchronous
prescaler to a high value to minimize consumption.
所以:18 = 9*2;故設置PREDIV_A = 8,PREDIV_S = 1;
由于
37/18 ~= 2.055
1/2.055 ~= 0.486618
故此處的宏定義需要稍作修改
/*!
* RTC Time base in ms
*/
#define RTC_ALARM_TICK_DURATION 0.486618 // 1 tick every 466us
#define RTC_ALARM_TICK_PER_MS 2.055 // 1/2.055 = tick duration in ms ((37/(8+1)/(2+1)) = 2.055Khz)
文章列表
全站熱搜