把assert 单独放一篇文章,可见是多么的重要。Raw os 提供了RAW_ASSERT 的接口。强烈建议在产品研发阶段打开assert 功能
/*enable assert for raw os*/
#define CONFIG_RAW_ASSERT 1
RAW_ASSERT 是一个宏,移植的时候放在raw_cpu.h 里面,比如VC 上的移植如下。
#define RAW_ASSERT(CON) if (!(CON)) {printf("file is %s\nLine is %d\n", __FILE__, __LINE__); \
printf("aborted task name is %s\n", raw_task_active->task_name); \
while (1); }
需要打开串口的功能,但是有的时候串口打开比较麻烦,怎么办呢。最简单的移植是:
#define RAW_ASSERT(CON) if (!(CON)) {volatile RAW_U8 dummy = 0; while (dummy==0);}