FreeRTOS - configASSERT(断言)的使用

本人FreeRTOS 小白一个,一直头疼程序运行后出错后就找不到出错发生的位置,偶然看到有这个函数,学习下!!!

原文地址:http://www.cnblogs.com/god-of-death/p/6891400.html 

 


  FreeRTOS中的断言函数configASSERT()和标准C中的断言函数assert()是一样的,如果断言函数的参数为0时将触发断言函数的执行。 


  FreeRTOS的断言功能在调试阶段是非常有用的,可以有效地检查参数错误和运行中的错误,但在正式发布软件时,请将此功能关闭,因为断言功能会增加工程代码大小并降低工程执行效率。关闭断言也比较简单,如果FreeRTOSConfig.h文件中有断言的宏定义,将其注释掉即可,如果没有宏定义,默认在FreeRTOS.h文件中就是关闭的。 

/* Define configASSERT() to disable interrupts and sit in a loop. */ 
#define configASSERT( x )         if( x == 0 ) { taskDISABLE_INTERRUPTS(); for(;;); }

在使用调试器的情况下,一旦出现断言失败,会关闭中断,程序会死在这个for循环中,此时用户可以很容易就锁定函数出错位置。

 

 

 

 

FreeRTOS还提供另外一种方式,如截图:

但是测试了如果把“void vAssertCalled( const char * pcFile, unsigned long ulLine );”放入FreeRTOSConfig.h会提示“bad instruction, error while running Assembler”,原因是FreeRTOSConfig.h文件被portasm.s引用,但是汇编文件不能出现C语言的语法,如果一定要用第二种方法,为portasm.s单独建一个配置文件,如"FreeRTOSConfig_asm.h"。总之用第一种方式就非常不错了!!!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值