提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本人新手刚刚开始接触FreeRTOS,跟着网上教程在搭建STM32H750的FreeRTOS环境中遇到了Undefined symbol vAssertCalled,反复检查了Keil里面引用和文件位置,发现其他配置没有问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、出现的问题

在使用FreeRTOS时,如果你遇到了“找不到vAssertCalled定义”的错误,这通常是因为在FreeRTOS的配置文件(通常是FreeRTOSConfig.h或FreeRTOSConfig.h)中没有正确设置或启用断言检查。

二、使用步骤

1.先检查配置文件

确保你的项目中包含了正确的FreeRTOS配置文件,并且该文件中已经定义了configASSERT()宏。在FreeRTOS中,configASSERT()宏是用来定义断言行为的方式,例如是否启用断言、如何处理断言失败等。

2.(FreeRTOSConfig.h或FreeRTOSConfig.h)报错代码如下:

	extern void vAssertCalled( uint32_t ulLine, const char *pcFile );
	#define configASSERT( x ) if( ( x ) == 0 ) vAssertCalled( __LINE__, __FILE__ )

报错信息如图:
在这里插入图片描述

2.修改后代码如下

代码如下(示例):

	extern void vAssertCalled( uint32_t ulLine, const char *pcFile );
		#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }

成功解决该问题:
在这里插入图片描述


具体搭建FreeRTOS环境可以参考:手把手系列–STM32H750移植FreeRTOS

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐