stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗
點(diǎn)擊上方藍(lán)色字體,關(guān)注我們
本博文簡要闡述STM32L011微控制器定時(shí)器的參數(shù)配置(其他型號大同小異,本文側(cè)重講解配置,至于各類定時(shí)器的特點(diǎn)后續(xù)再述),STM32定時(shí)器種類繁多有通用定時(shí)器、基本定時(shí)器、獨(dú)立看門狗定時(shí)器、窗口看門狗定時(shí)器等。
1
基本、通用類型定時(shí)器
STM32基本、通用類型可編程定時(shí)器主要由一個(gè) 16 位及其相關(guān)的自動(dòng)重載寄存器組成,在配置基本、通用類型的定時(shí)器時(shí)有三種關(guān)鍵寄存器:計(jì)數(shù)器寄存器 、預(yù)分頻器寄存器和自動(dòng)重載寄存器,具體說明如下所示:
計(jì)數(shù)器寄存器:
有遞增計(jì)數(shù)、遞減計(jì)數(shù)或同時(shí)遞增和遞減計(jì)數(shù)三類,計(jì)數(shù)器的時(shí)鐘可通過預(yù)分頻器進(jìn)行分頻;
預(yù)分頻器寄存器:
可對計(jì)數(shù)器時(shí)鐘頻率進(jìn)行分頻,分頻系數(shù)介于 1 和 65536 之間(這里指STM32L011);
自動(dòng)重載寄存器:
當(dāng)計(jì)數(shù)器達(dá)到上溢值(或者在遞減計(jì)數(shù)時(shí)達(dá)到下溢值)時(shí)將發(fā)送更新事件,計(jì)數(shù)器寄存器將裝載重新計(jì)數(shù)。
假設(shè)計(jì)數(shù)器寄存器數(shù)值為0xFC,采用2預(yù)分頻,當(dāng)使能計(jì)數(shù)器后,定時(shí)器時(shí)鐘開始按照定時(shí)效果運(yùn)行(定時(shí)由計(jì)數(shù)器寄存器和預(yù)分頻器寄存器共同決定),計(jì)數(shù)器從0x00計(jì)數(shù)到0xFC后會(huì)產(chǎn)生中斷,并更新時(shí)間開始新一輪的計(jì)數(shù),從0x00計(jì)數(shù)到0xFC時(shí)間的長短由預(yù)分頻控制寄存器決定,時(shí)序圖如下所示:
?數(shù)器寄存器數(shù)值為0xFC(十進(jìn)制:252),采用2預(yù)分頻的定時(shí)周期計(jì)算如下(假設(shè)使用32MHZ的時(shí)鐘頻率):
由于1HZ是1秒/次的頻率,63492HZ就是,計(jì)數(shù)器從0x00計(jì)數(shù)到0xFC,定時(shí)周期為63492秒,使用STM32CuBeMX配置如下所示:
假設(shè)計(jì)數(shù)器寄存器數(shù)值為0xFC,采用4預(yù)分頻,?時(shí)序圖如下所示:
數(shù)器寄存器數(shù)值為0xFC(十進(jìn)制:252),采用2預(yù)分頻的定時(shí)周期計(jì)算如下(假設(shè)使用32MHZ的時(shí)鐘頻率):
計(jì)數(shù)器從0x00計(jì)數(shù)到0xFC,定時(shí)周期為31746秒,使用STM32CuBeMX配置如下所示:
2
獨(dú)立看門狗定時(shí)器
獨(dú)立看門狗定時(shí)器激活后,計(jì)數(shù)器開始從復(fù)位值 0xFFF (可通過窗口寄存器修改)遞減計(jì)數(shù),當(dāng)計(jì)數(shù)器計(jì)數(shù)到終值 (0x000) 時(shí)會(huì)產(chǎn)生一個(gè)復(fù)位信號,在遞減的過程中將鍵值 0x0000 AAAA 寫到密鑰寄存器中,計(jì)數(shù)器將會(huì)重載,從而避免產(chǎn)生看門狗復(fù)位,獨(dú)立看門狗框圖如下所示:
?獨(dú)立看門狗定時(shí)器有三種關(guān)鍵寄存器:窗口寄存器、預(yù)分頻器寄存器和重載寄存器,具體說明如下所示:
窗口寄存器:
默認(rèn)值為 0x0000 0FFF(十進(jìn)制:
4095),當(dāng)計(jì)數(shù)器值大于窗口寄存器中存儲(chǔ)的值時(shí),如果執(zhí)行重載操作,則會(huì)產(chǎn)生復(fù)位;
預(yù)分頻器寄存器:
可對計(jì)數(shù)器時(shí)鐘頻率進(jìn)行分頻,分頻系數(shù)最大為256(這里指STM32L011);
重載寄存器:
當(dāng)計(jì)數(shù)器計(jì)數(shù)到終值 (0x000) 時(shí)會(huì)產(chǎn)生一個(gè)復(fù)位信號,計(jì)數(shù)器寄存器將裝載重新計(jì)數(shù)。
獨(dú)立看門狗定時(shí)器時(shí)鐘由LSI振蕩器提供,STM32L011中LSI頻率為37KHZ,看門狗定義周期時(shí)間的方式和基本、通用類型可編程定時(shí)器完全一致,假設(shè)定義1秒周期的看門狗定時(shí)器,超過1秒不喂狗就進(jìn)行系統(tǒng)復(fù)位,計(jì)算方式如下所示:
?當(dāng)然由于LSI振蕩器精度有限,在運(yùn)行過程中會(huì)存在一定誤差,使用STM32CuBeMX配置如下所示:
3
窗口看門狗定時(shí)器?
窗口看門狗定時(shí)器是可編程的自由運(yùn)行遞減計(jì)數(shù)器,窗口看門狗激活后當(dāng)遞減計(jì)數(shù)器值小于 0x40(從 0x40 遞減到 0x3F) 時(shí)復(fù)位,在窗口閾值之外重載遞減計(jì)數(shù)器時(shí)也會(huì)復(fù)位,只有在0x40~窗口閾值之間喂狗系統(tǒng)才可以正常運(yùn)行,窗口定時(shí)器時(shí)序圖如下所示:
時(shí)序圖解析如下所示:
T[6:0]:
7 位計(jì)數(shù)器,用來存儲(chǔ)看門狗計(jì)數(shù)器的值,它每隔PCLK 個(gè)周期遞減一次,當(dāng)它從 0x40 遞減到 0x3F(T6 清零)時(shí)會(huì)產(chǎn)生復(fù)位;
WDGTB[1:0] :
定時(shí)器時(shí)基 ,有4種方式修改預(yù)分頻器的時(shí)基:
00:
CK 計(jì)數(shù)器時(shí)鐘 (PCLK div 4096) 分頻器 1、01:
CK 計(jì)數(shù)器時(shí)鐘 (PCLK div 4096) 分頻器 2、10:
CK 計(jì)數(shù)器時(shí)鐘 (PCLK div 4096) 分頻器 4和11:
CK 計(jì)數(shù)器時(shí)鐘 (PCLK div 4096) 分頻器 8;
W[6:0]:
7 位窗口值,用于與遞減計(jì)數(shù)器進(jìn)行比較的窗口值,超過窗口閾值系統(tǒng)會(huì)復(fù)位;
當(dāng)遞減計(jì)數(shù)器值從 0x40 遞減到 0x3F時(shí)系統(tǒng)會(huì)復(fù)位;
0x40~W[6:0]之間可以刷新喂狗,確保系統(tǒng)正常運(yùn)行。
窗口定時(shí)器超時(shí)值的計(jì)算公式如下:
STM32L011中窗口看門狗定時(shí)器基于APB1頻率,假設(shè)APB1 頻率等于 32 MHZ,定義65毫秒周期的窗口看門狗定時(shí)器,計(jì)算方式如下所示:
?使用STM32CuBeMX配置如下所示:
往期推薦嵌入式程序調(diào)用函數(shù)的內(nèi)部過程和機(jī)制
低功耗深度休眠后無法喚醒、燒錄程序,怎么辦?
移柯L620模組使用MQTT協(xié)議連接移動(dòng)OneNet云平臺
總結(jié)
以上是生活随笔為你收集整理的stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数据分析图_Python数据
- 下一篇: 线性回归csv数据集_数据科学的基石:统