logo资料库

STM32定时器设定准确定时时间的使用心得.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
STM32 定时器设定准确定时时间的使用心得 这里说的主要是比较输出的定时长短算法原理。TIM_Period 这 个是记数周期,Prescaler 是 TIM 时钟频率除数的预分频值。在一般 记时使用中,举个例子我们要产生 50ms 一次的中断,这时 TIM2 的工 作频率是 72M。 50000 = (1000000/(72000000/TIM_Prescaler)) * TIM_Period, 这里单位都转化成 us 和 Hz,1000000 是 1 秒用来算频率。假定 TIM_Period 为 1000,那 TIM_Prescaler=3600,这里 TIM_Prescaler 的数值越大精度越高。TIM_Period 主要是定时长度 现在说明清楚。还是要用上面的公式说明。 1、72000000/TIM_Prescaler:这一步是求出一秒种的系统时钟周 期里会产生多少次定时器累加。如果 TIM_Prescaler 为 720 那就是 1 秒钟累加 100000 次。 2、1000000/(72000000/TIM_Prescaler):这里将 1 秒放大为一百 万微秒,如果 TIM_Prescaler 为 720 那就是每次累加间隔 10us,这 样就算出了这个定时器最小的定时时间,就是精度。 3、(1000000/(72000000/TIM_Prescaler)) * TIM_Period:这个最 后一乘就是整个定时器一个定时周期的时间就是定时最长时间。如果 TIM_Period 为 60000(最大 65535),TIM_Prescaler 为 720 那最长时 间就是 600ms。 4、TIM_OCInitStructure.TIM_Pulse:这个的值是单个通道的定时 时间。他是定时器最小定时时间的倍数。
5、当定时精度达到微秒级后每次的中断间隔不能小于 6 个微秒 因为定时器内的代码执行要时间 6、要想获得连续的自动记数翻转 TIM_TimeBaseStructure.TIM_Period 的值必须是(0xFFFF)。否则这 些通道就会按照 TIM_TimeBaseStructure.TIM_Period 的最大定时时 间工作一次(最长定时周期)然后停止工作一次而不是连续自动重装。
分享到:
收藏