三、窗口看門狗定時器 ide
以前分享了STM32 GPIO的原理、特性、選型和配置、如何計算RTC時鐘異步預分頻和同步預分頻,此次簡要闡述STM32L011微控制器定時器的參數配置(其餘型號大同小異,本文側重講解配置,至於各種定時器的特色後續再述),STM32定時器種類繁多有通用定時器、基本定時器、獨立看門狗定時器、窗口看門狗定時器等。.net
一、基本、通用類型定時器STM32基本、通用類型可編程定時器主要由一個 16 位及其相關的自動重載寄存器組成,在配置基本、通用類型的定時器時有三種關鍵寄存器:計數器寄存器 、預分頻器寄存器和自動重載寄存器,具體說明以下所示:設計
計數器寄存器:有遞增計數、遞減計數或同時遞增和遞減計數三類,計數器的時鐘可經過預分頻器進行分頻;blog
預分頻器寄存器:可對計數器時鐘頻率進行分頻,分頻係數介於 1 和 65536 之間(這裏指STM32L011);事件
自動重載寄存器:當計數器達到上溢值(或者在遞減計數時達到下溢值)時將發送更新事件,計數器寄存器將裝載從新計數。get
假設計數器寄存器數值爲0xFC,採用2預分頻,當使能計數器後,定時器時鐘開始按照定時效果運行(定時由計數器寄存器和預分頻器寄存器共同決定),計數器從0x00計數到0xFC後會產生中斷,並更新時間開始新一輪的計數,從0x00計數到0xFC時間的長短由預分頻控制寄存器決定,時序圖以下所示:同步
數器寄存器數值爲0xFC(十進制:252),採用2預分頻的定時週期計算以下(假設使用32MHZ的時鐘頻率):it
因爲1HZ是1秒/次的頻率,63492HZ就是,計數器從0x00計數到0xFC,定時週期爲63492秒,使用STM32CuBeMX配置以下所示:
假設計數器寄存器數值爲0xFC,採用4預分頻, 時序圖以下所示:
數器寄存器數值爲0xFC(十進制:252),採用2預分頻的定時週期計算以下(假設使用32MHZ的時鐘頻率):
計數器從0x00計數到0xFC,定時週期爲31746秒,使用STM32CuBeMX配置以下所示:
二、獨立看門狗定時器獨立看門狗定時器激活後,計數器開始從復位值 0xFFF (可經過窗口寄存器修改)遞減計數,當計數器計數到終值 (0x000) 時會產生一個復位信號,在遞減的過程當中將鍵值 0x0000 AAAA 寫到密鑰寄存器中,計數器將會重載,從而避免產生看門狗復位,獨立看門狗框圖以下所示:
獨立看門狗定時器有三種關鍵寄存器:窗口寄存器、預分頻器寄存器和重載寄存器,具體說明以下所示:
窗口寄存器:默認值爲 0x0000 0FFF(十進制:4095),當計數器值大於窗口寄存器中存儲的值時,若是執行重載操做,則會產生復位;
預分頻器寄存器:可對計數器時鐘頻率進行分頻,分頻係數最大爲256(這裏指STM32L011);
重載寄存器:當計數器計數到終值 (0x000) 時會產生一個復位信號,計數器寄存器將裝載從新計數。
獨立看門狗定時器時鐘由LSI振盪器提供,STM32L011中LSI頻率爲37KHZ,看門狗定義週期時間的方式和基本、通用類型可編程定時器徹底一致,假設定義1秒週期的看門狗定時器,超過1秒不喂狗就進行系統復位,計算方式以下所示:
固然因爲LSI振盪器精度有限,在運行過程當中會存在必定偏差,使用STM32CuBeMX配置以下所示:
三、窗口看門狗定時器窗口看門狗定時器是可編程的自由運行遞減計數器,窗口看門狗激活後當遞減計數器值小於 0x40(從 0x40 遞減到 0x3F) 時復位,在窗口閾值以外重載遞減計數器時也會復位,只有在0x40~窗口閾值之間喂狗系統才能夠正常運行,窗口定時器時序圖以下所示:
時序圖解析以下所示:
T[6:0]:7 位計數器,用來存儲看門狗計數器的值,它每隔PCLK 個週期遞減一次,當它從 0x40 遞減到 0x3F(T6 清零)時會產生復位;
WDGTB[1:0] :定時器時基 ,有4種方式修改預分頻器的時基:00:CK 計數器時鐘 (PCLK div 4096) 分頻器 一、01:CK 計數器時鐘 (PCLK div 4096) 分頻器 二、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配置以下所示: