你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
梅子-395796 提问时间:2013-9-13 10:23 /
项目工程里使用了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三个函数注释掉,则编译时不报错,但程序在硬件上运行不起来,烦请各高手指教!!!

收藏 1 评论8 发布时间:2013-9-13 10:23

举报

8个回答
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()等中断处理函数的重复定义的问题

定义文件的问题。
dzc2001 回答时间:2013-9-14 15:49:55

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

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

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

函数名被重复定义,因为你使用了RTX,stm32f10x_it.c中这几个函数你必须注释掉,要不RTX就没法运行了,如果不能运行应该是你的程序有点问题,是不是RTX没有正常初始化啊,或者你没用RTX却挂了它的库,不知道你程序啥样的。
fczjj 回答时间:2022-9-21 10:49:20
1111111111111

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版