基本定时器TIM6和TIM7使用
生活随笔
收集整理的這篇文章主要介紹了
基本定时器TIM6和TIM7使用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
基本定時(shí)器
基本定時(shí)器TIM6和TIM7是一個(gè)16位的只能向上計(jì)數(shù)的定時(shí)器,只能定時(shí),沒有外部IO。
初始化結(jié)構(gòu)體的詳解:
- TIM_Prescaler:定時(shí)器預(yù)分頻器設(shè)置,時(shí)鐘源經(jīng)過該分頻器后才是定時(shí)器時(shí)鐘,設(shè)置范圍為0~65535;計(jì)算定時(shí)器時(shí)鐘:定時(shí)器時(shí)鐘=CK_INT/(設(shè)定值 + 1)。在庫(kù)函數(shù)中APB1的預(yù)分頻系數(shù)為2,所以CK_INT= 72M。
APB1的預(yù)分頻系數(shù)為1時(shí)倍頻器不起作用,定時(shí)器的時(shí)鐘頻率 等于APB1的頻率;當(dāng)APB1不分頻,TIM3的時(shí)鐘速度為36M,當(dāng)2分頻APB1變?yōu)?8M但TIM又會(huì)倍頻,即TIM時(shí)鐘 = 18*2 = 36M。
- TIM_CounterMode:定時(shí)器計(jì)數(shù)方式,向上,向下以及中心對(duì)齊模式。基本定時(shí)器只有向上計(jì)數(shù),無需初始化。
- TIM_Period:定時(shí)器周期,設(shè)定自動(dòng)重載的值,在普通定時(shí)器中就是最大計(jì)數(shù)值,范圍0~65535。
- TIM_ClockDivision:時(shí)鐘分頻,設(shè)定定時(shí)器時(shí)鐘頻率與數(shù)字濾波器采樣時(shí)鐘頻率分頻比,基本定時(shí)器無此功能,所以不用設(shè)置。
- TIM_RepetionCounter:重復(fù)計(jì)數(shù)器,利用它可以很容易控制輸出PWM的個(gè)數(shù)。
編程步驟(定時(shí)器配置):
1、使能時(shí)鐘
2、相關(guān)配置
3、中斷配置
4、開啟計(jì)數(shù)器中斷
5、使能計(jì)數(shù)器
6、關(guān)閉時(shí)鐘,等待使用時(shí)在開啟。
編程步驟(主函數(shù)中使用):
1、調(diào)用配置函數(shù)
2、開啟時(shí)鐘
3、編寫中斷函數(shù)
4、中斷函數(shù)中計(jì)數(shù)變量操作
5、主函數(shù)中獲取計(jì)數(shù)變量,實(shí)現(xiàn)計(jì)時(shí);
配置文件(TiM.c):
主函數(shù)(main.c):
#include "TiM.h" #include "usart.h"int time; int all_time;int main() {USART1_Config();TIM_Config();RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);while(1){if(time == 1000){time = 0;all_time ++;printf("hello:[%d:%d:%d]\n",all_time/3600,(all_time%3600)/60,all_time%60);}} }void TIM6_IRQHandler(void) {if(TIM_GetFlagStatus(TIM6,TIM_FLAG_Update) != RESET){time++;TIM_ClearFlag(TIM6,TIM_FLAG_Update);} }運(yùn)行的結(jié)果:
hello:[0:0:1] hello:[0:0:2] hello:[0:0:3] hello:[0:0:4] hello:[0:0:5] hello:[0:0:6]總結(jié)
以上是生活随笔為你收集整理的基本定时器TIM6和TIM7使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svmtrain和svmpredict简
- 下一篇: libsvm的安装和使用(1)