情況是這樣的,現在使用STM32G4系列的TIM8,工作在中心對齊計數,PWM單脈沖模式,使用內部系統時鐘做時鐘源,計數時不做分頻,即PSC=0。CH2做PWM輸出。啟動時計數器從0開始計數,與RCR對應的計數器值為3。請問在0~ARR范圍內調整CCR的值時,整個工作周期內進入基于通道比較事件的中斷響應次數可能是下面哪些選項?
A:1 B:2 C:3 D:4 E:0
因為RCR=3和單脈沖模式。意味著從啟動開始到計數停止,發生4次溢出后產生更新事件并停止計數,計數器剛好工作2個完整的計數周期。
如果說將通道比較事件的中斷請求使能禁用掉或者將NVIC端與該事件有關的中斷響應使能禁用掉,自然不會發生針對通道1比較事件的中斷響應。從這個角度講,選擇E就很自然了。現在假設針對通道比較事件的中斷請求以及NVIC端的中斷響應允許都使能了,那還可能有哪些情形呢?有沒有可能一次比較中斷響應都不發生呢?
其實是可能的。
前面說過,STM32 TIMER采樣中心對齊計數模式的話,又分三種計數模式【具體解讀見前文《一個基于TIMER事件的中斷響應話題》】。如果TIMER采樣中心對齊計數模式1,且CCR=0時,是不會發生比較事件的,自然不會有相應的中斷響應發生。
有沒有可能在當前計數周期內只發生2次中斷響應呢?這里有兩種情況:
第一種情況,定時器工作在中心對齊計數模式1或模式2,CCR在(0,ARR)之間取值,則在一個周期內只發生1次比較事件,整個計數周期【這里就是2個計數周期】則僅發生2次比較事件,自然可以發生2次中斷響應。
第二種情況,定時器工作在任一中心對齊計數模式,CCR取不小于ARR的值,這時每個計數周期僅發生1次比較事件,整個計數周期發生2次比較事件,進而發生兩次中斷響應。
顯然,如果采用中心對齊計數模式3,即在向上計數和向下計數過程中都可以產生比較事件,CCR在(0,ARR)之間取值時,發生4次中斷響應就不難理解了。
經過前面的分析,我們知道發生0次、2次、4次中斷響應都是可能的。那么,只發生1次或3次中斷響應有無可能呢?
這里的條件對ARR和CCR的值并未具體說明,中斷響應持續時間也未明確。那么,即使定時器采用中心對齊模式3,中斷響應次數一定就是4次嗎?未必。
這里使用STM32G474的TIM8來進行驗證,定時器計數時鐘與主頻170MHz一致,不做計數分頻。設定RCR=3,CCR=2000,ARR=4000.
我們可以通過調整中斷服務程序持續時間,在上述TIMER時基參數不變的情況下讓比較中斷只進2次或3次。見下面圖示:
有沒有可能即使在中心對齊模式3條件,整個計數周期內只發生一次中斷響應呢?其實也是可能的。我們可以調整TIMER的時間參數,讓比較事件的觸發足夠近并令中斷服務程序也持續一定的時間,即使發生4次比較事件,完全可能最終只進1次比較中斷服務程序。見下面測試結果示意圖:【ARR=3,CCR=2,中心對齊模式3】
看來,前面提到的5種結果都是可能的。
審核編輯:劉清
-
計數器
+關注
關注
32文章
2256瀏覽量
94575 -
RCR
+關注
關注
0文章
2瀏覽量
6851 -
PWM輸出
+關注
關注
1文章
66瀏覽量
5150 -
中斷響應
+關注
關注
0文章
11瀏覽量
2959
原文標題:一個基于TIMER事件的中斷響應話題_續
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論