一楼、背景——
想象一个这样的情况,请不要在意这样奇怪的情景——
一个四位的数码管,由于要“同时”显示,因此每5ms刷新一次。(求别说MAX7219之类的IC……)
同时要处理一个矩阵键盘,设计是每10ms扫描一行,同时还有去抖处理,需要在检测到按键后再延时40ms检查一次。
检测到有效按键,在数码管上显示某个值,比如1234。
同时还能从串口接收数据,如果有数据收到,马上在数码管上显示某个值,比如5678,停留1s,期间按矩阵键盘不会有任何反应。
程序怎么写?晕了没?
比如说,去抖的时候,如果直接用delay(40)的话,那数码管的5ms刷新怎么办?串口收到的数据办?
基于这种超烦的(划掉)多任务处理,为了编程方便,让我们祭出嵌入式操作系统这一个神器!!!
哎!别走!!!妹子等我说完,我不打算讲高深理论哎!!(旁白:反正你也不是这个专业的,也讲不出)
嵌入式操作系统是用来处理这类超烦的(划掉)多任务处理的情况,常见的有uCos、RT-Thread等等,有兴趣的可以去看看。
但是Arduino,编译一个文件出来,如果你有留意的话,体积很大,而arduino本身的内存就不多,再移植一个就Orz了。所以,上面说的,不能用!!!哎!别走啊喂!!!
鉴于大家做些小作品,不需要用到如此高深的操作系统,只要简单地处理一下这些多任务的问题,所以,让我们祭出Adam Dunkels大神的ProtoThreads(附件)!
想象一个这样的情况,请不要在意这样奇怪的情景——
一个四位的数码管,由于要“同时”显示,因此每5ms刷新一次。(求别说MAX7219之类的IC……)
同时要处理一个矩阵键盘,设计是每10ms扫描一行,同时还有去抖处理,需要在检测到按键后再延时40ms检查一次。
检测到有效按键,在数码管上显示某个值,比如1234。
同时还能从串口接收数据,如果有数据收到,马上在数码管上显示某个值,比如5678,停留1s,期间按矩阵键盘不会有任何反应。
程序怎么写?晕了没?
比如说,去抖的时候,如果直接用delay(40)的话,那数码管的5ms刷新怎么办?串口收到的数据办?
基于这种超烦的(划掉)多任务处理,为了编程方便,让我们祭出嵌入式操作系统这一个神器!!!
哎!别走!!!妹子等我说完,我不打算讲高深理论哎!!(旁白:反正你也不是这个专业的,也讲不出)
嵌入式操作系统是用来处理这类超烦的(划掉)多任务处理的情况,常见的有uCos、RT-Thread等等,有兴趣的可以去看看。
但是Arduino,编译一个文件出来,如果你有留意的话,体积很大,而arduino本身的内存就不多,再移植一个就Orz了。所以,上面说的,不能用!!!哎!别走啊喂!!!
鉴于大家做些小作品,不需要用到如此高深的操作系统,只要简单地处理一下这些多任务的问题,所以,让我们祭出Adam Dunkels大神的ProtoThreads(附件)!
ProtoThreads.rar
大小:56.95KB下载:586次转存:85次