1 前言????
前幾期內(nèi)容中我們都采用了STM32的定時(shí)器功能,而再早之前也有一期定時(shí)器的理論介紹。因此本期我們介紹基于CubeMX的STM32定時(shí)器的使用。
2 CubeMX????
在CubeMX中配置定時(shí)器首先要關(guān)注的是功能配置。Slave Mode使定時(shí)器(定時(shí)器通道)可以依賴另一個(gè)外部信號(hào)作為觸發(fā)源,而不是獨(dú)立運(yùn)行。(不做過多介紹)。
Clock Source也就是時(shí)鐘源,它決定了定時(shí)器計(jì)數(shù)時(shí)鐘,我們通常會(huì)使用Internal Clock也就是內(nèi)部時(shí)鐘源。
從時(shí)鐘樹中我們可以看到,定時(shí)器的時(shí)鐘由APB2TimerClocks提供,該時(shí)鐘源來自HCLK主時(shí)鐘僅分頻獲得。在正常情況下和HCLK保持一致。
Channel用于配置通道特殊功能大體有四類:
輸入捕獲,輸出比較模式,PWM模式以及強(qiáng)制輸出模式。每一個(gè)Channel都是對(duì)應(yīng)著具體引腳的。
例如PA1對(duì)應(yīng)著TIM2的Channel2以及TIM5的Channel2,當(dāng)我們配置TIM2的Channel2為PWM輸出時(shí),實(shí)際代表著PA1輸出PWM。
當(dāng)我們的Clock Source選擇好之后(通常選擇內(nèi)部時(shí)鐘)接著就是進(jìn)入?yún)?shù)配置。
首當(dāng)其沖的分頻系數(shù):Prescaler。這個(gè)參數(shù)字面理解就是決定對(duì)定時(shí)器時(shí)鐘分頻。計(jì)數(shù)頻率計(jì)算公式為:TimerClock/(Prescaler+1)。
例如當(dāng)我的TimerClock設(shè)置為170MHZ時(shí),PRC設(shè)置為170-1,這樣子根據(jù)公式可以得到計(jì)數(shù)頻率為1MHZ即每秒鐘計(jì)數(shù)值加1M次(1us加一次)。
其次是計(jì)數(shù)器周期:Counter Period。這個(gè)參數(shù)決定著定時(shí)器單次周期的計(jì)數(shù)最大值,當(dāng)計(jì)數(shù)超出這個(gè)值會(huì)出現(xiàn)“溢出”。溢出則可以發(fā)生中斷,觸發(fā)中斷回調(diào)函數(shù)等等~
因此定時(shí)器的一個(gè)周期可以計(jì)算為:
TimerClock/(Prescaler+1)/(Counter Period)。假設(shè)我們的分頻系數(shù)設(shè)置為170-1,主頻為170MHZ,計(jì)數(shù)器周期設(shè)置為1000。這樣子定時(shí)器的每次溢出時(shí)間就是1ms,就可以實(shí)現(xiàn)1ms定時(shí)的功能了。
Trigger Output觸發(fā)輸出也是定時(shí)器非常關(guān)鍵的一個(gè)功能。它用于輸出外部觸發(fā)信號(hào),用來同步其他外部設(shè)備或觸發(fā)其他定時(shí)器。例如我們的DMA什么時(shí)候搬運(yùn)數(shù)據(jù),觸發(fā)源可以來自定時(shí)器的這部分,這樣子我們就可以實(shí)現(xiàn)定時(shí)搬運(yùn)數(shù)據(jù),實(shí)現(xiàn)定采樣率的ADC采集,或者定周期的DAC輸出。
最后別忘記了開啟定時(shí)器中斷,沒有這些中斷,就無法調(diào)用定時(shí)器中斷回調(diào)函數(shù)。
3 PWM模式????
我們可以看到,定時(shí)器總共有四種模式,其實(shí)總結(jié)就是四種輸出模式。
PWM Genneration No Output顧名思義就是開啟PWM但是不具體輸出,沒有輸出波形,但是內(nèi)部保留PWM的功能,它主要是作為一些內(nèi)部用于其他外設(shè)的觸發(fā)信號(hào)功能,這里不做過多介紹。
PWM Genneration CH1即正常的PWM輸出,由具體某個(gè)引腳輸出PWM波形。
CH1N的N應(yīng)該是反向通道的意思,它會(huì)輸出和CH1極性相反的波形。需要注意的是,前面我們說過某個(gè)Channel通道都對(duì)應(yīng)著具體的引腳,實(shí)際上CH1和CH1N是兩個(gè)不同的引腳。
當(dāng)我們開啟PWM Generation CH1 CH1N的時(shí)候,就會(huì)同時(shí)開啟這兩個(gè)通道,它們會(huì)輸出一對(duì)相反的波形,這個(gè)特性常常被應(yīng)用于全橋驅(qū)動(dòng)上。
防止某對(duì)MOS管被同時(shí)導(dǎo)通,用這種方式可以在防止同時(shí)輸出高電平或者低電平。
當(dāng)我們開啟PWM模式后,需要了解的最重要的參數(shù)就是Pulse(脈沖),這個(gè)值決定著PWM的占空比通常我會(huì)叫做比較值(CCR)。在PWMmode1情況下假如我們的定時(shí)器周期值設(shè)置為1000。當(dāng)計(jì)數(shù)值(CNT)小于CCR時(shí),會(huì)根據(jù)CH Polarity(如果是High)就會(huì)輸出高電平。當(dāng)CNT>CCR時(shí)就會(huì)輸出低電平。到達(dá)1000時(shí)就會(huì)重新計(jì)數(shù),這樣子就完成了一個(gè)周期PWM波的輸出。
所以會(huì)把CCR認(rèn)為是一個(gè)比較值,而不是所謂的占空比,它的值決定了占空比,但是卻不是占空比本身。占空比的計(jì)算:CCR/Counter Period(ARR+1)。(依據(jù)設(shè)置模式改變)。
4 下期介紹????
篇幅過長(zhǎng),下期我們?cè)俳又榻B定時(shí)器剩下的兩種功能。