很多應用場合需要檢測系統時鐘是否在正常范圍內,以保證MCU能正常工作,CLASS B功能安全實現系統時鐘自檢的方法是采用兩個獨立時鐘源交叉檢查來進行測量,可使其中一個作為定時器的時鐘源,另一個作為定時器的輸入。SPIN0280含有微控制器時鐘輸出(MCO)功能,允許時鐘輸出到外部 MCO 引腳上,可以很便捷的輸出HSI內部時鐘信號到引腳上,配置外部時鐘HSE為MCU的系統時鐘,使用Timer3對引腳上的HSI信號進行捕獲,以實現內部HSI和外部HSE交叉檢測的功能。
微控制器時鐘輸出(MCO)
微控制器時鐘輸出(MCO)允許時鐘輸出到外部 MCO引腳上。相應 GPIO端口的配置寄存器必須被配置為復用輸出功能。可以選擇以下五個時鐘信號中的一個作為 MCO輸出時鐘:
MCO 與時鐘源對應關系
微控制器時鐘輸出(MCO)配置為在PA8引腳上輸出,此時PA8引腳需配置為AF0復用模式。
TIM3 通用定時器
由一個16位可實時編程預分頻器和一個16位計數方向可調的自動裝載計數器組成,可以為用戶提供便捷的計數定時功能,計數器時鐘由預分頻器分頻得到。
TIM3具有多種用途:輸入功能(測量輸入信號的脈沖寬度、頻率,PWM輸入等),輸出功能(PWM輸出、單脈沖模式輸出等)。
本次主要使用TIM3的輸入捕獲功能,輸入捕獲部分包括數字濾波器、多路復用、預分頻器等,結構如下:
輸入捕獲模式下,當檢測到信號ICx上的有效邊沿后,計數器的當前值被鎖存到對應的影子寄存器上,再復制到對應的捕獲比較寄存器中。當開啟了中斷或DMA使能,發生捕獲事件時,將產生相應的中斷或DMA請求。發生捕獲事件時,會將狀態寄存器(TIM3_SR)中的捕獲標志位 CCxIF 置 1,通過配置 CCxIF=0或讀取TIM3_CCRx中的數據,清除CCxIF標志位。當CCxIF未被清零時,發生輸入捕獲事件,重復捕獲標志位CCxOF將會被置1,通過配置CCxOF=0,可以清除CCxOF標志位。
SPIN0280的通用定時器TIM3有4路輸入捕獲通道,本文采用TIM3_CH2對HSI進行捕獲。
SPIN0280 Timer3捕獲內部HSI時鐘具體步驟
1.使用外部HSE時鐘(8M)并倍頻到96M作為系統時鐘
2.TIM3_CH2的引腳配置,配置為PA7的AF1復用功能
3. TIM3掛載在APB1上,使能TIM3時鐘
4.配置TIM3,計數器清空,由低向高計數,上升沿觸發,時鐘不分頻
5. 配置MCO輸出在PA8引腳上,配置PA8為AF0復用功能,HSI信號128分頻輸出
6. 開啟TIM3的時鐘中斷,并配置NVIC和編寫中斷函數
7. 開啟Timer3外設
示例代碼如下:
示例輸出結果:
與實際硬件測試的結果相符。
審核編輯:劉清
-
微控制器
+關注
關注
48文章
7487瀏覽量
151042 -
寄存器
+關注
關注
31文章
5317瀏覽量
120001 -
數字濾波器
+關注
關注
4文章
268瀏覽量
46984 -
定時器
+關注
關注
23文章
3237瀏覽量
114464 -
預分頻器
+關注
關注
0文章
18瀏覽量
8116
原文標題:靈動微課堂 (第270講)|CLASS B內部時鐘檢測在MM32SPIN0280上的實現
文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論