关于Freertos的注意事项(configASSERT)

作者在学习Freertos时遇到任务挂起时的configASSERT错误,发现是由于在中断中误用了vTaskdelay。提醒开发者在中断处理中应避免使用vTaskdelay,使用freertos提供的ISR相关的函数,以防止程序卡顿。
摘要由CSDN通过智能技术生成

前些天跟随正点原子学习freertos的过程中遇到一个问题,当时在网上查找了很久也没有找到解决的方法。后来,通过阅读.C文件找到原因。在此,分享出来,希望可以帮助到有需要的朋友。

  在任务挂起与恢复中,

   configASSERT( ( portNVIC_INT_CTRL_REG & portVECTACTIVE_MASK ) == 0 );  遇到port.c中的该语句报错,本想着是中断管理优先级的问题,但优先级并没有发生冲突。

      

后来,在阅读中断函数的代码发现,我错误使用了包含freertos的vTaskdelay()的延时函数。在正点原子老师讲课提到在中断不调用vTaskdelay作为延时函数。在中断中只能使用freertos中带有ISR的函数。

在正点原子提供的delay.c中delay_ms是包含vTaskdelay的。所以不能使用,否则会导致程序卡在configASSERT( ( portNVIC_INT_CTRL_REG & portVECTACTIVE_MASK ) == 0 ); 

警示:以后在使用别人的模块化的函数要注意仔细阅读,否则容易出现一些意想不到的事情。

希望可以帮助到有需要的朋友们。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值