一直忙的顾头不顾腚的,今天终于可以抽出一点时间了,继续我们未完的约定~ 依稀记得上大学那会可亲的老师教授键盘检测要防抖,讲述了防抖原因并给出了精心准备的例子。作为一个呆家伙,我居然真用这种编程方法参加了工作……. 第二章 时间片机制,拒绝死等 - 图1 你也许在想:是啊,是这么教的呀,书上也是这么写的呀,有问题?没有问题,但你有没有想过,这10ms实际上对单片机是一种巨大的浪费,当程序需要同时运行多个需求的时候会捉襟见肘。下面我们就进入本章重点:时间片机制,拒绝死等!

  1. 配置好250us中断,1ms计时。注意变量SpeedCon_Num。 第二章 时间片机制,拒绝死等 - 图2

  2. main函数中构建while(1)主循环。主循环里同时运行了多个任务:按键扫描、LED闪烁、睡眠计时、睡眠检测等。每8ms为一轮,轮流调用每个函数。注意变量SpeedCon_Num。 第二章 时间片机制,拒绝死等 - 图3

  3. 编写按键扫描程序。仔细看看会发现这种按键扫描根本没有“死等10ms”,而是采用变量计时,每8ms扫描一次按键,防抖24ms,满足条件则确认按键触发。这段按键扫描代码所耗费的时间不会超过50us。 第二章 时间片机制,拒绝死等 - 图4

综上,采用时间片机制后大大减少了单片机的空转,提高了利用率,能对外界做出更快更好的响应。小小抛砖引玉,等你来战哦~