

下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 STM32系統(tǒng)學(xué)習(xí)TIM(基本定時(shí)器)、定時(shí)器分類(lèi)STM32F1 系列中,除了互聯(lián)型的產(chǎn)品,共有 8 個(gè)定時(shí)器,分為基本定時(shí)器,通定時(shí)器和級(jí)定時(shí)器?;径〞r(shí)器 TIM6 和 TIM7 是個(gè) 16 位的只能向上計(jì)數(shù)的定時(shí)器,只能定時(shí),沒(méi)有外部 IO。通定時(shí)器 TIM2/3/4/5 是個(gè) 16 位的可以向上/下計(jì)數(shù)的定時(shí)器,可以定時(shí),可以輸出較,可以輸捕捉,每個(gè)定時(shí)器有四個(gè)外部 IO。級(jí)定時(shí)器 TIM1/8是個(gè) 16 位的可以向上/下計(jì)數(shù)的定時(shí)器,可以定時(shí),可以輸出較,可以輸捕捉,還可以有三相電機(jī)互補(bǔ)輸出信號(hào),每個(gè)定時(shí)器有 8 個(gè)外部 IO。、功能框圖剖析基本定時(shí)器的核是時(shí)基,通計(jì)時(shí)器和級(jí)定時(shí)器
2、也有。1、時(shí)鐘源定時(shí)器時(shí)鐘TIMxCLK,即內(nèi)部時(shí)鐘CK_INT,經(jīng)APB1預(yù)分頻器后分頻提供,如果APB1 預(yù)分頻系數(shù)等于 1,則頻率不變,否則頻率乘以2,庫(kù)函數(shù)中 APB1 預(yù)分頻的系數(shù)是 2,即 PCLK1=36M,所以定時(shí)器時(shí)鐘 TIMxCLK=36*2=72M 。2、計(jì)數(shù)器時(shí)鐘定時(shí)器時(shí)鐘經(jīng)過(guò) PSC 預(yù)分頻器之后,即 CK_CNT,來(lái)驅(qū)動(dòng)計(jì)數(shù)器計(jì)數(shù)。PSC 是個(gè)16 位的預(yù)分頻器,可以對(duì)定時(shí)器時(shí)鐘 TIMxCLK進(jìn) 165536 之間的任何個(gè)數(shù)進(jìn)分頻。具體計(jì)算式為:CK_CNT=TIMxCLK/(PSC+1)。3.計(jì)數(shù)器計(jì)數(shù)器 CNT 是個(gè) 16 位的計(jì)數(shù)器,只能往上計(jì)數(shù),最計(jì)數(shù)值為
3、 65535。當(dāng)計(jì)數(shù)達(dá)到動(dòng)重裝載寄存器的時(shí)候產(chǎn)更新事件,并清零從頭開(kāi)始計(jì)數(shù)。4、動(dòng)重裝載寄存器動(dòng)重裝載寄存器 ARR 是個(gè) 16 位的寄存器,這裝著計(jì)數(shù)器能計(jì)數(shù)的最數(shù)值。當(dāng)計(jì)數(shù)到這個(gè)值的時(shí)候,如果使能了中斷的話(huà),定時(shí)器就產(chǎn)溢出中斷。5. 定時(shí)時(shí)間的計(jì)算定時(shí)器的定時(shí)時(shí)間等于計(jì)數(shù)器的中斷周期乘以中斷的次數(shù)。計(jì)數(shù)器在 CK_CNT 的驅(qū)動(dòng)下,計(jì)個(gè)數(shù)的時(shí)間則是 CK_CLK 的倒數(shù),等于:1/(TIMxCLK/(PSC+1)),產(chǎn)次中斷的時(shí)間則等于:1/(CK_CLK * ARR)。如果在中斷服務(wù)程序設(shè)置個(gè)變量 time,來(lái)記錄中斷的次數(shù),那么就可以計(jì)算出我們需要的定時(shí)時(shí)間等于: 1/CK_CLK *
4、(ARR+1)*time。三、定時(shí)器初始化結(jié)構(gòu)體詳解在標(biāo)準(zhǔn)庫(kù)函數(shù)頭件stm32f10 x_tim.h中對(duì)定時(shí)器外設(shè)建了四個(gè)初始化結(jié)構(gòu)體,基本定時(shí)器只到其中個(gè)即TIM_TimeBaseInitTypeDef,其他三個(gè)在級(jí)定時(shí)器章節(jié)講解。 uint16_t TIM_Prescaler; / 預(yù)分頻器uint16_t TIM_CounterMode; / 計(jì)數(shù)模式uint32_t TIM_Period; / 定時(shí)器周期uint16_t TIM_ClockDivision; / 時(shí)鐘分頻uint8_t TIM_RepetitionCounter; / 重復(fù)計(jì)算器 TIM_TimeBaseInitTyp
5、eDef;(1) TIM_Prescaler:定時(shí)器預(yù)分頻器設(shè)置,時(shí)鐘源經(jīng)該預(yù)分頻器才是定時(shí)器時(shí)鐘,它設(shè)定TIMx_PSC 寄存器的值。可設(shè)置范圍為 0 65535,實(shí)現(xiàn) 1 65536 分頻。(2) TIM_CounterMode:定時(shí)器計(jì)數(shù)式,可是在為向上計(jì)數(shù)、向下計(jì)數(shù)以及三種中對(duì)齊模式。基本定時(shí)器只能是向上計(jì)數(shù),即TIMx_CNT只能從 0開(kāi)始遞增,并且需初始化。(3) TIM_Period:定時(shí)器周期,實(shí)際就是設(shè)定動(dòng)重載寄存器的值,在事件成時(shí)更新到影寄存器??稍O(shè)置范圍為 0 65535。(4) TIM_ClockDivision:時(shí)鐘分頻,設(shè)置定時(shí)器時(shí)鐘 CK_INT 頻率與數(shù)字濾波器
6、采樣時(shí)鐘頻率分頻,基本定時(shí)器沒(méi)有此功能,不設(shè)置。(5) TIM_RepetitionCounter:重復(fù)計(jì)數(shù)器,屬于級(jí)控制寄存器專(zhuān)寄存器位,利它可以常容易控制輸出 PWM 的個(gè)數(shù)。這不設(shè)置。雖然定時(shí)器基本初始化結(jié)構(gòu)體有 5 個(gè)成員,但對(duì)于基本定時(shí)器只需設(shè)置其中兩個(gè)就可以。四、基本定時(shí)器實(shí)驗(yàn)本實(shí)驗(yàn)利基本定時(shí)器 TIM6/7 定時(shí) 1s,1s 時(shí)間到 LED 翻轉(zhuǎn)次。基本定時(shí)器是單機(jī)內(nèi)部的資源,沒(méi)有外部 IO,不需要接外部電路,現(xiàn)只需要個(gè) LED 即可 。軟件設(shè)計(jì)編寫(xiě)兩個(gè)定時(shí)器驅(qū)動(dòng)件,bsp_TiMbase.h 和bsp_TiMbase.h,來(lái)配置定時(shí)器中斷優(yōu)先級(jí)和和初始化定時(shí)器 。1、 編程要點(diǎn)
7、(1) 開(kāi)定時(shí)器時(shí)鐘 TIMx_CLK, x6,7 ;(2) 初始化時(shí)基初始化結(jié)構(gòu)體 ;(3) 使能 TIMx, x6,7 update 中斷;(4) 打開(kāi)定時(shí)器;(5) 編寫(xiě)中斷服務(wù)程序通定時(shí)器和級(jí)定時(shí)器的定時(shí)編程要點(diǎn)跟基本定時(shí)器差不多,只是還要再選擇下計(jì)數(shù)器的計(jì)數(shù)模式,是向上還是向下。因?yàn)榛径〞r(shí)器只能向上計(jì)數(shù),且沒(méi)有配置計(jì)數(shù)模式的寄存器,默認(rèn)是向上。2.、軟件分析基本 定時(shí)器宏定義11 #else / 使基本定時(shí)器 TIM712 #define BASIC_TIM TIM718 #endif基本定時(shí)器有 TIM6 和 TIM7,我們可以有選擇的使,為了提代碼的可移植性,我們把當(dāng)需要修改定
8、時(shí)器時(shí)需要修改的代碼定義成宏,默認(rèn)使的是定時(shí)器 6,如果想修改成定時(shí)器 7,只需要把宏 BASIC_TIM6 注釋掉即可?;径〞r(shí)器設(shè)定 void BASIC_TIM_Config(void)4712 / 時(shí)鐘預(yù)分頻數(shù)為 71,則驅(qū)動(dòng)計(jì)數(shù)器的時(shí)鐘 CK_CNT = CK_INT / (71+1)=1M27 / 清除計(jì)數(shù)器中斷標(biāo)志位28 TIM_ClearFlag(BASIC_TIM, TIM_FLAG_Update);2930 / 開(kāi)啟計(jì)數(shù)器中斷31 TIM_ITConfig(BASIC_TIM,TIM_IT_Update,ENABLE);3233 / 使能計(jì)數(shù)器34 TIM_Cmd(BASI
9、C_TIM, ENABLE);3536 / 暫時(shí)關(guān)閉定時(shí)器的時(shí)鐘,等待使37 BASIC_TIM_APBxClock_FUN(BASIC_TIM_CLK, DISABLE)38 我們把定時(shí)器設(shè)置動(dòng)重裝載寄存器 ARR 的值為 1000,設(shè)置時(shí)鐘預(yù)分頻器為 71,則驅(qū)動(dòng)計(jì)數(shù)器的時(shí)鐘:CK_CNT = CK_INT /(71+1)=1M,則計(jì)數(shù)器計(jì)數(shù)次的時(shí)間等于:1/CK_CNT=1us,當(dāng)計(jì)數(shù)器計(jì)數(shù)到 ARR 的值 1000 時(shí),產(chǎn)次中斷,則中斷次的時(shí)間為:1/CK_CNT*ARR=1ms。在初始化定時(shí)器的時(shí)候,我們定義了個(gè)結(jié)構(gòu)體:TIM_TimeBaseInitTypeDef,TIM_Time
10、BaseInitTypeDef 結(jié)構(gòu)體有 5 個(gè)成員,TIM6 和 TIM7 的寄存器只有TIM_Prescaler 和 TIM_Period,另外三個(gè)成員基本定時(shí)器是沒(méi)有的,所以使 TIM6 和TIM7的時(shí)候只需初始化這兩個(gè)成員即可, 另外三個(gè)成員是通定時(shí)器和級(jí)定時(shí)器才有,具體說(shuō)明如下:1 typedef struct 2 TIM_Prescaler / 都有5 TIM_ClockDivision / TIMx,x6,7沒(méi)有,其他都有6 TIM_RepetitionCounter / TIMx,x1,8,15,16,17 才有7 TIM_TimeBaseInitTypeDef;定時(shí)器中斷優(yōu)先
11、級(jí)配置 12 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;13 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;14 NVIC_Init(&NVIC_InitStructure);15 定時(shí)器中斷服務(wù)程序1 void BASIC_TIM_IRQHandler (void)6 7 定時(shí)器中斷次的時(shí)間是 1ms,我們定義個(gè)全局變量 time,每當(dāng)進(jìn)次中斷的時(shí)候,讓 time 來(lái)記錄進(jìn)中斷的次數(shù)。如果我們想實(shí)現(xiàn)個(gè) 1s 的定時(shí),我們只需要判斷time 是否等于 1000 即可,1000 個(gè) 1ms
12、就是 1s。然后把 time 清 0,重新計(jì)數(shù),以此循環(huán)往復(fù)。在中斷服務(wù)程序的最后,要把相應(yīng)的中斷標(biāo)志位清除掉,切記。主函數(shù)1 int main(void)2 3 /* led 端配置 */4 LED_GPIO_Config();56 /* 基本定時(shí)器 TIMx,x6,7 定時(shí)配置 */7 BASIC_TIM_Config();89 /* 配置基本定時(shí)器 TIMx,x6,7的中斷優(yōu)先級(jí) */10 BASIC_TIM_NVIC_Config();1112 /* 基本定時(shí)器 TIMx,x6,7 重新開(kāi)時(shí)鐘,開(kāi)始計(jì)時(shí) */13 BASIC_TIM_APBxClock_FUN(BASIC_TIM_CLK, ENABLE);1415 while (1) 16 if ( time = 1000 ) /* 1000 * 1 ms = 1s 時(shí)間到 */17 time = 0;18 /* LED1 取反 */19 LED1_TOGGLE;20 21 22 函數(shù)做些必須的初
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東佛山市禪城區(qū)2026屆化學(xué)高二第一學(xué)期期中質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 廣西南寧市“4 N”高中聯(lián)合體2026屆化學(xué)高一第一學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
- 消防藥劑面試題目及答案
- 新解讀《GB-T 35913 - 2018地采暖用實(shí)木地板技術(shù)要求》
- 化妝品配方安全知識(shí)培訓(xùn)課件
- 濰坊體育面試題目及答案
- 南京鼓樓區(qū)五上數(shù)學(xué)試卷
- 六校聯(lián)考高一數(shù)學(xué)試卷
- 水污染面試題目及答案
- 黎平四中數(shù)學(xué)試卷
- 2024年大學(xué)試題(大學(xué)選修課)-創(chuàng)業(yè):道與術(shù)筆試參考題庫(kù)含答案
- 股骨粗隆間骨折的健康教育
- 普通高等學(xué)校招生全國(guó)統(tǒng)一考試大綱 英語(yǔ)詞匯表
- 無(wú)線(xiàn)網(wǎng)絡(luò)運(yùn)維和安全管理制度
- 社區(qū)生殖健康知識(shí)培訓(xùn)方案
- DB37-T 4687-2023 社會(huì)心理服務(wù)中心(站、室)建設(shè)運(yùn)行規(guī)范
- 激光打印機(jī)維修培訓(xùn)資料全
- 耳鼻喉科患者的心理護(hù)理與干預(yù)策略
- 30道醫(yī)院婦產(chǎn)科醫(yī)生崗位高頻面試問(wèn)題附考察點(diǎn)及參考回答
- 機(jī)動(dòng)車(chē)駕駛員培訓(xùn)備案表
- (完整word版)中國(guó)銀行交易流水明細(xì)清單模版
評(píng)論
0/150
提交評(píng)論