EFM32片內外設 WDT基本操作

2021-06-16 09:20:16 字數 1349 閱讀 3814

如?下是看門狗的基本介紹以及基本的操作。大致上還算比較簡單。

efm32的wdt不同於其他mcu,wdt不能用作定時器,如果看門狗溢位,一定會引起系統復位。同時在程式中也可以查詢復位的標誌位來判斷是否為看門狗引起的復位。

另外就是,僅可以在wdt使能的狀態下,才可以對wdt的暫存器進行操作。

最後,一般習慣於先除錯其他功能,等其他功能全部除錯完畢之後,再加入wdt,以減少軟體除錯的複雜度和難度。

看門狗初始化:

wdog_init_typedef init =

;wdog_init(&init);

enable: 該引數決定了看門狗初始化完成之後,是否使能看門狗

debugrun:決定了在debug的狀態下,看門狗計數器是否繼續計數,建議選擇false。

em2run,em3run: 決定了efm32在em2,em3模式下看門狗是否繼續執行,視情況決定是否需要開啟

em4block:是否阻止進入em4模式

swoscblock: 決定了程式是否能否停止看門狗的時鐘源。0代表允許,1則表示不允許。另外,寫1會自動使能看門狗的時鐘源。防止看門狗的時鐘源被程式意外修改。

lock:決定了是否對看門狗的配置進行上鎖。

clksel:選擇看門狗的時鐘源。可以選擇ulfrco,lfrco,lfxo。如果選擇lfrco,或則lfxo,必須先使能這兩個時鐘源。

persel: 看門狗溢位週期選擇。wdogperiod_2k,表示wdt溢位需要2048個週期。通過時鐘源的頻率,即可折算出溢位時間。

另外,如果wdt選擇的時鐘源為lfxo或lfrco的情況下,往swoscblock寫1的話,則會阻止mcu進入em3模式。如果時鐘源為ulfro的話,則會阻止mcu進入em4模式。

看門狗餵狗:

wdog_feed();

看門狗使能或則失能:

wdog_enable()

看門狗暫存器上鎖:

wdog_lock()

需要注意的是,

1. 在看門狗未使能之前,不能對看門狗進行操作。

2. 對看門狗暫存器的操作,需要有3個低速時鐘週期的同步時間。因此象如下的操作,是不合適的.

...........

wdog_enable(false);

.......

wdog_enable(true);

wdog_feed();

需要在中間插入等待完成:

...........

wdog_enable(false);

.......

wdog_enable(true);

while (wdog->syncbusy & wdog_syncbusy_ctrl);

wdog_feed();

EFM32片內外設CMU 設定時鐘輸出

在有些場合情況下,特別是晶振起振不良的情況下,我們就需要測量晶體的起振情況.但是由於示波器的探頭本身帶有幾個pf的電容,因此如果直接測量晶體的兩根引腳的話,就很難測量出本身的起振情況了。畢竟我們的負載電容一般也就那麼幾十pf而已.於是,在這種情況下,最好是通過其他方式來測量振盪波形.efm32支援將...

EFM32 筆記 IO操作

efm32的io叫做gpio generalpurposeinput output,通用輸入輸出介面 其他的功能先不研究,最起碼的io功能應該可以實現吧。efm32的gpio每16個一組,這些組分別叫做a b c 每一組分別叫做0 1 2 15,因此他們的io口可以叫做pb0 pe3 pd11 對i...

efm32的初步了解和學習

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