0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么叫多任务系统 FreeRTOS任务管理

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-09-28 10:56 次阅读

回想一下我们以前在使用 51、AVR、STM32 单片机裸机(未使用系统)的时候一般都是在main 函数里面用while(1)做一个大循环来完成所有的处理,即应用程序是一个无限的循环,循环中调用相应的函数完成所需的处理。有时候我们也需要中断中完成一些处理。相对于多任务系统而言,这个就是单任务系统,也称作前后台系统,中断服务函数作为前台程序,大循环while(1)作为后台程序,如图所示:

图片

前后台系统的实时性差,前后台系统各个任务(应用程序)都是排队等着轮流执行,不管你这个程序现在有多紧急,没轮到你就只能等着!相当于所有任务(应用程序)的优先级都是一样的。但是前后台系统简单啊,资源消耗也少啊!在稍微大一点的嵌入式应用中前后台系统就明显力不从心了,此时就需要多任务系统出马了。

多任务系统会把一个大问题(应用)“分而治之”,把大问题划分成很多个小问题,逐步的把小问题解决掉,大问题也就随之解决了,这些小问题可以单独的作为一个小任务来处理。这些小任务是并发处理的,注意,并不是说同一时刻一起执行很多个任务,而是由于每个任务执行的时间很短,导致看起来像是同一时刻执行了很多个任务一样。多个任务带来了一个新的问题,究竟哪个任务先运行,哪个任务后运行呢?完成这个功能的东西在RTOS 系统中叫做任务调度器。不同的系统其任务调度器的实现方法也不同,比如 FreeRTOS是一个抢占式的实时多任务系统,那么其任务调度器也是抢占式的,运行过程如图所示:

图片

高优先级的任务可以打断低优先级任务的运行而取得 CPU的使用权,这样就保证了那些紧急任务的运行。这样我们就可以为那些对实时性要求高的任务设置一个很高的优先级,比如自动驾驶中的障碍物检测任务等。高优先级的任务执行完成以后重新把CPU 的使用权归还给低优先级的任务,这个就是抢占式多任务系统的基本原理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43980

    浏览量

    620888
  • 嵌入式
    +关注

    关注

    4983

    文章

    18291

    浏览量

    288540
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10449

    浏览量

    206577
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61351
  • 应用程序
    +关注

    关注

    37

    文章

    3136

    浏览量

    56405
收藏 人收藏

    评论

    相关推荐

    转:第10章 FreeRTOS任务管理

    第10章FreeRTOS任务管理 对于初学者,特别是对于没有RTOS基础的同学来说,了解FreeRTOS任务
    发表于 08-23 09:54

    在STM32下完成FreeRTOS多任务程序开发

    ---------FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间
    发表于 08-09 07:27

    如何去实现基于stm32的FreeRTOS多任务程序

    免费的,RTOS 全称是 Real Time Operating System,中文就是实时操作系统。注意,RTOS 不是指某一个确定的系统,而是指一类系统。比如 uC/OS,FreeRTOS
    发表于 08-24 07:45

    如何使用CubeMX快速生成FreeRTOS系统并实现多任务处理?

    如何使用CubeMX快速生成FreeRTOS系统并实现多任务处理?
    发表于 12-20 08:00

    多任务系统与单任务系统分别是指什么

    多任务的并发执行通常依赖于一个多任务操作系统(OS),多任务OS的核心是系统调度器,它使用任务
    发表于 12-22 07:20

    浅析FreeRTOS任务系统

    FreeRTOS-任务基础大多数时候,使用RTOS就是使用其多任务处理功能。所谓多任务处理,其实并不是我们移植了RTOS系统后,CPU就可以
    发表于 01-06 08:08

    FreeRTOS多任务系统的相关资料推荐

    目录单片机各编程系统特点1、裸机系统(1)轮询系统(2)前后台系统2、多任务系统单片机各编程
    发表于 01-13 07:51

    如何在STM32下完成一个基于FreeRTOS多任务程序

    ).FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理
    发表于 01-17 07:10

    如何利用FreeRTOS程序完成多任务功能?

    如何利用FreeRTOS程序完成多任务功能?
    发表于 01-18 06:43

    任务裸机系统多任务系统的区别在哪

    外部事件驱动就能完成的事情前后台系统:在轮询系统的基础上加入了终断,终端即前台,无限循环的部分后台多任务系统:相比前后台,
    发表于 02-18 07:03

    什么是多任务系统FreeRTOS任务与协程简析

    FreeRTOS学习之FreeRTOS任务基础知识转行小白一枚,通过博客记录自我学习,望更多博友多多指点,感激不尽!RTOS系统的核心就是任务
    发表于 02-18 06:38

    keil下的FreeRtos多任务程序学习

    keil下的FreeRtos多任务程序学习目标手动移植FreeRtos(以STM32F103为例)直接使用野火的模板学习目标学习FreeRTOS原理,在STM32下完成一个基于
    发表于 02-21 06:14

    stm32基于FreeRTOS多任务程序

    目录实验环境实验目的实验步骤代码:实验环境1.野火STM32MINI开发板2.keil5实验目的在STM32下完成一个基于FreeRTOS多任务程序,执行3个周期性task,具体任务如下
    发表于 12-07 10:36 14次下载
    stm32基于<b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>多任务</b>程序

    (一)FreeRTOS学习之FreeRTOS任务基础知识

    FreeRTOS学习之FreeRTOS任务基础知识转行小白一枚,通过博客记录自我学习,望更多博友多多指点,感激不尽!RTOS系统的核心就是任务
    发表于 12-23 19:57 3次下载
    (一)<b class='flag-5'>FreeRTOS</b>学习之<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任务</b>基础知识

    基于FreeRTOS的STM32多任务程序

    基于FreeRTOS的STM32多任务程序一、材料准备二、 FreeRTOS移植FreeRTOS是什么FreeRTOS移植到STM32上(M
    发表于 12-27 18:38 26次下载
    基于<b class='flag-5'>FreeRTOS</b>的STM32<b class='flag-5'>多任务</b>程序