1. 通用定時器概述及性能
1.1 概述
在作者所使用的stm32芯片上,共有TIM1 1個高級定時器以及TIM2、TIM3、TIM4共3個通用定時器。其中各通用定時器均由一個通過可編程預(yù)分頻器驅(qū)動的16位自動裝載計(jì)數(shù)器構(gòu)成。適用于多種場合,包括測量輸入信號的脈沖長度(輸入采集)或者產(chǎn)生輸出波形(輸出比較和PWM)。使用定時器預(yù)分頻器和RCC時鐘控制器預(yù)分頻器,脈沖長度和波形周期可以在幾個微秒到幾個毫秒間調(diào)整。定時器是完全獨(dú)立的,而且沒有互相共享任何資源。它們可以一起同步操作。
1.2 性能
通用TIMx定時器特性包括:
16 位向上,向下,向上/向下自動裝載計(jì)數(shù)器
16 位可編程預(yù)分頻器,計(jì)數(shù)器時鐘頻率的分頻系數(shù)為1~65535 之間的任意數(shù)值
4個獨(dú)立通道:
─ 輸入捕獲
─ 輸出比較
─ PWM生成(邊緣或中間對齊模式)
─ 單脈沖模式輸出
使用外部信號控制定時器和定時器互連的同步電路
如下事件發(fā)生時產(chǎn)生中斷/DMA:
─ 更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā))
─ 觸發(fā)事件(計(jì)數(shù)器啟動,停止,初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù))
─ 輸入捕獲
─ 輸出比較
1.3 部分寄存器
由于通用定時器較為復(fù)雜,此處僅介紹如何利用TIM2進(jìn)行精確延時。下面介紹是TIM中與本篇內(nèi)容有關(guān)的寄存器。
1.3.1控制寄存器1(TIMx_CR1)
1.3.2 DMA/中斷使能寄存器(TIMx_DIER)
本篇中只關(guān)心其第6位及第0位
由于需要TIM在更新時產(chǎn)生中斷,因此這兩位都必須置1。
1.3.3 預(yù)分頻器(TIMx_PSC)
該分頻器對時鐘進(jìn)行分頻,并作為計(jì)數(shù)器時鐘。
時鐘來源有4種:
1)內(nèi)部時鐘(CK_INT)
2)外部時鐘模式1:外部輸入腳(TIx)
3)外部時鐘模式2:外部觸發(fā)輸入(ETR)
4)內(nèi)部觸發(fā)輸入(ITRx):使用A定時器作為B定時器的預(yù)分頻器(A為B提供時鐘)。
具體選擇可以通過TIMx_SMCR寄存器相關(guān)位來設(shè)置。
1.3.4 自動重裝載寄存器(TIMx_ARR)
1.3.5 狀態(tài)寄存器(TIMx_SR)
本篇中主要關(guān)心該寄存器第0位
當(dāng)產(chǎn)生溢出時,該標(biāo)記位被置1,執(zhí)行更新事件后由軟件清0。
其他眾多關(guān)于TIM寄存器可查閱《STM32F10x參考手冊》
1.4基本計(jì)數(shù)中斷過程
按照自己的理解,使能中斷及定時器后,根據(jù)時鐘來源以及預(yù)分頻器(TIMx_PSC)所設(shè)置的分頻數(shù)開始計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到自動重裝載寄存器(TIMx_ARR)中所存儲的值時,狀態(tài)寄存器(TIMx_SR)中對應(yīng)的標(biāo)志位(第0位)置1,通過軟件檢查該位則可以更新事件。
例如:系統(tǒng)中APB1(TIM2被掛在APB下)時鐘頻率為36MHz,設(shè)置TIMx_PSC分頻為36000,則作為定時器TIM2的時鐘頻率為36000000/36000=1000Hz,即1秒內(nèi)內(nèi)部開關(guān)計(jì)數(shù)1000次,每次1ms,設(shè)置TIMx_ARR重裝值為1000,則計(jì)數(shù)達(dá)1000次時,TIMx_SR中第0位標(biāo)志位被置1,此時為延遲1秒。
2 TIM固件庫函數(shù)
2.1 函數(shù)TIM_DeInit
例:重設(shè)TIM2
TIM_DeInit(TIM2);
2.2 函數(shù)TIM_TimeBaseInit
TIM_TimeBaseInitTypeDef structure
TIM_TimeBaseInitTypeDef定義于文件“stm32f10x_tim.h”:
typedef struct
{
u16 TIM_Period;
u16 TIM_Prescaler;
u8 TIM_ClockDivision;
u16 TIM_CounterMode;
} TIM_TimeBaseInitTypeDef;
TIM_Period
TIM_Period設(shè)置了在下一個更新事件裝入活動的自動重裝載寄存器周期的值。它的取值必須在0x0000和0xFFFF之間。
TIM_Prescaler
TIM_Prescaler設(shè)置了用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值。它的取值必須在0x0000和0xFFFF之間。
TIM_ClockDivision
TIM_ClockDivision設(shè)置了時鐘分割。該參數(shù)取值見下表。
TIM_CounterMode
TIM_CounterMode選擇了計(jì)數(shù)器模式。該參數(shù)取值見下表。
例:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = 0xF;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);
2.3 函數(shù)TIM_ClearFlag
TIM_FLAG值
例:
TIM_ClearFlag(TIM2,TIME_FLAG_Update);
2.4 函數(shù)TIM_ITConfig
TIM_IT值
例:
TIM_ITConfig(TIM2,TIME_FLAG_Update,ENABLE);
2.5 函數(shù)TIM_Cmd
例:
TIM_Cmd(TIM2,ENABLE);
3 例程程序
本例程主要使用TIM2進(jìn)行精準(zhǔn)延時并亮滅LED燈,其中NVIC部分暫做了解,后面再繼續(xù)深入。另外,需要注意3.0以后版本的固件庫相比2.0版有所更改,如刪除舊版NVIC部分函數(shù),或移動至misc.c文件中,通道名TIM2_IRQChannel更改為TIM2_IRQn等。完整構(gòu)架:
完整代碼:
#include "stm32f10x.h"
void delay1ms(u32 nTimer);
void GPIO_Configuration(void);
void TIM2_IRQHandler(void);
void Timer2_Configuration(void);
void NVIC_Configuration(void);
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能GPIOC時鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIM2時鐘
GPIO_Configuration();
NVIC_Configuration();//配置中斷
Timer2_Configuration();//配置定時器
while(1)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_6);
GPIO_SetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_8);
delay1ms(1000);
GPIO_ResetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_8);
GPIO_SetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_6);
delay1ms(1000);
GPIO_Write(GPIOC,0x0140);
delay1ms(2000);
GPIO_Write(GPIOC,0x0280);
delay1ms(2000);
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
void Timer2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_DeInit(TIM2);//使用缺省值初始化TIM外設(shè)寄存器
TIM_TimeBaseStructure.TIM_Period=1;//自動重裝載寄存器值為1
TIM_TimeBaseStructure.TIM_Prescaler=(36000-1);//時鐘預(yù)分頻數(shù)為36000
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//采樣分頻倍數(shù)1,未明該語句作用。
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//上升模式
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2,TIM_FLAG_Update);//清除更新標(biāo)志位
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//使能中斷
TIM_Cmd(TIM2,ENABLE);//使能TIM2定時器
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_SetPriorityGrouping(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //3.0版以后的函數(shù)庫將各通道TIM2_IRQChanel改名TIM2_IRQn
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);//NVIC_Init函數(shù)被包含在misc.c文件中。
}
volatile u32 gTimer;
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)//檢查溢出信號
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除溢出標(biāo)志
gTimer--;
}
}
void delay1ms(u32 nTimer)
{
gTimer=nTimer;
while(gTimer);
}
完成編譯并燒錄后,開發(fā)板上四個LED燈先相鄰兩兩亮滅,亮滅時間延遲1秒,然后交替兩兩亮滅,亮滅時間延遲2秒。
參考文獻(xiàn)
[1] Sharkdo.STM32用定時器精確延時的方法 [EB/OL].http://www.cnblogs.com/sharkdo/archive/2011/03/23/1993036.html,2011-03-23/2012-10-14
[2] Cdzlllfe.stm32 通用定時器精確延時程序[EB/OL].
http://blog.sina.com.cn/s/blog_88534dff01010t1a.html,2011-12-17/2012-10-14
[3]福州芯達(dá)工作室.《STM32入門系列教程——定時器與蜂鳴器》[EB/OL]. http://ishare.iask.sina.com.cn/f/10918196.html,2010-10-20/2012-10-14.
[4]正點(diǎn)電子.《Stm32不完全手冊》[EB/OL]. http://www.amobbs.com/forum.php?mod=viewthread&tid=4517523,2011-01-17/2012-10-15
[5]半壺水,《STM32 菜鳥學(xué)習(xí)手冊-羅嗦版》,http://wenku.baidu.com/view/fc7c7d20ccbff121dd3683da.html, 2012-08-19.
[6] ST.《如何從STM32F10xxx固件庫V2.0.3 升級為STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫V3.0.0》[EB/OL]. http://ishare.iask.sina.com.cn/f/18297257.html?from=like,2011-08-22/2012-09-09.
上一篇:stm8 tim4 測速顯示
下一篇:STM8s103F3p 16位定時器 STM2
推薦閱讀
史海拾趣
進(jìn)入21世紀(jì),隨著全球電子產(chǎn)業(yè)的快速發(fā)展,EVERLIGHT迎來了市場擴(kuò)張的機(jī)遇。公司不僅鞏固了在臺灣市場的領(lǐng)先地位,還積極開拓國際市場。通過與國際知名品牌的合作,EVERLIGHT的產(chǎn)品逐漸進(jìn)入全球市場,贏得了廣泛認(rèn)可。同時,公司還加強(qiáng)了對新興市場的開拓,如中國大陸、東南亞等地區(qū),為公司的持續(xù)發(fā)展注入了新的動力。
Entegris以其卓越的技術(shù)實(shí)力和廣泛的市場應(yīng)用,成為半導(dǎo)體、顯示器以及其他高科技行業(yè)不可或缺的合作伙伴。隨著全球高科技產(chǎn)業(yè)的快速發(fā)展,對微污染控制技術(shù)的需求不斷增長,Entegris的技術(shù)領(lǐng)先地位為其帶來了持續(xù)的競爭優(yōu)勢。
Connect-Tech Products Corp公司在追求經(jīng)濟(jì)效益的同時,也積極履行社會責(zé)任。公司注重環(huán)保和可持續(xù)發(fā)展,采用環(huán)保材料和節(jié)能技術(shù),減少生產(chǎn)過程中的環(huán)境污染。此外,公司還積極參與公益事業(yè),為社會做出貢獻(xiàn)。這些舉措不僅提升了公司的社會形象,也為其贏得了社會各界的廣泛贊譽(yù)和支持。
請注意,以上故事是基于電子行業(yè)和公司發(fā)展的一般模式虛構(gòu)的,并不代表Connect-Tech Products Corp公司的實(shí)際發(fā)展歷程。如需了解該公司的真實(shí)情況,建議查閱相關(guān)新聞報(bào)道、公司年報(bào)或行業(yè)分析報(bào)告等資料。
隨著國內(nèi)市場的不斷飽和,Connect-Tech Products Corp公司開始尋求海外市場的發(fā)展機(jī)會。公司通過參加國際電子展、建立海外銷售網(wǎng)絡(luò)等方式,積極開拓國際市場。同時,公司還與國際知名企業(yè)展開合作,共同研發(fā)新產(chǎn)品,進(jìn)一步提升了公司的技術(shù)水平和市場影響力。這些舉措不僅為公司帶來了更廣闊的市場空間,也為其未來的發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
面對數(shù)字化浪潮的沖擊,ECLIPTEK公司積極擁抱數(shù)字化轉(zhuǎn)型和智能制造。公司引入大數(shù)據(jù)、云計(jì)算和人工智能等先進(jìn)技術(shù),推動生產(chǎn)過程的智能化和自動化。通過數(shù)字化轉(zhuǎn)型和智能制造,ECLIPTEK不僅提高了生產(chǎn)效率和質(zhì)量,還降低了生產(chǎn)成本和能源消耗。這一轉(zhuǎn)型為公司未來的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
GreenTech還致力于綠色照明技術(shù)的研發(fā)和推廣。公司推出了一系列高效節(jié)能的LED照明產(chǎn)品,包括智能路燈、室內(nèi)照明系統(tǒng)等。這些產(chǎn)品不僅具有長壽命、低能耗等優(yōu)點(diǎn),還通過智能控制實(shí)現(xiàn)了按需照明,進(jìn)一步降低了能耗。GreenTech積極與各地政府和企業(yè)合作,推動綠色照明技術(shù)在城市照明、工業(yè)照明等領(lǐng)域的廣泛應(yīng)用,為節(jié)能減排和環(huán)境保護(hù)做出了積極貢獻(xiàn)。
以下是我收集和整理的一些有關(guān)msp430f449的資料。現(xiàn)在拿出來曬曬,讓更多的人能夠那道開源的資料!大家可以共同學(xué)習(xí),共同進(jìn)步! 本人有一個QQ群,叫:Robot DIY。群號:30240424。各位有興趣的,可以進(jìn)來。… 查看全部問答∨ |
|
如題: 點(diǎn)最小化發(fā)現(xiàn)沒響應(yīng) 我要在主窗口中執(zhí)行這一進(jìn)程,有時候需要讓它在后臺運(yùn)行,回到主窗口進(jìn)行其他操作 再次選擇執(zhí)行時又顯示該窗口 怎樣實(shí)現(xiàn)類似最小化的功能 … 查看全部問答∨ |
求助:Assertion Failed! File wincore.cpp,Line 2347 eVC4 WinCE 程序 環(huán)境 eVC4 錯誤:Assertion Failed! File wincore.cpp,Line wincore.cpp,Line 2347: 代碼 CWnd* CWnd::GetTopLevelParent() const { if (GetSafeHwnd() == NULL) // no Window attached &nb ...… 查看全部問答∨ |
今天在程序仿真的時候,突然產(chǎn)生一個問題,modelsim 突然出現(xiàn)了問題:工具欄上的所有出口都打不開,并彈出:Error:Invalid time value:{Error reading variable from kernel }! 請問大家這個問題怎么解決呢!謝謝… 查看全部問答∨ |
com16550驅(qū)動請教!!!!請做過此驅(qū)動的大哥幫忙!!!謝謝!!! 現(xiàn)在BSP中用的是在public下移植過來的com16550驅(qū)動,可是一直沒看懂是怎么用的外部中斷 看了網(wǎng)上 xunjingzhpu 的博客中: 3 需要增加串口芯片對應(yīng)的gpio口中斷,在中斷處理線程DWORD CPdd16550::ThreadRun()中記得重新使能中斷,在中斷觸發(fā)上如果 ...… 查看全部問答∨ |
求一 二進(jìn)制文件 轉(zhuǎn)換成 十六進(jìn)制文件 的工具 謝謝! 求一 二進(jìn)制文件 轉(zhuǎn)換成 十六進(jìn)制文件 的工具 謝謝! 給出下載地址 或者netsyt@sina.com… 查看全部問答∨ |
IME(輸入法編輯器)內(nèi)核,包括和用戶輸入的語言相關(guān)的內(nèi)容,比如輸入法、漢字庫等; IME界面窗口包括:狀態(tài)窗口、字母組合窗口、候選字列表窗口。 默認(rèn)情況下,系統(tǒng)創(chuàng)建缺省的IME界面窗口; 現(xiàn)在,我還使用IME(輸入法編輯器)內(nèi)核,但不用缺省 ...… 查看全部問答∨ |
IShellFolder指針指向派生類CDesktopFolder,為什么不是調(diào)用派生類的函數(shù) 安裝了WinCE 5.0 MessageBox沒執(zhí)行到,代碼見后面。 為什么pSHF->CreateViewObject沒有運(yùn)行CDesktopFolder::CreateViewObject? 怎樣才能讓他執(zhí)行CDesktopFolder::CreateViewObject? SHSTDAPI SHGetDesktopFolder(LPSHELLFOLDER *ppshf) { & ...… 查看全部問答∨ |
我現(xiàn)在接手的工作是要用C64x的DSP做一個H.264的解碼器,并且用ARM了作為輔助的驗(yàn)證 我的思路是這樣: 編碼端是在電腦上進(jìn)行的,通過H.264編碼編成一定格式的文件,然后把該文件輸送到DSP中解碼,解碼后的數(shù)據(jù)通過DSP的HPI接口傳輸給ARM,然后經(jīng)過 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- 英飛凌發(fā)布“在中國、為中國”本土化戰(zhàn)略 三十而勵啟新篇
- 智慧農(nóng)業(yè):英特爾處理器驅(qū)動更加可持續(xù)、高效的農(nóng)業(yè)發(fā)展
- 英偉達(dá)正在用“物理AI”,徹底顛覆自動駕駛、工業(yè)、機(jī)器人和智慧城市
- 臺積電-東京大學(xué)實(shí)驗(yàn)室啟用,雙方聯(lián)手推動半導(dǎo)體研究和教育
- ?意法半導(dǎo)體大巴窯工廠落地創(chuàng)新冷卻系統(tǒng),提升可持續(xù)發(fā)展能力
- Nordic Semiconductor聯(lián)同Omnispace和Gatehouse Satcom完成5G NB-IoT衛(wèi)星演示
- 英偉達(dá)開啟“攻城略地”模式,擬在歐洲建設(shè)20座AI工廠
- 臺積電:日本JASM第二晶圓廠預(yù)計(jì)今年下半年動工
- 工信部:支持車企“60天賬期”承諾,促進(jìn)產(chǎn)業(yè)健康發(fā)展
- 全球十大芯片代工廠最新排名!中芯國際沖擊世界第二
- 【投票瓜分2500元紅包】2022得捷電子創(chuàng)新設(shè)計(jì)大賽優(yōu)秀作品人氣獎由你來定!
- 積分芯幣兌換情人節(jié)專場
- DEYISUPPORT:【全新FAQ來襲】今夏且聽風(fēng)吟,你不能錯過的精華!
- 暢想十二月,設(shè)計(jì)我自己的EEWORLD!
- DEYISUPPORT TI 大咖級工程師在這里,等你來約!
- 提出你的電源問題&技術(shù)解答,提升自我電源知識,贏取好禮
- 看是德科技利用校準(zhǔn)降低儀器測量不確定度、提高測試精度 直播享好禮!
- 有獎直播:8月21上午10:00 泰克助您應(yīng)對現(xiàn)在及未來的測試挑戰(zhàn)!