分享配置FreeRTOSConfig.h文件因部分宏值配置不对以及相应函数未定义出现的三个错误解决方法

今天来分享一个在创建FreeRTOS时候调用官方的FreeRTOSConfig头文件时,因部分宏值的配置与FreeRTOS内核文件中的函数不匹配,导致编译时候出现了相应的错误。

于是,既然遇到了,就准备拿出来讲一下,让其他遇到的小伙伴也可以看一下具体是什么原因导致的。

好了,话不多说,我们直接开始讲~

错误1:

首先我们来看第一个错误:

.\Objects\FM33LG0_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationStackOverflowHook (referred from tasks.o).

首先,介绍一下该宏定义是用于配置堆栈溢出检测函数的。

而这个错误其实是我们configCHECK_FOR_STACK_OVERFLOW的宏值定义为了1或者2,所以会在编译链接时候,发现vApplicationStackOverflowHook却没有定义。因为在这些函数前都有编译条件的。

检测如果configCHECK_FOR_STACK_OVERFLOW为1或者2,才会去对其进行编译链接。但是此时该函数又没有定义,就会出现上述的提示。

其宏值定义,可以参考下图说明:
在这里插入图片描述

错误1解决方法:

那解决方法自然就是:
1、要么不使用堆栈溢出检测功能,将宏configCH.ECK_FOR_STACK_OVERFLOW配置为0。
2、要么就是定义vApplicationStackOverflowHook相应钩子函数。

错误2:

然后我们来看第二个错误:

.\Objects\FM33LG0_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationTickHook (referred from tasks.o).

这个宏定义是用于配置使用滴答时钟钩子的。

这个错误也是因为vApplicationTickHook函数没有定义,造成编译连接时候找不到相应的函数定义。于是就出现了相应的错误提示。

错误2解决方法:

解决方法跟第一个一样,要么配置该滴答钩子函数,要么不使用的话,就将宏定义为0。

错误3:

最后我们看一下最后一个错误:

该错误也是一样,就是configUSE_MALLOC_FAILED_HOOK宏定义为1,该宏其实是用于配置内存创建失败时候进行相应提示的。

具体该函数可以参考FreeRTOS官网的描述:
在这里插入图片描述

.\Objects\FM33LG0_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationMallocFailedHook (referred from heap_4.o).

其错误也是一样,就是vApplicationMallocFailedHook函数没有定义。

错误3解决方法:

那解决方法自然跟上述两种一样,使用的话就定义该函数,不使用的话就将该宏定义为0即可~

好了,今天分享就到这里了。有其他小伙伴如果也遇到这种情况,可以拿来参考一下~

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞和收藏,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OMGMac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值