上一节只有一个单任务的 LED灯在闪烁
发布时间:2018-12-04 16:44

  灯闪烁,这个例子同时也第一次展示了我最完整的实战程序框架:用switch语句实现状态机,外加定时中断。这个框架看似简单,实际上就是那么简单。我做的所有开发项目都是基于这个简单框架,但是非常好用。上一节只有一个单任务的LED灯在闪烁,这节开始,我们多增加一个

  第四点:如何知道1秒钟需要多少个定时中断,也就是如何按比例修正时间精度。

  (2)实现功能:同时跑两个任务,第一个任务让一个LED灯1秒钟闪烁一次。第二个任务让蜂鸣器在前面3秒发生一次短叫报警,在后面6秒发生一次长叫报警,反复循环。

  * 第二步:基于以上1秒钟的基准,编写一个60秒的简单测试程序(如果编写超过

  * 60秒的时间,这个精度还会更高)。比如,编写一个用蜂鸣器的声音来识别计时的

  * 第三步:把程序烧录进单片机后,上电开始测试,手上同步打开手机里的秒表。

  * 只要变量uiVoiceCnt不为0,蜂鸣器就会在定时中断函数里启动鸣叫,并且自减uiVoiceCnt

  * 直到uiVoiceCnt为0时才停止鸣叫。因此控制uiVoiceCnt变量的大小就是控制声音的长短。

  uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止。才停止鸣叫

  ; //此处多加一个空指令,想维持跟if括号语句的数量对称,都是两条指令。不加也可以。

  本节程序已经展示了一个多任务处理的基本思路,假如要实现一个独立按键检测,能不能也按照这种思路来处理呢?欲知详情,请听下回分解-----在主函数中利用累计主循环次数来实现独立按键的检测。