玩了一段時間STM32,沒有經過系統(tǒng)學習,對這個定時器定時時間計算理解很懵懂!
如下面定時器初始化代碼文章來源:http://www.zghlxwxcb.cn/news/detail-478753.html
void timer7_init(u16 clock,u16 Preiod)//void timer7_init(84,5000)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);
TIM_DeInit(TIM7);
/*TIM_Period=自動裝載值,TIM_Prescaler=預分頻值*/
TIM_TimeBaseStructure.TIM_Period = Preiod - 1; //5000定時器預分頻器
TIM_TimeBaseStructure.TIM_Prescaler = clock - 1; //84 預分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //時鐘頻率不分頻
/*TIM_CounterMode:定時器計數(shù)方式,可為向上計數(shù)、向下計數(shù)以及中心對齊模式*/
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM7,&TIM_TimeBaseStructure);
TIM_ClearFlag(TIM7,TIM_FLAG_Update);
TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM7,ENABLE);
}
TIM_Period=自動裝載值
TIM_Prescaler=預分頻值
定時時間計算:
定時時間=(TIM_Period)X(TIM_Prescaler)/Timer clocks(定時器時鐘頻率)
假如:TIM_Period=5000,TIM_Prescaler=84,Timer clocks=84Mhz
(5000X84)/84=5000us=5ms
對定時器時間設定可以理解為:
假如你需要定時1MS,TIM_Period(自動裝載值)設定為1000,也就是1000us,
TIM_Prescaler(預分頻值)設定與Timer clocks(定時器時鐘頻率)相同就行,比如
定時器時鐘頻率是84,TIM_Prescaler(預分頻值)設定為84就行。文章來源地址http://www.zghlxwxcb.cn/news/detail-478753.html
到了這里,關于STM32 定時器時間設定及計算最簡單理解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!