FreeRTOS - configASSERT(断言)的使用

原文地址: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"。总之用第一种方式就非常不错了!!!

 

 

posted @   流水灯  阅读(12268)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示