您当前的位置: 首页 >  stm32

跋扈洋

暂无认证

  • 5浏览

    0关注

    221博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

STM32移植FreeRTOS出现的问题及解决办法

跋扈洋 发布时间:2022-06-16 12:59:22 ,浏览量:5

STM32移植FreeRTOS出现的问题及解决办法
  • 引言
  • 问题:\FreeRTOS\queue.c(2761): error: #268: declaration may not appear after executable statement in block
    • 解决方法
  • 问题:..\OBJ\IAP.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by port.o and stm32f10x_it.o).
  • 解决方法
  • 问题:..\OBJ\IAP.axf: Error: L6218E: Undefined symbol vApplicationStackOverflowHook (referred from tasks.o).
  • 解决方法、

引言

我们在使用STM32移植FreeRTOS时,可能会出现很多问题,本文主要来归纳总结一下(未完待续)。

问题:\FreeRTOS\queue.c(2761): error: #268: declaration may not appear after executable statement in block 解决方法

把C99 Mode勾上

问题:…\OBJ\IAP.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by port.o and stm32f10x_it.o). 解决方法

提示函数有重复定义,PendSV_Handler,SVC_Handle在FreeRTOS中重新定义用于任务切换,所以需要注释掉stm32F1xxx_it.c中的这三个中断函数。

问题:…\OBJ\IAP.axf: Error: L6218E: Undefined symbol vApplicationStackOverflowHook (referred from tasks.o). 解决方法、

因为在"FreeRTOSConfig.h"中定义了钩子函数,但未找到函数定义。

  1. 直接在FreeRTOSConfig.h文件中将configCHECK_FOR_STACK_OVERFLOW 置为0;
#define configCHECK_FOR_STACK_OVERFLOW			0  
  1. 编写一个钩子函数
#if (configCHECK_FOR_STACK_OVERFLOW == 1)
void vApplicationStackOverflowHook(TaskHandle_t xTask,char * pcTaskName )
{
	portDISABLE_INTERRUPTS();
	printf("\nStack overflow!\n");
	while(1);
}
#endif

具体放在那个文件里,可以自己设定。

关注
打赏
1663745539
查看更多评论
立即登录/注册

微信扫码登录

0.0415s