专栏中心

EEPW首页 > 专栏 > 关于stm32 keil编译报错:error: #256

关于stm32 keil编译报错:error: #256

发布人:电子禅石 时间:2019-11-11 来源:工程师 发布文章

... /Keil/ARM/INC/ST/STM32F10x/stm32f10x_type.h(23): error: #256: invalid redeclaration of type name "s32" (declared at line 470 of " ... /stm32f10x.h")”

或者

.. \CMSIS\core_cm3.h(264): warning:  #47-D: incompatible redefinition of macro "SCS_BASE" (declared at line 687 of " C: \Keil\ARM\INC\ST\STM32F10x\stm32f10x_map.h")

之类的报错,这里以第一种报错为例说明一下,第二种也大同小异

这个问题一般出现在移动库,或者将两个程序合并的时候报错

原因是旧版的库与新版的库发生冲突了,冲突的原因是旧版和新版都定义了同一个东西,比如“s32”,于是就会发生重定义的报错

解决这个问题的方法其实也不难,因为编写程序的时候有一个防止重定义的宏,在新版的库里面添加这样的一个宏就可以消除大部分的错误了

我们先找到从定义的地方,双击错误跟踪到报错的地方我们可以看到这里就是type定义的地方,看到上面有一个“#ifndef __STM32F10x_TYPE_H”,这个就是旧版的宏,只要将这个宏在新版的相应位置定义一下就好

image.png

到新版的库文件中,注意要消除只读的设置,从错误来看,是“s32”发生了重定义,那么就是说,新版的库应该也是有“s32”的定义,于是用搜索功能,找到“s32”定义的地方

image.png

1573709588909281.png1573709604934757.png

然后在这个定义的上方补充定义这个宏就可以解决一部分的问题了,添加这样一段

#ifndef __STM32F10x_TYPE_H//补充定义旧版的宏

#define __STM32F10x_TYPE_H

#endif

1573709643255119.png

#47-D: incompatible redefinition of macro "SCS_BASE"  的错误解决方法也差不多,补充定义旧版宏即可解决大部分问题,这次是在core_cm3.c文件中,注意解锁

1573709667557789.png

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

51系列单片机双CPU系统通信方法

美军导弹武器低成本化的途径与方式

视频 2010-01-14

51与ADC0809做单通道采集

68HC908JB8单片机及其在USB外设系统中的应用

网络中心战中的无人机系统

视频 2010-01-14

C54x DSP CPU和外设 中文版

资源下载 2007-02-16

POL转换器为AI芯片中日益增多的电源轨供电

2026-04-08

透明人机界面:Nanomade 与 PolyIC 推出压力与触控感应薄膜

2026-04-08

电动汽车提供乘客供电的电池充电子系统

天基信息的新力量—小卫星

视频 2010-01-14

三星电子美国泰勒厂启动EUV光刻机调试

2026-04-08

X系列技术验证机:现代飞行器的先行者

视频 2010-01-14

曲面显示屏取代传统汽车挡风玻璃

英特尔先进封装技术迎收获期 与谷歌亚马逊洽谈 AI 芯片封装合作

Numonyx Axcell M29EW:更快的编程速度与更强的安全性

视频 2010-01-14

5x系列芯片的复位入口问题

深圳存储主控芯片厂商得一微电子重启IPO

2026-04-08

三星电机向苹果和博通提供半导体玻璃基板样品

三安光电旗下光通信业务取得突破

2026-04-08

四川晶导微电子功率半导体(IDM)内江基地项目(一期)预计10月底交付

2026-04-08
更多 培训课堂
更多 焦点
更多 视频

技术专区