STM32移植RTOS遇到的问题汇总
程序员文章站
2024-02-22 14:03:58
...
前言
这里用来记录在移植RTOS时碰到的一些问题。我使用的是正点原子的精英版,单片机是STM32F103ZET6。
编译错误
- 把RTOS按照教程移植之后,编译时报错:Symbol PendSV_Handler multiply defined (by port.o and stm32f10x_it.o).
该错误是说函数PendSV_Handler在port.c和stm32f10x_it.c中重复定义了。定位问题时发现在FreeRTOSConfig.h(该文件是从正点原子的例程中拿过来的)文件中有如下定义:
// An highlighted block
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
然后在port.c中有对函数xPortPendSVHandler和vPortSVCHandler的定义,这就导致在编译时会认为port.c中已经定义了PendSV_Handler和SVC_Handler。
而stm32f10x_it.c已经有对这两个函数的定义了,只不过都是空函数。
到这里我们已经定位到原因了,那怎么去解决呢? 既然FreeRTOSConfig.h是从例程中拿过来的,那么我们就去例程里看看以上两个C文件里这两个函数是否更改过。查阅后发现在例程中stm32f10x_it.c里已经把这两个空函数注释掉了,因此例程的编译不会出错。
至于这两个函数的用途,因为是刚开始学习,目前还不清楚。等到后边再来进一步解读吧。