引言
華芯微特公司SWM系列單片機(jī)提供的TIMER個(gè)數(shù)和功能有些微差別,為了讓您更加簡(jiǎn)單的使用這一功能,下面小編將以SWM190為例,給大家展示如何使用SWM系列產(chǎn)品的TIMER功能。
TIMER精準(zhǔn)延時(shí)
一、TIMER簡(jiǎn)介
TIMER是一種定時(shí)器工具,用來(lái)在一個(gè)后臺(tái)線程計(jì)劃執(zhí)行指定任務(wù)。它可以計(jì)劃執(zhí)行一個(gè)任務(wù)一次或反復(fù)多次。
華芯微特公司SWM系列單片機(jī)提供的TIMER個(gè)數(shù)和功能有些微差別,為了讓您更加簡(jiǎn)單的使用這一功能,下面小編將以SWM190為例,給大家展示如何使用SWM系列產(chǎn)品的TIMER功能。
SWM190系列有4路32位加強(qiáng)定時(shí)器,4路24位基礎(chǔ)定時(shí)器。加強(qiáng)型定時(shí)器支持支持定時(shí)器、計(jì)數(shù)器、捕獲、脈沖發(fā)送、HALL功能及ADC觸發(fā)功能等功能。基礎(chǔ)定時(shí)器具備定時(shí)器功能,并具備一個(gè)8位分頻器,每個(gè)定時(shí)器具備獨(dú)立中斷源。
二、TIMER定時(shí)器之精準(zhǔn)延時(shí)功能
我們今天詳細(xì)講解一下TIMER的定時(shí)器功能。
定時(shí)器功能使用片內(nèi)時(shí)鐘作為計(jì)數(shù)基準(zhǔn),以SWM190加強(qiáng)型定時(shí)器為例,有4個(gè)32 bit向下計(jì)數(shù)的TIMER,脈沖每一次下降沿,計(jì)數(shù)寄存器數(shù)值將減1。
每一個(gè)TIMER都可以配置定時(shí)器溢出中斷。使能溢出中斷,定時(shí)器溢出會(huì)觸發(fā)中斷操作,達(dá)到精準(zhǔn)定時(shí)功能。
三、SWM190 TIMER延時(shí)功能配置庫(kù)函數(shù)
下面我們以最簡(jiǎn)單的定時(shí)器為例,使用加強(qiáng)型定時(shí)器和基礎(chǔ)定時(shí)器,用定時(shí)器的方法實(shí)現(xiàn)1S的精準(zhǔn)延時(shí)。在此例程中,我們將A4設(shè)為每2秒翻轉(zhuǎn)一次IO,A5設(shè)為每0.5秒翻轉(zhuǎn)一次IO,通過(guò)翻轉(zhuǎn)LED的狀態(tài)來(lái)觀察現(xiàn)象。
我們之前有講到GPIO的配置方法,在這里就不在做贅述,將LED輸出引腳通過(guò)GPIO_Init設(shè)置為輸出,與外部LED引腳相連。
在SWM190固件庫(kù)中對(duì)TIMER的配置進(jìn)行了說(shuō)明,下面將根據(jù)庫(kù)函數(shù)對(duì)SWM190的TIMER配置,首先來(lái)看一下TIMR_Init函數(shù)的原型void TIMR_Init(TIMR_TypeDef * TIMRx, uint32_t mode, uint32_t prediv, uint32_t period, uint32_t int_en)。這個(gè)函數(shù)的實(shí)現(xiàn)是在SWM190_timr.c文件中,若要使用該函數(shù)在相應(yīng)的應(yīng)用程序的前面包含SWM190_ timr.h頭文件。
函數(shù)的第一個(gè)參數(shù)為T(mén)IMR_TypeDe,它是一個(gè)結(jié)構(gòu)體類型,該類型在SWM190.h中被定義。具體參數(shù)為指定TIMER模塊,有效值包括TIMR0,TIMR1,TIMR2,TIMR3,BTIMR0,BTIMR1,BTIMR2,BTIMR3;
第二個(gè)參數(shù)為uint32_t mode,為T(mén)IMER模式配置,有效值包括TIMR_MODE_TIMER(定時(shí)器)、TIMR_MODE_COUNTER(計(jì)數(shù)器上升沿)、TIMR_MODE_OC(輸出比較)、TIMR_MODE_IC(輸入捕獲);其中基礎(chǔ)定時(shí)器只支持TIMR_MODE_TIMER(定時(shí)器);
第三個(gè)參數(shù)為uint32_t prediv,為T(mén)IMER分頻配置,其中加強(qiáng)型定時(shí)器無(wú)分頻只能為1;基本定時(shí)器可取值1-256;
第四個(gè)參數(shù)為uint32_t period,為計(jì)數(shù)周期,其中加強(qiáng)型定時(shí)器為32bit,基礎(chǔ)定時(shí)器為24bit。
第五個(gè)參數(shù)為uint32_t int_en,為中斷使能。
我們加強(qiáng)型定時(shí)器實(shí)現(xiàn)0.1S觸發(fā)一次,2S實(shí)現(xiàn)LED燈的翻轉(zhuǎn);基礎(chǔ)定時(shí)器實(shí)現(xiàn)0.5S實(shí)現(xiàn)LED燈的翻轉(zhuǎn)。
具體配置函數(shù)如下圖所示:
接下來(lái)我們看下中斷服務(wù)子函數(shù),在加強(qiáng)型定時(shí)器的中斷服務(wù)函數(shù)中,實(shí)現(xiàn)每0.1S進(jìn)一次中斷。定義一個(gè)全局變量TimerNum,每當(dāng)進(jìn)一次中斷的時(shí)候,讓TimerNum來(lái)記錄進(jìn)入中斷的次數(shù)。我們實(shí)現(xiàn)2S的定時(shí),我們只需要判斷TimerNum是否等于20,然后把TimerNum清0,執(zhí)行對(duì)應(yīng)的操作并重新計(jì)數(shù),以此循環(huán)往復(fù)。
在基礎(chǔ)定時(shí)器的中斷服務(wù)函數(shù)中,實(shí)現(xiàn)每0.5S進(jìn)行LED燈的一次翻轉(zhuǎn)。
四、實(shí)驗(yàn)現(xiàn)象
下載好程序后,LED實(shí)現(xiàn)分別2S翻轉(zhuǎn)一次和0.5s翻轉(zhuǎn)一次。
責(zé)任編輯:lq6
-
定時(shí)器
+關(guān)注
關(guān)注
23文章
3241瀏覽量
114514 -
Timer
+關(guān)注
關(guān)注
1文章
63瀏覽量
12776
原文標(biāo)題:華芯微特|MCU之TIMER精準(zhǔn)延時(shí)
文章出處:【微信號(hào):gh_ed4f95bde4df,微信公眾號(hào):華芯微特32位MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論