stm32定時器功能分析

2021-10-09 14:09:42 字數 1040 閱讀 3909

談到定時器,就必須對其結構有印象

以下是高階定時器系統結構框圖:

注意在arr(自動重裝載暫存器),psc(預分頻暫存器),ccr(捕獲/比較暫存器)下方陰影代表這些暫存器在物理上實際上是由兩個暫存器組成。對於arr來說,乙個是我們可以寫入讀出的pre-load register(預裝載暫存器),另外乙個是我們無法讀寫但真正起作用的影子暫存器。影子暫存器的目的是為了在更新事件到來時可以同時更新arr(自動重裝載暫存器),psc(預分頻暫存器),ccr(捕獲/比較暫存器)的值(畢竟沒有辦法通過軟體實現多個暫存器的同時更新,而如果這些暫存器不能同時更新會造成時序的紊亂,想想如果psc更新了而arr更新了是多麼可怕的一件事情!)。

對於定時器配置,最核心的部分是

tim_period(定時週期,即裝入arr暫存器的值)

tim_prescaler(預分頻器psc的值,注意有個於其相似的tim_clockdivision設定的是數字濾波器(etr,tix)使用的取樣時鐘,即ckd@cr1,不使用該功能的話(即使用內部時鐘)選擇預設tim_ckd_div1即可)

tim_countermode計時模式:向上,向下或者上下

注意高階定時器tim1,tim8接在apb2,其他接在apb1。

當apbx prescaler = 1 時,定時器時鐘 * 1

當apbx prescaler != 1 時,定時器時鐘 * 2

而對於定時時間計算,我們可以通過定時器時鐘頻率和psc(預分頻器)值計算一秒cnt累加值,然後用arr值比它即可得到對應時間。

stm32關定時器 STM32定時器TIM3程式

include led.h include delay.h include key.h include sys.h include usart.h include timer.h stm32開發板實驗8 定時器中斷實驗 int main void delay init 延時函式初始化 nvic co...

stm32定時器中斷型別分析

沒有頭緒,還是去檢視stm32資料手冊吧。tim it update 更新中斷,計數器向上溢位 向下溢位,計數器初始化 通過軟體或者內部 外部觸發 tim it cc1 4 都是捕獲 比較中斷,貌似都是平等的,即輸入捕獲,輸出比較 tim it trigger 觸發事件 計數器啟動 停止 初始化或者...

stm32的定時器

stm32一共有8個都為16位的定時器。其中tim6 tim7是基本定時器 tim2 tim3 tim4 tim5是通用定時器 tim1和tim8是高階定時器。1.基本定時器 基本定時器tim6和tim7只具備最基本的定時功能,就是累加的時鐘脈衝數超過預定值時,能觸發中斷或觸發dma請求。由於在晶元...