c++教程 ucos ii是怎么实现多任务运行的?
ucos ii是怎么实现多任务运行的?这是一个很好的问题。要想知道这个问题,首先需要对单片机的原理有一定的了解,单片机是如何运行的,单片机的中断是如何实现的?单片机运行时,需要一些基本数据,如PC指针
ucos ii是怎么实现多任务运行的?
这是一个很好的问题。
要想知道这个问题,首先需要对单片机的原理有一定的了解,单片机是如何运行的,单片机的中断是如何实现的?
单片机运行时,需要一些基本数据,如PC指针、一些堆栈数据、进位标记等
!这些数据都存储在几个固定的寄存器中,每个相同的MCU可能会不同,但差别不会太大
这时就有中断,中断是多任务的核心!中断是如何工作的?当MCU中断时,主功能将停止运行,下一步是保存操作中使用的所有数据,即上述基础数据,然后去中断源执行中断,等待中断完成以上过程中的关键点是数据的保存和恢复。主函数运行需要保存的数据,例如主函数运行的位置(PC地址)、函数调用关系(堆栈数据)!如果我们复制这部分数据并保存到自己的内存中,那么如果我们再保存几份数据,是否可以虚拟化CPU,等待所需的任务运行
我们会将相应的数据还原到物理CPU的寄存器中,这样我们就可以完美地达到偷梁换柱的目的!CPU真的不知道!它还在继续运行
!所以UCOS操作必须要求MCU有中断!不,不能移植
!我真的为设计师的智慧而叹息!利用中断真是太巧妙了!