前言
本系列文章統(tǒng)一圍繞STM32F103C8T6最小系統(tǒng)開發(fā)板進行記錄谆构,如涉及其他開發(fā)板將會特別說明克滴。
基本概念
- 主要功能
- 嵌入式領(lǐng)域中廣泛應(yīng)用, 主要通過計時芍殖、計數(shù)的方式黍衙,周期性執(zhí)行某件工作,如檢測料扰、響應(yīng)凭豪、控制等。
- 應(yīng)用場合:輸入捕獲晒杈、輸出波形嫂伞、計時等。
- 類型
- 硬件定時器
- 由硬件資源決定拯钻,其精度主要由硬件時鐘決定
- 單個硬件定時器可以擴充出多個軟件定時器
- 軟件定時器:由軟件實現(xiàn) – 循環(huán)延時
- 硬件定時器
- 工作原理:本質(zhì)上是一個計數(shù)器帖努,當計數(shù)器計滿溢出時,代表著一次事件粪般,即完成一次計時拼余。
STM32F1x定時器
8個Timer定時器+1個系統(tǒng)嘀嗒定時器(SysTick)+2個看門狗定時器
-
Timer定時器
- 基本定時器:2個,TIM6/7
- 16位(計數(shù)器分辨率)亩歹,只能向上計數(shù)匙监,只能定時,沒有外部IO
- 通用定時器:4個小作,Timer2/3/4/5
- 16位亭姥,可向上/下計數(shù),可以定時顾稀、輸出比較达罗、輸入捕捉
- 每個定時器有4個外部IO
- 高級定時器:2個,TIM1/8
- 16 位静秆,可向上/下計數(shù)的定時器氮块,可定時、輸出比較诡宗、輸入捕捉滔蝉,還有三相電機互補輸出信號,
- 每個定時器有8個外部IO
- 基本定時器:2個,TIM6/7
-
SysTick定時器
- ARM Cortex-M3
內(nèi)核
的處理器內(nèi)部包含了一個 SysTick 定時器塔沃,它是一個24 位的倒計數(shù)定時器蝠引。 - 時鐘來源為處理器時鐘或外部時鐘阳谍。
- 考慮到MCU的資源有限,通常延時功能通過systick定時器來實現(xiàn)螃概,而通用定時器更多地用于輸入捕獲矫夯、PWM輸出等功能。
- ARM Cortex-M3
-
看門狗定時器
- 用于檢測程序是否運行正常吊洼,當計時超過某個設(shè)定的數(shù)值時训貌,將會判斷程序異常,并強制復(fù)位冒窍。
時基單元
- 作用:計數(shù)递沪,可向上計數(shù)、向下計數(shù)或者向上向下雙向計數(shù)综液。
- 組成
- 計數(shù)器寄存器(TIMx_CNT)
- 預(yù)分頻器寄存器 (TIMx_PSC)
- 自動裝載寄存器 (TIMx_ARR)
- 計數(shù)模式
-
向上計數(shù)模式(0—ARR)款慨。
- 計數(shù)器從0計數(shù)到自動加載值(自動裝載寄存器中的值)。
- 重新從0開始計數(shù)并產(chǎn)生一個計數(shù)器溢出事件谬莹。
-
向下計數(shù)模式(ARR—0)
- 計數(shù)器從自動加載值(自動裝載寄存器中的值)到0檩奠。
- 從自動加載值重新開始并且產(chǎn)生一個計數(shù)器向下溢出事件。
-
中央對齊模式(向上向下計數(shù))(0—(ARR-1)—ARR—1)
- 計數(shù)器從0開始計數(shù)到自動加載值附帽,產(chǎn)生一個計數(shù)器溢出事件埠戳,然后向下計數(shù)到1并且產(chǎn)生一個計數(shù)器下溢事件,然后再從0開始重新計數(shù)蕉扮。
-
定時器時鐘源
SYSCLK = 72MHz
AHB = 72MHz
APB1 = AHP / 2 = 36MHz整胃,APB1的分頻系數(shù)為2
所以通用定時器的時鐘為APB1 * 2 = 72MHz
定時器時鐘源
定時器計時原理
定時器時鐘源每tick一次,預(yù)分頻器計數(shù)器值+1慢显,直到達到預(yù)分頻器的設(shè)定值,然后再tick一次后計數(shù)器歸零欠啤,同時荚藻,CNT計數(shù)器值+1。
定時器計時原理
- 預(yù)分頻器計一個數(shù)的時間為:
- 定時器溢出時間則為:
- 根據(jù)定時器時鐘頻率洁段,選擇合適的psc和arr數(shù)值進行定時器時間設(shè)置:
如TIM_CLK = 72MHz应狱,設(shè)置psc = 1,arr = 35999祠丝,則溢出時間為1ms疾呻。