stm32f1系列,有基本定時(shí)器、通用定時(shí)器、高級(jí)定時(shí)器三類TIM定時(shí)器。其中,TIM6/7是本文要講的基本定時(shí)器。
基本定時(shí)器TIM6/7是16位的只能向上計(jì)數(shù)的定時(shí)器,只能用于定時(shí)。而通用定時(shí)器和高級(jí)定時(shí)器有更多的功能,如還可以進(jìn)行輸出比較、輸入捕捉等功能,相關(guān)的介紹會(huì)寫在后面的文章,這里只講基本定時(shí)器。
先看看基本定時(shí)器的框圖,如圖24-1。
圖24-1
時(shí)鐘源
我們查閱參考手冊RCC章節(jié)的時(shí)鐘樹可以知道,RCC的定時(shí)器時(shí)鐘TIMxCLK,即內(nèi)部時(shí)鐘CK_INT是由APB1預(yù)分頻器分頻后提供。如圖24-2所示,如果APB1預(yù)分頻系數(shù)為1,,則頻率不變,否則頻率為2倍。即此時(shí)用于分頻的APB1的預(yù)分頻系數(shù)為2,所以TIMxCLK = 36 * 2 = 72MHz。
圖24-2
計(jì)數(shù)器時(shí)鐘
如圖24-1的框圖,計(jì)數(shù)器時(shí)鐘由內(nèi)部時(shí)鐘CK_INT提供,經(jīng)過PSC預(yù)分頻器后得到CK_CNT。PSC是一個(gè)16位的預(yù)分頻器,可以對定時(shí)器時(shí)鐘TIMxCLK進(jìn)行1~65536之間的任何一個(gè)數(shù)進(jìn)行分頻。分頻后的CK_CNT值的計(jì)算在參考手冊TIMx_PSC寄存器描述里有提到,如圖24-3。
圖24-3
即CK_CNT = CK_PSC/(PSC[15:0]+1)。
計(jì)數(shù)器
計(jì)數(shù)器CNT是一個(gè)16位的計(jì)數(shù)器,只能往上計(jì)數(shù),最大計(jì)數(shù)值為65535。
自動(dòng)重裝載寄存器TIMx_ARR
TIMx_ARR寄存器里存著最大的計(jì)數(shù)值,當(dāng)計(jì)數(shù)到該值時(shí),會(huì)產(chǎn)生中斷。當(dāng)然了你得使能了中斷才可以。
定時(shí)時(shí)間計(jì)算
計(jì)一個(gè)數(shù)的時(shí)間是1/CK_CNT,產(chǎn)生一次中斷的時(shí)間為(ARR+1)/CK_CNT。如果在中斷服務(wù)程序里設(shè)置一個(gè)變量time用于記錄中斷次數(shù),則定時(shí)時(shí)間為:(ARR+1)/CK_CNT*time。
TIM_TimeBaseInitTypeDef
如圖24-4為基本定時(shí)器TIM_TimeBaseInitTypeDef結(jié)構(gòu)體定義。
圖24-4
TIM_Prescaler:指定定時(shí)器預(yù)分頻器數(shù)值,由TIMx_PSC寄存器配置,可設(shè)置范圍為0x0000~0xFFFF,即0~65535;
TIM_CounterMode:計(jì)數(shù)模式,可分為向上計(jì)數(shù)、向下計(jì)數(shù)以及三種中心對齊模式。而基本定時(shí)器只能向上計(jì)數(shù);
TIM_Period:計(jì)數(shù)器周期,即自動(dòng)重裝載寄存器TIMx_ARR的值,在事件生成時(shí)更新到影子寄存器,由TIMx_CR1寄存器的ARPE位配置是否使能緩沖;
TIM_ClockDivision:時(shí)鐘分頻,配置定時(shí)器時(shí)鐘CK_INT頻率與數(shù)字濾波器采樣時(shí)鐘頻率分頻比,基本定時(shí)器沒有這個(gè)功能,不用設(shè)置;
TIM_RepetitionCounter:重復(fù)計(jì)數(shù)器,屬于高級(jí)控制寄存器專用寄存器位,利用它可以很容易控制輸出PWM個(gè)數(shù),這里不用設(shè)置。
定時(shí)1s實(shí)驗(yàn)
例如,需要做一個(gè)1s的定時(shí),CK_PSC=72MHz,則PSC=71,那么CK_CNT=1MHz,
計(jì)一個(gè)數(shù)時(shí)間:1/CK_CNT = 1/1MHz = 1us,
中斷一次的時(shí)間:(ARR+1)/CK_CNT = (999+1)/1MHz = 1ms,
則定時(shí)時(shí)間:(ARR+1)/CK_CNT*time = 1ms*1000 = 1s
我們用led的亮滅狀態(tài)變化來展示1s的定時(shí)。
初始化TIM_TimeBaseInitTypeDef
前文提到的TIM_TimeBaseInitTypeDef結(jié)構(gòu)體有5個(gè)成員,但基本定時(shí)器TIM6/7只用到了TIM_Prescaler和TIM_Period這兩個(gè)成員,其他三個(gè)是通用定時(shí)器和高級(jí)定時(shí)器才會(huì)用到的。
/**
* @brief 基本定時(shí)器配置
* @param 無
* @retval 無
*/
static void BASIC_TIM_Mode_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); // 內(nèi)部時(shí)鐘72MHz
TIM_TimeBaseStructure.TIM_Period = 999; // 自動(dòng)重裝載寄存器的值
TIM_TimeBaseStructure.TIM_Prescaler= 71; // 預(yù)分頻器數(shù)值
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);
TIM_ClearFlag(TIM6, TIM_FLAG_Update); // 清除計(jì)數(shù)器中斷標(biāo)志位
TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM6, ENABLE);
}
中斷優(yōu)先級(jí)配置
有關(guān)中斷配置相關(guān)已經(jīng)在之前的文章介紹過,有不清楚的地方可移步閱讀。這里只說幾個(gè)配置的關(guān)鍵點(diǎn)。可配置中斷優(yōu)先級(jí)分組為0,即0位搶占優(yōu)先級(jí),4位子優(yōu)先級(jí)。配置中斷源為TIM6_IRQn。
/**
* @brief 中斷優(yōu)先級(jí)配置
* @param 無
* @retval 無
*/
static void BASIC_TIM_NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
中斷函數(shù)
中斷函數(shù)在stm32f10x_it.c文件里配置。
extern volatile uint32_t time; // 該變量定義在main()函數(shù)里
void TIM6_IRQHandler(void)
{
if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
{
time++; // 每中斷一次,time值加1,中斷一次時(shí)間為1ms,需要中斷1000次才可定時(shí)1s,即time值為1000
TIM_ClearITPendingBit(TIM6, TIM_FLAG_Update);
}
}
最后在main()函數(shù)里調(diào)用led和定時(shí)器的初始化配置函數(shù),在一個(gè)循環(huán)里判斷time變量的值是否為1000,如果已經(jīng)達(dá)到1000,則led燈狀態(tài)變化(亮或滅)一次,并且time變量值重賦為0,以便繼續(xù)判斷及定時(shí)。
上一篇:單片機(jī)學(xué)習(xí)筆記之--SPI通信基礎(chǔ)
下一篇:144個(gè)stm32開發(fā)相關(guān)的問題,看你了解幾個(gè)
推薦閱讀
史海拾趣
在電子行業(yè)中,技術(shù)的突破和創(chuàng)新是企業(yè)持續(xù)發(fā)展的關(guān)鍵。CONEC深知這一點(diǎn),因此不斷投入研發(fā)資源,力求在技術(shù)上取得突破。通過多年的努力,公司在某些關(guān)鍵技術(shù)領(lǐng)域取得了重要進(jìn)展,如高速數(shù)據(jù)傳輸、低損耗材料應(yīng)用等。這些技術(shù)突破不僅提升了公司的產(chǎn)品性能和質(zhì)量,也使其在行業(yè)中保持了領(lǐng)先地位。
DURACELL公司自成立以來,一直致力于提供高品質(zhì)的電池產(chǎn)品。公司不斷投入研發(fā)資源,推動(dòng)電池技術(shù)的創(chuàng)新。金霸王堿性電池以其“卓越品質(zhì),持久電力”的出眾品質(zhì)行銷全球近百個(gè)國家和地區(qū)。此外,DURACELL公司還積極拓展產(chǎn)品線,生產(chǎn)和銷售鋰電池等高性能電池產(chǎn)品,以滿足不同領(lǐng)域的需求。
在電子產(chǎn)業(yè)的浪潮中,一家名為“智匯電子組裝”的初創(chuàng)公司憑借其獨(dú)特的技術(shù)優(yōu)勢迅速崛起。公司創(chuàng)始人是一位資深的電子工程師,他帶領(lǐng)著一支由多名技術(shù)精英組成的團(tuán)隊(duì),專注于研發(fā)高效、精確的電子組裝技術(shù)。通過不斷創(chuàng)新和優(yōu)化,智匯電子組裝成功開發(fā)出一套自動(dòng)化組裝設(shè)備,大大提高了生產(chǎn)效率,降低了成本。憑借這一技術(shù)優(yōu)勢,公司逐漸在電子組裝市場上嶄露頭角,贏得了眾多客戶的青睞。
Einfochips公司一直致力于嵌入式系統(tǒng)的創(chuàng)新與發(fā)展。在某一時(shí)期,該公司推出了Eragon600,一款基于Qualcomm Snapdragon 600處理器的全新嵌入式開發(fā)平臺(tái)。這一平臺(tái)的推出,標(biāo)志著Einfochips在嵌入式系統(tǒng)開發(fā)領(lǐng)域取得了重要突破。Eragon600不僅具備強(qiáng)大的處理能力,還適用于多種行業(yè),包括工業(yè)、安全與監(jiān)控、信息、娛樂等。在多個(gè)領(lǐng)域的廣泛應(yīng)用,進(jìn)一步鞏固了Einfochips在嵌入式系統(tǒng)開發(fā)領(lǐng)域的領(lǐng)先地位。
隨著技術(shù)實(shí)力的不斷提升,金宇半導(dǎo)體開始積極拓展國內(nèi)外市場。公司制定了詳細(xì)的市場拓展計(jì)劃,通過參加國際電子展、舉辦技術(shù)研討會(huì)等方式,加強(qiáng)與客戶的溝通和交流。同時(shí),金宇半導(dǎo)體還加大了品牌建設(shè)的力度,通過廣告宣傳、媒體合作等多種方式提升品牌知名度和美譽(yù)度。這些努力使得金宇半導(dǎo)體的市場份額逐年攀升,品牌影響力也日益增強(qiáng)。
驅(qū)動(dòng)運(yùn)行輸出 FSDMGR!StoreDisk_t::MountStore:Opened the Store\"Dsk1\" hstore=0xd0970d90 FSDMGR!StoreDisk_t::MountStore:Genometry:NumSec=991232 BytesPerSec=512 FreeSec=0 BiggestGreatable=0 WinCE中沒有SD卡的盤符,可能是驅(qū)動(dòng)問題,還 ...… 查看全部問答∨ |
|
FileMapping讀取size<=4096的文件后異常! 步驟: 1) FileMapping讀取size 4096的文件2 3) FileMapping讀取另一個(gè)文件3, MapViewOfFile()返回地址中的內(nèi)容是文件2的. 不知道是不是driver層的問題?… 查看全部問答∨ |
軟硬件在現(xiàn)代生產(chǎn)生活中都應(yīng)用在哪些方面?請舉幾種實(shí)際應(yīng)用吧! 軟硬件在現(xiàn)代生產(chǎn)生活中都應(yīng)用在哪些方面?請舉幾種實(shí)際應(yīng)用吧!… 查看全部問答∨ |
隨著可編程邏輯門陣列(FPGA,F(xiàn)ield Programmanle Gate Array)應(yīng)用的不斷普及,便攜式設(shè)備和無線設(shè)備的涌現(xiàn),過去對于FPGA主要關(guān)心的速度、單片容量、費(fèi)用以及可靠性等,現(xiàn)在對于低功耗FPGA的需 求,與速度、容量、費(fèi)用等到了一樣的高度,成為FPG ...… 查看全部問答∨ |
zigbee開發(fā)協(xié)議棧怎么學(xué)習(xí) 想請高手指點(diǎn)下 1)開發(fā)zigbee協(xié)議棧要掌握到什么程度? 2)z-stack2007中有個(gè)GenericAPP應(yīng)用例子,關(guān)于綁定那里不太明白,希望能指點(diǎn)下,在處理函數(shù)里面主要 3)要開發(fā)一些應(yīng)用,是不是還要了解開發(fā)板硬件方面的東西? … 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 480Wh/kg!湖南久森半固態(tài)金屬鋰負(fù)極電池即將量產(chǎn)
- 中國首條硫化物固體電解質(zhì)量產(chǎn)線正式落地
- QUT開發(fā)出新的LENS系統(tǒng) 可以讓機(jī)器人進(jìn)行類似大腦的導(dǎo)航
- 毫米波雷達(dá)裝機(jī)量分析:毫米波雷達(dá)裝車量持續(xù)攀升,大陸和博世占據(jù)60%以上市場份額
- TDK推出適用于車載濾波器的同軸電纜供電電感器
- 大摩給“人形機(jī)器人100”清單注入新思路
- 行家預(yù)判:2025年車載Mini LED反超OLED
- 2025數(shù)智未來峰會(huì):深度解讀AI賦能工業(yè)的趨勢與實(shí)踐
- 工業(yè)自動(dòng)化中的Raspberry Pi:簡化經(jīng)濟(jì)實(shí)惠的邊緣計(jì)算
- 意法半導(dǎo)體宣布擴(kuò)大在新加坡的“Lab-in-Fab”廠內(nèi)實(shí)驗(yàn)室合作項(xiàng)目
- 半導(dǎo)體品牌知名度問卷調(diào)查
- 上演你的“ADI實(shí)驗(yàn)室電路”DIY!
- 下載有禮|是德科技電子書 《通過了解測試精度的基礎(chǔ)知識(shí), 提高良率并降低風(fēng)險(xiǎn)》,不做“差不多先生”
- 下載《Altera SoC深度體驗(yàn)》,打分評(píng)論贏好禮
- 【已結(jié)束】 Qorvo、村田、NI直播【UWB最新技術(shù)、方案、市場、應(yīng)用解析】(13:30開始入場)
- TI 最新CapTIvate™ 觸控微控制器技術(shù)直播開始報(bào)名嘍!報(bào)名參與有禮呦!
- 老T叔的藏書閣——一位老工程師多年的資料積累
- 有獎(jiǎng)直播【Keysight World Tech Day 2023分論壇——汽車自動(dòng)駕駛與新能源】
- #最能打國產(chǎn)芯#能打入汽車電子這片地的國產(chǎn)芯,有多少啦?
- 新年新挑戰(zhàn):ST藍(lán)牙開發(fā)板免費(fèi)申請?jiān)u測+挑戰(zhàn)賽(littleshrimp帶隊(duì))
- 宣布不會(huì)“繞開”華為后,加拿大電信巨頭把5G訂單給了三星
- 新款iPhone SE將在印度組裝,蘋果將從中國轉(zhuǎn)移20%產(chǎn)能
- [解決辦法]MPLAB IDE打開自動(dòng)關(guān)閉
- PIC 開發(fā)入門教程MPLAB X IDE v4.05 xc8-v1.41 仿真proteus
- 【MPLAB X IDE】04:找不到目標(biāo)器件
- 消費(fèi)者怒告8848鈦金手機(jī)經(jīng)銷商:產(chǎn)品虛假宣傳未用“小牛皮
- 2018年Q3全球平板電腦市場規(guī)模縮水10%
- OPPO開放VOOC閃充專利授權(quán),終于可以買第三方的配件了
- “專利流氓”指控蘋果侵犯其11項(xiàng)專利,谷歌、AMD和微軟或也
- 重慶工業(yè)轉(zhuǎn)型再獲新動(dòng)能:簽約博世,共建工業(yè)4.0創(chuàng)新技術(shù)
- 我只更改了一些Catelog的組件,編譯通不過,請給幫忙看看這是咋了?
- 關(guān)于矩陣鍵盤,使用電子表格輔助編程
- TI 資料:如何進(jìn)行 DSP 編程
- 2.4G PCB天線設(shè)計(jì)
- 有獎(jiǎng)直播|TI 芯技術(shù)助力電機(jī)開發(fā) 報(bào)名中!
- 【連載】【ALIENTEK 戰(zhàn)艦STM32開發(fā)板】STM32開發(fā)指南--第三十四章 三軸加速度傳感...
- 【轉(zhuǎn)載】Android源碼目錄結(jié)構(gòu)
- 無師自通維修顯示器
- AD13,放置元件時(shí),元件如果在正面,絲印位號(hào)卻在背面?