FreeRTOS 任务函数里面的死循环

        任务函数是一个无限循环且不带返回值的函数

        任务必须是死循环,否则任务将经过 LR 返回,如果 LR 指向了非法内存就会产生HardFault_Handler,而 FreeRTOS 指向一个死循环,那么任务返回以后就在死循环中执行,这样子的任务是不安全的。

        编程时应避免这种状况,任务通常都是死循环而且无返回值的。

        若是单次任务,执行一次以后就进行删除,则不影响系统运行,所以,只执行一次的任务在执行完毕要记得及时删除。即就是在任务结束的时候,加上 vTaskDelete(NULL)

        循环任务里面的延时函数必须使用 FreeRTOS 里面提供的延时函数,并不能使用咱们裸机编程中的那种延时。这两种延时的区别是 FreeRTOS 里面的延时是阻塞延时,即调用vTaskDelay()函数的时候,当前任务会被挂起,调度器会切换到其它就绪的任务,从而实现多任务。若是仍是使用裸机编程中的那种延时,那么整个任务就成为了一个死循环,若是刚好该任务的优先级是最高的,那么系统永远都是在这个任务中运行,比它优先级更低的任务没法运行,根本没法实现多任务。

        当任务进入延时的时候,由于没有另外就绪的用户任务,那么系统就会进入空闲任务,空闲任务是 FreeRTOS 系统本身启动的一个任务,优先级最低。当整个系统都没有就绪任务的时候,系统必须保证有一个任务在运行,空闲任务就是为这个设计的。当用户任务延时到期,又会从空闲任务切换回用户任务。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薇远镖局

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值