c语言 精确定时程序,微调定时精确时间

1.定时器&蜂鸣器

一般定时器中断函数里的内容最好是能够快速地去执行完,比如只执行几条简单的语句,这样与主函数配合才会使程序更加高效。前期教学里,我们只使用定时器中断负责某个IO引脚间隔跳变或者使一个变量间隔自加1的简单语句。

比如我们现在要实现间隔50ms左右的时间让流水灯左右循环移动的同时,还需要无源蜂鸣器一直响,这样的功能,思路该怎么去思考?

首先我们知道无源蜂鸣器要想鸣叫的比较尖锐,那P1.6需要一个合适的脉冲信号,这个信号笔者打算使P1.6高低电平保持的时间为300微秒不断循环。

所以我们用定时器中断实现P1.6的电平间隔跳变,主函数里负责完成流水灯的任务即可。

564d360704fda812946ee29895321a3e.png

2.代码#include 

#include //详见第六章第8讲

u8 T0RH, T0RL;

void TIM0_Init(u32 us,int trim)//trim:微调

{

u32 tmp;                       //临时变量

tmp = 11059200 / 12;           //定时器计数频率

tmp = ( tmp * (us/100) )/10000;//计算所需的计数值

tmp = 65536 - tmp;             //计算定时器重载值

tmp = tmp+trim;                //补


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部