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

  • 格式:docx
  • 大小:23.96 KB
  • 文档页数:3

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅析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_TimeBaseInitStr

uct中指定的参数初始化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。

THANKS !!!

致力为企业和个人提供合同协议,策划案计划书,学习课件等等

打造全网一站式需求

欢迎您的下载,资料仅供参考