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