基本定时器TIM6和TIM7使用
生活随笔
收集整理的這篇文章主要介紹了
基本定时器TIM6和TIM7使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本定時器
基本定時器TIM6和TIM7是一個16位的只能向上計數的定時器,只能定時,沒有外部IO。
初始化結構體的詳解:
- TIM_Prescaler:定時器預分頻器設置,時鐘源經過該分頻器后才是定時器時鐘,設置范圍為0~65535;計算定時器時鐘:定時器時鐘=CK_INT/(設定值 + 1)。在庫函數中APB1的預分頻系數為2,所以CK_INT= 72M。
APB1的預分頻系數為1時倍頻器不起作用,定時器的時鐘頻率 等于APB1的頻率;當APB1不分頻,TIM3的時鐘速度為36M,當2分頻APB1變為18M但TIM又會倍頻,即TIM時鐘 = 18*2 = 36M。
- TIM_CounterMode:定時器計數方式,向上,向下以及中心對齊模式。基本定時器只有向上計數,無需初始化。
- TIM_Period:定時器周期,設定自動重載的值,在普通定時器中就是最大計數值,范圍0~65535。
- TIM_ClockDivision:時鐘分頻,設定定時器時鐘頻率與數字濾波器采樣時鐘頻率分頻比,基本定時器無此功能,所以不用設置。
- TIM_RepetionCounter:重復計數器,利用它可以很容易控制輸出PWM的個數。
編程步驟(定時器配置):
1、使能時鐘
2、相關配置
3、中斷配置
4、開啟計數器中斷
5、使能計數器
6、關閉時鐘,等待使用時在開啟。
編程步驟(主函數中使用):
1、調用配置函數
2、開啟時鐘
3、編寫中斷函數
4、中斷函數中計數變量操作
5、主函數中獲取計數變量,實現計時;
配置文件(TiM.c):
主函數(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);} }運行的結果:
hello:[0:0:1] hello:[0:0:2] hello:[0:0:3] hello:[0:0:4] hello:[0:0:5] hello:[0:0:6]總結
以上是生活随笔為你收集整理的基本定时器TIM6和TIM7使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svmtrain和svmpredict简
- 下一篇: libsvm的安装和使用(1)