|
发表于 2017-1-14 23:36:39
|
显示全部楼层
本帖最后由 Edward 于 2017-1-14 23:37 编辑
楼主的多任务运行指的是什么呢?一般理解的多任务运行就是像电脑那样的实现多任务,多个任务并不是真正的并行执行的,如果真的需要高度实时的并行处理,那么就需要用楼上有朋友说的FPGA等等了。
一般理解的多任务运行,是由操作系统实现的,对于处理来说,同时只执行一个任务(对于单核处理器,下同),只不过是操作系统将时间分成很细的区间,每个区间执行一个任务,下一个区间执行另一个任务,这些区间很小,人感觉不出来,所以整体看上去就是多个任务在一起执行,这就是任务调度,是操作系统的基本作用之一。
想实现简单的多任务调度,可以使用状态机,而不使用更为复杂的操作系统。举个例子,比如你想在单片机进行数码管扫描的同时还能进行矩阵按键扫描,这就是一个多任务处理的典型例子,使用状态机可以很容易的实现:定义一个变量A=0时执行数码管扫描,A=1时执行按键扫描,假设初始时A=0,设定单片机内置定时器每2ms触发一次中断,进入中断函数,判断A=0,那么执行数码管扫描,计算好显示内容,并将显示位移动一位以刷新,然后将A置1,退出中断;当定时器再次触发中断,进入后判断A=1,那么扫描按键情况,然后将A置0,再根据按键情况作出相应动作,并在适当时候退出中断。这样就通过状态机完成了一个简单的任务调度,实现了简单的多任务处理。
有一篇文章,楼主可以看看应该会很有帮助:《从单片机编程到操作系统产生》,网上可以搜到。
补充内容 (2017-1-15 11:31):
第二段少了一个字,“对于处理器来说” |
|