STM32定时器高效时间片学习
扫描二维码
随时随地手机看文章
常规单片机运行程序如下:
while(1)
{
.....
}
类似于一种顺序执行的方法,执行起来较为死板,一旦某一行发生错误的时候就会造成整个程序的跑飞,基于以上传统开发所有的缺点。可以设置相关的定时器,进行某种时间片的控制。
首先设置定时器的中断,按照正常的配置相关的时间基点。
例如:将预装载寄存器存放20-1,将预分频寄存器装360-1,计数器没溢出一次形成的是0.5ms的时间,以此为时间基准,使能溢出中断。
之后可以在中断服务函数内设置相关的计数全局变量,每中断一次,对相对应的时间变量+1:
05ms++;
1ms++;
... ...
1000ms++;
在主函数之中根据相关的全局变量,可以每到达以此时间点变执行相关的时间
类似如下:
if(05ms=ON)
{
05ms=OFF;
... ...
}
else if(1ms=ON)
{
1ms=OFF
... ...
}
。。。
else if(1000ms=ON)
{
1000ms=OFF
... ...
}
注:... ...为添加的函数
分析:当设置0.5ms为时间基点的时候,第一次溢出的时候,执行一次里面的函数此时计时0.5ms,第二次溢出的时候此时按照顺序结构执行又一次执行05ms内的函数。此时1ms时间变量也被置为故此时也执行一次。
总结:可以设置合适的时间点,没过一个时间段,此函数执行一次。