FreeRTOS任务基础知识

1、单任务系统和多任务系统

1.1、单任务系统

        在单片机(无操作系统)开发中一般采用裸机编程,应用程序是一个无限的循环(应用程序在一个while(1)循环中运行),循环中调用相应的函数完成相应的操作,可将这一部分看作后台行为;中断服务程序处理异步事件,可将这一部分看作前台行为。后台也可以称作任务级,前台可称作中断级,这就是前后台系统,也可称作单任务系统。

         单任务系统编程思路:对于简单应用,处理器可以查询数据或者消息是否就绪。就绪后进行处理,然后等待,如此循环下去。但在多数情况下,需要处理多个接口的数据或消息,因此需要多次处理,其流程如下所示:

         查询方式无法有效执行对时间要求严格的任务,采用中断方式可有效解决此问题,中断方式流程如下:

         虽然采用中断方式可以解决大部分裸机应用问题,但是随着工程的复杂度提升,裸机编程方式的缺点就暴露了:

(1)必须在中断内处理时间关键运算:

  • 中断函数非常复杂,并且处理时间很长。
  • 中断嵌套可能产生不可预测的执行时间和堆栈需求。
  • while(1)循环中断之间的数据交互是通过全局变量进行的。
  • 编写应用程序时必须确保数据的一致性,导致变量命名复杂。
  • while(1)可以轻松与系统定时器同步,但是如果系统需要多种不同的周期时间,则会很难实现。
  • 超过while(1)周期的耗时函数需要做拆分。

(2)while(1)循环使得应用程序变得非常复杂,难以扩展:

  •  一个简单的更改可能产生不可预测的错误,对这种错误的分析非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值