梅子-395796 发表于 2013-9-13 10:23:07

关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

项目工程里使用了RTX实时内核,包含了RTX.lib的库文件,其它关于添加文件到工程目录,初始化等都按常规方式操作,最后编译说提示如下错误信息:
linking...
.\STM3210E-EVAL\STM3210E-EVAL.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by hal_cm3.o and stm32f10x_it.o).
.\STM3210E-EVAL\STM3210E-EVAL.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by hal_cm3.o and stm32f10x_it.o).
.\STM3210E-EVAL\STM3210E-EVAL.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by hal_cm3.o and stm32f10x_it.o).
.\STM3210E-EVAL\STM3210E-EVAL.axf: Not enough information to list image symbols.
.\STM3210E-EVAL\STM3210E-EVAL.axf: Not enough information to list the image map.
.\STM3210E-EVAL\STM3210E-EVAL.axf: Finished: 2 information, 0 warning and 3 error messages.
Target not created

      把stm32f10x_it.c文件里的SVC_Handler、PendSV_Handler、SysTick_Handler三个函数注释掉,则编译时不报错,但程序在硬件上运行不起来,烦请各高手指教!!!

winamp123 发表于 2013-9-13 10:34:01

RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

stm32f10x_it.c中的中断处理是标准的。hal_cm3.c这个文件做什么的,注释到里面的定义看看。

fengye5340 发表于 2013-9-13 10:55:38

RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

楼主的HAL_CM3是从哪里来的,把里面的SVC_Handler、PendSV_Handler、SysTick_Handler 注释掉才对,stm32f10x_it.C里面的中断函数时不能注释掉的。CMSIS里面的是 core_cm3.c,你看看hal_cm3是否是这个修改的呢?

发表于 2013-9-13 13:01:33

RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

hal_cm3是什么函数,它和stm32f103_it有函数重复定义,你好好检查,还有你说的那个库文件,没法看底层,可能也会有重定义。

wenshijian 发表于 2013-9-13 16:56:15

RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

这是函数重定义,因为你的相关头文件互相包含,导致相关定义多次被编译,导致MDK认为重定义了。
建议重新梳理你的头文件,把重复包含的删掉

zykzyk-93033 发表于 2013-9-14 09:05:05

RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

定义文件的问题。:D

dzc2001 发表于 2013-9-14 15:49:55

RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

既然是.o文件里链接出的问题,那么就说明.c文件里重复定义了同一个函数名称。
把stm32f10x_it.c文件里的SVC_Handler、PendSV_Handler、SysTick_Handler三个函数注释掉
以上这个方法是可行的,说明你的程序还是有问题。跑不起来跟前面这个问题没关系

story_xjj 发表于 2013-9-16 14:44:36

RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题

函数名被重复定义,因为你使用了RTX,stm32f10x_it.c中这几个函数你必须注释掉,要不RTX就没法运行了,如果不能运行应该是你的程序有点问题,是不是RTX没有正常初始化啊,或者你没用RTX却挂了它的库,不知道你程序啥样的。
页: [1]
查看完整版本: 关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题