关于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三个函数注释掉,则编译时不报错,但程序在硬件上运行不起来,烦请各高手指教!!!
RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题
stm32f10x_it.c中的中断处理是标准的。hal_cm3.c这个文件做什么的,注释到里面的定义看看。RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题
楼主的HAL_CM3是从哪里来的,把里面的SVC_Handler、PendSV_Handler、SysTick_Handler 注释掉才对,stm32f10x_it.C里面的中断函数时不能注释掉的。CMSIS里面的是 core_cm3.c,你看看hal_cm3是否是这个修改的呢?RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题
hal_cm3是什么函数,它和stm32f103_it有函数重复定义,你好好检查,还有你说的那个库文件,没法看底层,可能也会有重定义。RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题
这是函数重定义,因为你的相关头文件互相包含,导致相关定义多次被编译,导致MDK认为重定义了。建议重新梳理你的头文件,把重复包含的删掉
RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题
定义文件的问题。:DRE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题
既然是.o文件里链接出的问题,那么就说明.c文件里重复定义了同一个函数名称。把stm32f10x_it.c文件里的SVC_Handler、PendSV_Handler、SysTick_Handler三个函数注释掉
以上这个方法是可行的,说明你的程序还是有问题。跑不起来跟前面这个问题没关系
RE:关于stm32的SysTick_Handler()等中断处理函数的重复定义的问题
函数名被重复定义,因为你使用了RTX,stm32f10x_it.c中这几个函数你必须注释掉,要不RTX就没法运行了,如果不能运行应该是你的程序有点问题,是不是RTX没有正常初始化啊,或者你没用RTX却挂了它的库,不知道你程序啥样的。
页:
[1]