跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
铝电解电容捷比信 · 专业器件主题站

RTOS如何实现多任务处理?

注意,明星公众号,是的,令人兴奋的内容作者:stronghuang黄微信公众号:stronghuanghuang很多朋友很长时间从事裸机编程,转而学习RTOS,于是对许多概念都产生了误解。当大多数人开始学习RTOS实时操作系统时,他们并不了解RTOS中的某些概念。首先是关键部分,调度,信号量,互斥锁和其他概念,我相信其中大多数都是无知的。不理解这些概念是正常的,但是当我一次理解所有这些概念时,我认为这是不正常的。 1什么是多任务处理?这里的大多数人应该来自裸机阶段。裸机系统通常称为单任务系统,轮询系统或前端和后端系统。我相信每个人都可以理解这个概念。轮询是在一个大的while循环中执行的。前后系统是在执行while时响应中断(前台)的系统。 int main(void){& nbsp; / *& nbsp;初始化& nbsp; * / while(1){ ; nbsp; loop来处理多件事* /}}那么,还有什么呢?当多任务操作系统使用某种任务调度策略来允许两个或多个进程同时共享一个处理器时,实际上,该处理器只会在特定时间为一个任务提供服务。由于任务调度机制可确保不同任务之间的切换速度非常快,因此给人一种幻觉,即多个任务同时运行。 ---来自百度百科初学者可以了解:有多种与上述类似的投票系统。以下代码将大量内容分解为若干内容,并分别进行处理。 void Task1(void){/ *初始化* / while(1){/ *处理事物1 * /}} void Task2(void){/ *初始化* / while(1){/ *处理事物2 * /}}这涉及到各种任务之间的切换:任务调度。 2任务调度在谈论任务调度之前,让我先谈一个情节:当我开始学习RTOS时,我感到CPU在这么短的时间内(1ms)在任务之间来回切换,因此需要进行切换。要执行多少代码,那么CPU还能执行多少代码?代码?实际上,我低估了处理器的功能。以运行72M的STM32F103为例,在1毫秒内可以执行多少代码,您是否有构想?伴随着这个问题,每个人都进行了深刻的思考,并且实际上可以理解,用于切换(任务调度)的代码对于CPU速度可以忽略不计(当然,这是相对的)。任务调度任务调度可分为抢占式调度和循环调度。在RTOS中,为了获得对任务的实时响应,通常使用抢先式调度。让我们以UCOS为例:您将发现在程序执行期间,如果有高优先级任务,高优先级任务将被中断。优先任务。在执行高优先级任务之前,低优先级任务将无法获得响应。有人可能会问:如果始终执行高优先级,可以长时间执行吗?答案是:否与任务优先级分配和任务设计有关。一般而言,高优先级任务正在等待事件的触发以执行紧急任务,而不会花费太多时间。太耗时的任务通常留给低优先级的任务,这些低优先级的任务在系统不忙时会被缓慢处理。调度过程我们将系统滴答时间设置为1ms,然后系统将以1ms的间隔检查就绪任务中优先级较高的任务。 1ms的滴答是由定时器中断产生的,通常由STM32中的核心滴答定时器产生。如上图所示,他检测到位置(2)处有较高优先级的任务(7)准备就绪,然后跳至任务(7)进行执行。推荐阅读:几种类似于VS Code的开源编辑器工具CMSIS RTOS API,内核通用API接口STM32中的CRC计算单元以及CRC验证的应用。关注微信公众号“ strongerHuang”,后台回复“ 1024”。要获取更多内容,请回复“添加组”按照规定加入技术交流小组。长按可转到图片中包含的官方帐户以进行后续操作