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