文/田德永
嵌入式課程是高職院校物聯(lián)網(wǎng)、電子、通信等專業(yè)一門重要課程。STM32是高職院校中嵌入式課程中常采用的開發(fā)實驗芯片。在STM32教學(xué)中,STM32的定時器和PWM的實驗是很重要而又比較難于理解的知識點。STM32定時器功能豐富,但配置復(fù)雜,只有通過對實驗深入分析,才能幫助初學(xué)的高職院校學(xué)生更加易于理解和掌握STM32定時器產(chǎn)生PWM功能。
STM32定時器比較復(fù)雜,涉及到的配置很多,許多知識點學(xué)生難于掌握。對于高職院校學(xué)生,理解主要原理,掌握基本配置即可,面面俱到學(xué)生反而難于把握。
學(xué)生需要理解定時器是如何產(chǎn)生定時的。開始接觸定時器的高職院校學(xué)生,對定時的理解只是停留在宏觀層面上,他們可能知道秒表定時,鬧鐘定時等,而對電子元件的定時器定時功能,是比較模糊的。實際上,定時器本質(zhì)上是計數(shù)器,通過對脈沖的計數(shù),達到定時的功能,因為脈沖包含了時間信息。如圖1,假設(shè)一個脈沖是周期是1ms,那么如果計數(shù)了5次,那么就可以得到5ms的時間,即如果設(shè)置計數(shù)5次,就相當(dāng)可以定時5ms。因此,只要知道計數(shù)次數(shù)及所計脈沖的頻率或周期,就可以換算出定時時間。
STM32定時器資源比較豐富,有通用定時器、高級定時器、基本定時器等。盡管STM32定時器比較復(fù)雜,但只要抓住定時器計數(shù)次數(shù),以及計數(shù)的脈沖周期或頻率這兩條線索,就容易理解STM32定時器的定時原理。STM32可以選擇內(nèi)部系統(tǒng)時鐘信號(CK_INT)進行分頻后再進行脈沖計數(shù),即通過設(shè)置分頻系數(shù)TIMx_PSC進行分頻。定時器時鐘頻率用CK_CNT表示,則他們關(guān)系為:

若設(shè)定時器定時時間周期為T_t s,定時器的計數(shù)次數(shù)為T_count,則與分頻系數(shù)之間的關(guān)系可得:

由此可知,STM32定時器的定時周期由三個因素決定:系統(tǒng)時鐘信號周期、定時器分頻系數(shù)的值和定時器初始值即計數(shù)值。
PWM輸出的是高低電平的開關(guān)量。很多的控制技術(shù),就是采用PWM控制。PWM(Pulse Width Modulating)稱為脈沖寬度調(diào)制。是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),簡而言之,就是對脈沖的寬度進行控制。學(xué)生要理解PWM的占空比概念。占空比就是一個PWM周期內(nèi),高電平時長占周期的百分比。對脈寬控制,也就是對占空比的控制。學(xué)生也要知道PWM在STM32中是如何產(chǎn)生的。STM32產(chǎn)生的PWM是通過定時器產(chǎn)生,通過捕獲/比較輸出通道輸出。一般定時器有四個捕獲/比較輸出通道,因此,除了要對定時器進行配置外,還要配置通道,配置輸出的GPIO口。STM32有高級定時器和通用定時器進行產(chǎn)生PWM。輸出的占空比可由ST公司固件庫函數(shù)提供進行設(shè)置。
TIM_SetCompare3(TIM_TypeDef* TIMx,u16 Compare3)是ST公司的提供的固件函數(shù)之一,它的功能是設(shè)置 TIMx 捕獲比較寄存器值。定時器TIMx通過通道3與compare3值比較輸出PWM。定時器產(chǎn)生的PWM輸出如圖2所示,因此,控制compare3參數(shù)值就可控制脈沖寬度,控制占空比。學(xué)生需充分理解參數(shù)字的含義。定時器計數(shù)值N決定了PWM輸出周期,compare3決定了PWM的占空比。

圖1:定時器原理示意圖

圖2:定時器輸出PWM原理示意圖

圖3:模擬電路控制LED燈實驗電路

圖4:PWM輸出控制LED實驗電路原理圖
為了更好地讓學(xué)生理解PWM原理及其控制效果,設(shè)計PWM控制LED發(fā)光現(xiàn)象實驗,使用外圍硬件電路比較少,易于實現(xiàn)。可以使用LED亮度控制及呼吸燈實驗項目,主要是讓學(xué)生能理解PWM的作用。
為了和PWM控制LED燈效果作比較,搭建如圖3的模擬電路。電源兩端直接用滑動變阻器Rp串接LED燈,當(dāng)調(diào)節(jié)滑動變阻器Rp時,隨著流過LED電流變化會明顯的變亮或變暗,這在很多模擬電路中調(diào)節(jié)常用的方式。很明顯,這是模擬電路控制的方式。
我們把圖3電路換成圖4電路,LED燈不變。前面說過,PWM輸出是周期性的高低電平開關(guān)量,對于這點,學(xué)生是易于理解的。
在配置定時器時,我們可以先讓讓其頻率足夠小,周期足夠大,占空比為50%,當(dāng)接上LED燈時,會發(fā)現(xiàn),燈在不停的閃爍,這驗證了PWM是開關(guān)量,輸出是高低電平開關(guān)量。
當(dāng)設(shè)置定時器周期足夠小時,占空比不變,會發(fā)現(xiàn)LED亮度達到最亮?xí)r的一半不再閃爍的現(xiàn)象,和圖3的電路效果一樣。這是因為人的眼睛對圖像(光線)的視覺暫留的特點,也稱為人眼的余輝效應(yīng),才有如此效果。要讓學(xué)生明白的是,圖3是模擬電路控制,而圖4是PWM是數(shù)字控制,對比可見,PWM能控制模擬電路,達到一樣效果。
在定時器輸出PWM頻率不變情況下,讓程序更改PWM占空比,即修改比較輸出函數(shù)TIM_SetCompare3第二個參數(shù),用示波器觀察,會發(fā)現(xiàn)波形高電平在周期內(nèi)不斷擴展和收縮,反應(yīng)到LED燈上可得到呼吸燈的效果。這正反應(yīng)數(shù)字信號便于控制,很好的把數(shù)字信號控制轉(zhuǎn)換為模擬控制信號的PWM例子。
PWM輸出從處理器到被控制裝置信號都是數(shù)字形式,是實現(xiàn)D/A轉(zhuǎn)換和精確脈沖序列輸出的有效手段,PWM在各個控制領(lǐng)域都得到廣泛應(yīng)用。在采用STM32芯片的嵌入式課程中,在進行定時器PWM教學(xué)時,要逐步引導(dǎo)學(xué)生領(lǐng)會PWM產(chǎn)生的原理和控制作用。可以采用多個實驗項目對比,幫助學(xué)生對PWM開關(guān)量控制模擬系統(tǒng)而不需數(shù)模轉(zhuǎn)換的理解,提高高職院校學(xué)生嵌入式技術(shù)開發(fā)和應(yīng)用能力。