FreeRTOSConfig.h文件中的断言函数:
#define configASSERT( ( x ) ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ ) ====================================================== 一般错误的配置容易触发断言,进入断言后如何锁定出问题的位置呢。下面教大家两种方法 方法一: 断言函数采用下面的形式: #define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); } 点击进入硬件调试,使用STLink,JLink或者ULink均可,然后点击全速运行,如果在运行中触发 了断言,此时点击全速运行停止,调试会停止在相应的位置。 一个简单测试,我们在中断里面调用任务恢复函数vTaskResume就会触发断言,此时调试停止的位置 --------------------------------------------------------------------------------------------------- 方法二: 断言函数采用下面的形式: #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" 依然采用上面的方法进行测试,此时串口打印出文件和行数跟上面的截图位置是吻合的。 |