硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3471|回复: 1
收起左侧

[FreeRTOS] FreeRTOS断言功能在调试阶段的使用方法,比较实用,一般错误配置和使用会触发断言

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2016-4-5 00:04:44 | 显示全部楼层 |阅读模式
FreeRTOSConfig.h文件中的断言函数:
#define configASSERT( ( x ) )     if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )
======================================================
一般错误的配置容易触发断言,进入断言后如何锁定出问题的位置呢。下面教大家两种方法
方法一:
断言函数采用下面的形式:
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }   
点击进入硬件调试,使用STLink,JLink或者ULink均可,然后点击全速运行,如果在运行中触发
了断言,此时点击全速运行停止,调试会停止在相应的位置。
一个简单测试,我们在中断里面调用任务恢复函数vTaskResume就会触发断言,此时调试停止的位置
1.png
---------------------------------------------------------------------------------------------------
方法二:
断言函数采用下面的形式:
#define configASSERT( x ) if( ( x ) == 0 ) { printf("Wrong parameters value: file %s on line %d\r\n", __FILE__, __LINE__);taskDISABLE_INTERRUPTS(); for( ;; ); }
记得在FreeRTOSConfig.h文件中添加头文件"stdio.h"
依然采用上面的方法进行测试,此时串口打印出文件和行数跟上面的截图位置是吻合的。
2.png
回复

使用道具 举报

4

主题

35

回帖

47

积分

新手上路

积分
47
发表于 2016-4-13 18:29:41 | 显示全部楼层
[s:151]  [s:151]  [s:151]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 11:28 , Processed in 0.270452 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表