AT32定時器概述
? 定時器種類有基本定時器、通用定時器、高級控制定時器,以AT32F435xx舉例,下表為各種類型定時器的功能總表。本文主要就定時器溢出中斷進行基礎講解和案列解析。
表1. 各定時器功能總表
例 定時器溢出中斷
功能簡介
定時器溢出中斷是定時器最基礎功能,進入中斷的時間周期可由相關寄存器配置。
定時器計數器值TMRx_CVAL
定時器預分頻寄存器TMRx_DIV
定時器周期寄存器(TMRx_PR)
定時器中斷頻率計算公式如下
?
其中,TMRxCLK雖然來源于APB1/2時鐘,但下圖時鐘架構可以看出,檔APB1/2 Divider存在非1除頻時,TMRxCLK會有x2。例如AHB=240 MHz,APB1/2=120MHz,TMRxCLK的實際頻率為240 MHz.以向上計數模式舉例,TMREN bit使能后,TMRx_CVAL會開始進行累加1,直到其值等于TMRx_PR后,OVFIF位會置起并且定時器會觸發溢出中斷事件,(若溢出中斷有開啟,則會產生溢出中斷),同時TMRx_CVAL會再次從0開始計數,周而復始。
圖1. 定時器時鐘源架構
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mr imer_base ?
軟件設計
? 1) 配置流程
編寫定時器溢出中斷函數的應用程序
開啟定時器外設時鐘
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置定時器為向上計數方向
開啟定時器溢出中斷
開啟NVIC溢出中斷
開啟定時器計數
2) 代碼介紹
main函數代碼描述
TMR1_OVF_TMR10_IRQHandler中斷函數代碼描述
實驗效果
LED3每1秒翻轉一次。
例 PWM輸出
功能簡介
? 定時器的輸出部分由比較器和輸出控制構成,用于編程輸出信號的周期、占空比、極性。高級定時器的輸出部分在不同通道上有所不同。
高級定時器在通道1到通道3上擁有互補輸出,且配備死區調節;通道1到通道4擁有剎車控制。通用定時器的輸出部分沒有上述功能,只配備了4個通道輸出。基本定時器、通用定時器和高級定時器的具體功能差異可查看RM的TMR章節。
如下圖為高級定時器通道1到3輸出部分原理圖:
圖2.?高級定時器通道1到3輸出部分原理圖
圖3. 高級定時器通道4輸出部分原理圖
PWM輸出是定時器最常用的輸出模式,分為PWM模式A和PWM模式B。其差異在于:
PWM模式A: -OWCDIR=0,若TMRx_C1DT>TMRx_CVAL時設置C1ORAW為高,否則為低; -OWCDIR=1,若TMRx_C1DTTMRx_CVAL時設置C1ORAW為低,否則為高; -OWCDIR=1,若TMRx_C1DT時設置c1oraw為高,否則為低。>時設置c1oraw為低,否則為高。>
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mr7_pwm_output ?
軟件設計
? 1) 配置流程
開啟定時器外設時鐘
配置輸出管腳
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置定時器為向上計數方向
配置定時器輸出通道為PWM模式B
開啟定時器計數
2) 代碼介紹
main函數代碼描述
? ?
實驗效果
通過邏輯分析儀或者示波器可將波形打出來。
如下圖:
圖4. 7路PWM輸出
?
圖中通道1到4輸出頻率相同但占空比不同的波形,互補通道通過輸出極性的調節與其對應的通道輸出相同的波形。 ?
例 PWM輸入捕獲
功能簡介
? 定時器的輸入部分由專門的捕獲電路實現,可用于對輸入信號的濾波、選擇、分頻和輸入捕獲功能;通過對捕獲值的計算,可得到輸入波形的頻率和占空比。
如下圖為輸入部分原理圖:
圖5. 定時器輸入部分原理圖
輸入模式下,當選中的觸發信號被檢測到時,通道寄存器(TMRx_CxDT)會記錄當前計數器計數值,并將捕獲比較中斷標志位(CxIF)置1,若已使能通道中斷(CxIEN)、通道DMA請求(CxDEN)則產生相應的中斷和DMA請求。若在CxIF已置1后檢測到選中的觸發信號,則將CxOF位置1。
另外,還提供了更加高效的PWM波輸入捕獲功能,可以更方便的計算出輸入波形的頻率和占空比。此模式的通過內部兩個CxDT寄存器實現,輸入波形通過定時器的通道1或者通道2輸入即可。
圖6. 定時器捕獲PWM波原理圖
將定時器配置成PWM輸入模式后,可通過C1DT和C2DT的值計算出對應PWM波形的頻率和占空比:
頻率=TMR_CLK/C1DT 占空比=C2DT/C1DT ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mrpwm_input ?
軟件設計
? 1) 配置流程
開啟定時器外設時鐘
配置輸入管腳
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置定時器為向上計數方向
配置定時器的PWM輸入模式
開啟定時器計數
2) 代碼介紹
main函數代碼描述
中斷函數代碼描述
? ?
實驗效果
從PA7灌入PWM波形;
將串口1連接到上位機,然后通過上位機串口工具即可看到打印信息。
例 輸入捕獲
功能簡介
通過對外部信號的上升沿或者下降沿進行捕獲可以實現對外部信號輸入捕獲并計算頻率的功能。本例程實現了對外部信號進行捕獲并通過串口打印出頻率。
資源準備
? ? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mrinput_capture ?
軟件設計
? 1) 配置流程
開啟定時器外設時鐘
配置輸入管腳
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置定時器為向上計數方向
配置定時器的輸入捕獲功能
開啟定時器計數
2) 代碼介紹
main函數代碼描述
中斷函數代碼描述
實驗效果
從PA7灌入PWM波形;
將串口1連接到上位機,然后通過上位機串口工具即可看到打印信息。
例 DMA傳輸
功能簡介
? 定時器擁有強大的DMA傳輸能力,基本每個定時器都支持DMA請求的產生。這使得應用更加靈活。
本實驗將src_buffer[0]、src_buffer[1]和src_buffer[2]數據通過DMA傳輸到TMR的TMRx_C3DT寄存器。實現了每個周期占空比都發生改變,且占空比在src_buffer[0]、src_buffer[1]和src_buffer[2]的值之間進行有序的切換。
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mrdma ?
軟件設計
? 1) 配置流程
開啟定時器外設時鐘
配置輸入管腳
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置定時器為向上計數方向
配置DMA通道
配置定時器的溢出事件產生DMA請求
開啟定時器計數
2) 代碼介紹
main函數代碼描述
? ?
實驗效果
? 從PA10、PB15輸出PWM波形; ?
例 burst傳輸
功能簡介
? 高級定時器和通用定時器除了支持常規的DMA傳輸功能,還額外支持DMA burst傳輸功能。在配置為burst傳輸后,當TMR產生一個DMA請求可連續傳輸以TMR地址為起始地址的多筆數據;傳輸數據的起始地址和數據量可通過軟件配置。
如何配置burst傳輸:
1. 配置TMRx_DMACTRL寄存器,此寄存器的bit0到bit4為DMA傳輸地址偏移,此值決定了DMA傳輸的起始地址;bit8到bit12為DMA傳輸長度配置,此值決定了DMA傳輸的數據筆數。 2. 配置DMA通道,此配置流程與常規DMA通道配置相同;需要注意的是DMA通道的源與目標地址寄存器中的一個必須為TMRx_DMADT寄存器地址;具體是源還是目標就由數據傳輸的方向決定。
本實驗將src_buffer[0]和src_buffer[2]數據通過burst傳輸到TMR的TMRx_PR和TMRx_C1DT寄存器。
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mrdma_burst ?
軟件設計
? 1) 配置流程
開啟定時器外設時鐘
配置輸入管腳
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置定時器為向上計數方向
配置DMA通道和定時器的burst功能
配置DMAMUX
開啟定時器計數
2) 代碼介紹
main函數代碼描述
? ?
實驗效果
從PA8輸出PWM波形;
例 單脈沖輸出
功能簡介
? 單脈沖輸出模式是PWM模式的特例,將OCMEN位置1可開啟單周期模式,此模式下,僅在當前計數周期中進行比較匹配,完成當前計數后,TMREN位清0,因此僅輸出一個脈沖。當配置為向上計數模式時,需要嚴格配置CVALCxDT。≤pr;向下計數時,需嚴格配置cval>
當TMR受到外部觸發或者軟件使能CNT時,TMR開始計數并在此次overflow事件時停止計數。此過程中輸出也會根據配置產生波形。
單脈沖輸出原理如下圖:
圖7. 單脈沖輸出原理圖
圖中當受到外部觸發后,TMR開始計數,當CVAL等于CxDT時,改變輸出狀態,當CVAL溢出時,輸出狀態再次改變從而達到輸出一個單脈沖的目的。
本實驗將TMR4配置為單脈沖模式。TMR4的通道1配置為輸入并充當觸發輸入的源頭,通道2配置為輸出模式,充當單脈沖輸出的端口。
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mrone_cycle ?
軟件設計
? 1) 配置流程
開啟定時器外設時鐘
配置輸入、輸出管腳
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置定時器為向上計數方向
配置定時器為單脈沖模式
配置通道2為輸出口,并作為TMR觸發的觸發源
2) 代碼介紹
main函數代碼描述
? ?
實驗效果
PB7輸入管腳,外部給上升沿觸發即可;
PB6為輸出管腳,輸出單脈沖波形。
使用邏輯分析儀打出波形如下:
圖8. 單脈沖輸出結果
? ?
例 32位定時器
功能簡介
? 部分定時器可支持擴展為32位定時器(具體請查看RM)。擴展后,不單CVAL寄存器為32位,DIV和CxDT都會自動擴展為32位。
使能32位定時器只需要設置TMRx_CTRL1寄存器的bit10為1即可。
本實驗將TMR2配置為32位定時器模式,然后配置為PWM輸出模式使其輸出PWM波形。
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mr mr2_32bit ?
軟件設計
? 1) 配置流程
開啟定時器外設時鐘
配置輸入、輸出管腳
使能32位模式
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置通道輸出PWM波形
2) 代碼介紹
main函數代碼描述
? ?
實驗效果
PA0/1/2/3輸出波形;
圖9. 32位定時器輸出結果
例 定時器同步
功能簡介
? 主次定時器之間可由內部連接信號進行同步。主定時器可由PTOS[2:0]位選擇主定時器輸出,即同步信息;次定時器由SMSEL[2:0]位選擇從模式,即次定時器的工作模式。 定時器從模式有以下幾種:
復位模式:
此模式下,當次定時器收到一個同步信號后,次定時器復位計數器和預分頻器,定時器的 CVAL寄存器變為0重新開始計數。若OVFS位為0,將產生一個溢出事件。
圖10. 復位模式圖
掛起模式:
掛起模式下,計數的計數和剎車受選中觸發輸入信號控制,當觸發輸入為高電平時計數器開始計數;當為低電平時,計數器暫停計數。
圖11. 掛起模式圖
觸發模式:
觸發模式下,次定時器當受到外部觸發信號后,自動啟動定時器,即硬件置TMR_EN為1。所以在觸發模式下,初始化定時器后軟件不需要使能定時器。
圖12. 掛起模式圖
?
本例程實現了TMR2同步TMR3和TMR4。主定時器TMR2選擇溢出事件作為同步信號輸出,次定時器TMR3和TMR4選擇掛起模式作為從模式。 ?
資源準備
? 1) 硬件環境 對應產品型號的AT-START BOARD 2) 軟件環境 projectat_start_xxxexamples mrparallel_synchro ? ?
軟件設計
? 1) 配置流程
定時器外設時鐘
配置輸入、輸出管腳
配置定時器TMRx_DIV寄存器和TMRx_PR寄存器
配置主模式和從模式
配置PWM輸出模式
使能定時器
2) 代碼介紹
main函數代碼描述
? ?
實驗效果
通過PA6/PA0/PB6輸出波形,可使用邏輯分析儀抓取波形查看。
? ? ? 審核編輯:湯梓紅
評論
查看更多