本文思想来自于一本叫做AVR单片机实战教程的书。
较简单的程序结构:死循环查询结构
void main()
{
initialinze();//初始化
while(1)
{
if(条件1满足)
task(1);
if(条件2满足)
task(2);
if(条件3满足)
task(3);
.......
}
}
这种结构就是一种典型的前后台结构。前台是个死循环结构,主要负责条件查询和数据处理任务。后台为中断系统,处理时间要求相对严格的操作。后台数据处理较为简单,一般大量的数据处理放在主函数内,不放在中断内。
特征:时间相应差,如果有多个任务,会出现数据更新满特点。比如液晶显示屏刷新太慢就会出现数据跳动大。最多需要等待一个循环响应的时间,称为任务响应周期。
另外一种结构叫做时间片轮训结构。因为大多数任务的执行时间我们都可以预估出来的,比如液晶10ms刷新一次,温度5min采集一次,电机10min动作一次。可以采用一个定时器,当定时时间到执行某个任务。整个系统只有一个定时器中断。(此句是从书上看到的,老觉得不对劲。万一任务里有个串口,需要不定时接受,那肯定需要定时器中断啊)
|