EFM32的RTC計時不准的解決過程

2021-09-06 20:05:07 字數 813 閱讀 9436

應用efm32在不斷的完善功能,到了rtc日曆功能。

把日鍾一加,簡單的開啟了手機的秒錶,一分鐘下來,竟然差了兩秒。然後簡單的一看,用了內部的lfrco晶振。於是改為外部lfxo晶振。結果還是1分鐘慢兩秒。

難道晶振不行,找開發板測試,問題依舊。

從資料裡面找到了,說有晶振校準的功能。寫入乙個係數就可以校準了。以為是簡單的寫個係數搞定。結果翻了翻官方的an校準應用,一堆初始化和中斷。然後,各種測。晶振校準也沒搞定。

於是,照例把所有程式段都遮蔽,只留下rtc和lcd顯示。問題依舊。

用低功耗timer試,問題依舊。

用正常的timer,高速晶振hfrco,雖然也是內部rc,但是卻正常。

說明是時鐘選擇的問題。

但是,必須用lf時鐘啊,要不然,沒法低功耗應用。

把em2低功耗模式取消,還是沒解決。

簡單的問題又搞了幾天。

然後,想到了校準係數。把校準係數故意寫個特別大的值,寫到lfrco,即內部rc時鐘內,然後啟用外部的xo晶振。

測下來,秒錶差的更大了,說明校準係數實現功能了。同時也說明,外部晶振壓根沒使能,還是用的內部rc。

於是,繼續發貼問,查資料,毫無所得。

偶爾靈光一現,想起來,會不會是lcd初始化時,出了問題。

然後轉到lcd初始化,一看,果然是。lcd初始化是從官方lcd例程複製過來的,而複製過來時,時鐘的初始化是放在lcd初始化裡面的。

然後就是lcd初始化時,又重新把時鐘選擇到了內部rc,lfrco。結果當然就是外部lfxo,肯定不使能。

然後把lcd的時鐘、分頻等複製到了cmu的初始化裡面。搞定。

都是粗心大意惹的禍啊。

efm32的初步了解和學習

efm32資料比較少,許多資料都在官網,efm32 的官網是芯科科技 具體怎麼找資料。直接官網搜你的晶元。比如我efm32gg380f512 找到對應的手冊資料,比如晶元的晶元手冊,相關暫存器的資料等等。還有參考 products development tools software simplic...

window計時不准導致的bug

於是用以下方法測試 分別用waitforsingleobject gettickcount,waitforsingleobject queryperformance,sleep gettickcount,sleep queryperformance,來列印延時計數,試了n次後發現,得出以下結論 wi...

C 中的clock計時不准?

include include using namespace std intmain endtime1 clock 計時結束 cout the run time is double endtime1 starttime1 clocks per sec s endl clock t starttim...