浅析STM32定时器TIM - Period和TIM - Prescaler-20180322

2019-08-03 10:13

浅析STM32定时器TIM_Period和TIM_Prescaler

By:T7 Date:20180322 At:YSU-B307-2

1. //配置定时器基础结构体 2. TIM_DeInit(TIM2);

3. TIM_TimeBaseStructure.TIM_Period = (1000-1); //设置在下一个更新事件装入

活动的自动重装载寄存器周期的值 计数到1000为1ms

4. TIM_TimeBaseStructure.TIM_Prescaler =(72-1); //设置用来作为TIMx时钟频率

除数的预分频值 1M的计数频率 1US计数

5. TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//不分频 6. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上

计数模式

7. TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInit

Struct中指定的参数初始化TIMx的时间基数单位 8.

9. TIM_ClearFlag(TIM6, TIM_FLAG_Update); //清除更新中断,免得一打开中断立

即产生中断

10. TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE); //打开定时器更新中断 11.

分析这段代码:

TIM_TimeBaseStructure.TIM_Period= 1000 – 1; TIM_TimeBaseStructure.TIM_Prescaler = 72– 1;

1. 定时时间T = 1000 * 72 / 72000 000 = 1ms

2. TIM_Prescaler = 72 – 1; t = 72 / 72000 000 = 1us,即TIMx->CNT每1us加一次

3. TIM_Period = 1000;当TIMx->CNT计数值达到1000us(也就是一开始计算的定时时间

1ms),进入中断服务函数,msHcCount将自动加一

1. void TIM6_IRQHandler(void) //TIM3中断 2. {

3. if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) //检查TIM3更新中断

发生与否 4. {

5. TIM_ClearITPendingBit(TIM6, TIM_IT_Update ); //清除TIMx更新

中断标志

6. msHcCount++; 7. } }

4.当定时器停止工作时,总的定时时间为t = msHcCount * 1000 + TIMx->CNT单位是

us。


浅析STM32定时器TIM - Period和TIM - Prescaler-20180322.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:增值税发票系统升级版常见问题汇总及解决方法 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: