当前位置: 首页 > article >正文

FreeRTOS实时操作系统学习小结

FreeRTOS:Real Time Operating System实时操作系统

通过任务调度实现多任务创建,达成处理多任务的操作,FreeRTOS主要使用抢占式的调度方式,指高优先级的任务可以比低优先级的任务优先执行,调度器先选择最高优先级的任务,其他任务会进入挂起态,直到调度器下一次选择该任务。还有一种时间片轮转的调度策略,对于同一优先级的任务,按照时间片进行调度。

比较-单片机裸机:一次只能处理一个任务。由于目前芯片在裸机时的处理频率大多处于资源浪费的情况,移植操作系统可充分利用资源。

任务状态:就绪态/运行态/阻塞态/挂起态

FreeRTOS任务间通信:信号量、事件组、消息队列

信号量

 二值信号量:

信号量只有0和1两个值,可用于多任务间通信、任务延时以及防止多任务间同时访问共享资源等,可实现互斥锁功能。

默认初始信号量的值为1,通过PV(申请/释放)操作,实现以上功能。

计数信号量:

 信号量的数值大于1的队列,任务确认队列是否为空,不为空即可用于事件计数和资源管理。

事件组

保存事件标志的组。创建事件组,在任务中调用借口等待事件的产生,通过设置和清楚事件标志位,多个任务间可以同步和通信。

消息队列

任务通过消息队列传递消息,每个消息都有单独的ID,一个任务向队列发送消息,另一个任务从队列中接收消息,可以实现任务间的消息交换。

软件定时器

创建软件定时器任务,设置回调函数用于软件定时器到时间后需要执行的动作,可以实现软件定时的功能,需要注意定时器优先级,如果优先级比正常任务低会导致定时器无法正常使用。


http://www.kler.cn/a/520288.html

相关文章:

  • kubernetes 核心技术-Service
  • 【SQL注入】DVWA靶场SQL注入实践
  • 在线可编辑Excel
  • 【超详细】C#事件
  • MyBatis最佳实践:提升数据库交互效率的秘密武器
  • 聊一聊 CSS 样式的导入方式
  • 使用Ollama部署deepseek大模型
  • unity制作动画的技巧相关注意点
  • 证券投资和量化交易的概率和预测的准确性
  • 深入探索 Vue 3 Markdown 编辑器:高级功能与实现
  • 飞书项目流程入门指导手册
  • 输入带空格的字符串,求单词个数
  • javaSE.方法的重写
  • Python元组详解:不可变序列的魅力
  • git reset (取消暂存,保留工作区修改)
  • 一些烦人的go设置 goland
  • 系统架构设计基础:概念与原则
  • 笔灵ai写作技术浅析(一)
  • Python3 【正则表达式】项目实战:5 个学习案例
  • 助记词登录时提示无效怎么办?