[STM32F1] 编译出错

[复制链接]
8058|14
 楼主| y619 发表于 2014-8-15 15:24 | 显示全部楼层 |阅读模式
..\..\Libraries\CMSIS\stm32f10x.h(298): error:  #67: expected a "}"
    ADC1_2_IRQn                 = 18,     /*!< ADC1 and ADC2 global Interrupt                       */
..\..\Libraries\CMSIS\stm32f10x.h(472): warning:  #12-D: parsing restarts here after previous syntax error
  } IRQn_Type;
..\..\User\main.c: 1 warning, 1 error
"..\..\User\main.c" - 1 Error(s), 1 Warning(s).
为什么会这样,我装的是MDK5.10版本,为什编译会出错,求指教
airwill 发表于 2014-8-15 16:20 | 显示全部楼层
打开你的 stm32f10x.h   看看(298)行, 是不是让你改掉了?
 楼主| y619 发表于 2014-8-15 17:28 | 显示全部楼层
airwill 发表于 2014-8-15 16:20
打开你的 stm32f10x.h   看看(298)行, 是不是让你改掉了?

是这样的,高密度的可以,中密度的就不行了,这是为什么,我刚才是这样解决的,我想请教一下您为什么会这样
 楼主| y619 发表于 2014-8-15 17:28 | 显示全部楼层
airwill 发表于 2014-8-15 16:20
打开你的 stm32f10x.h   看看(298)行, 是不是让你改掉了?

我再试试您说的
mmuuss586 发表于 2014-8-15 19:46 | 显示全部楼层
啥叫高密度可以,中密度不行啊?

应该是,你使用了大容量FLASH里STM32的寄存器,实际使用的是中容量的STM32芯片吧;
改了下就可以;
lifeng202 发表于 2014-8-16 17:34 | 显示全部楼层
#ifdef STM32F10X_HD
  ADC1_2_IRQn                 = 18,     /*!< ADC1 and ADC2 global Interrupt                       */
  USB_HP_CAN1_TX_IRQn         = 19,     /*!< USB Device High Priority or CAN1 TX Interrupts       */
  USB_LP_CAN1_RX0_IRQn        = 20,     /*!< USB Device Low Priority or CAN1 RX0 Interrupts       */

我也是遇到这个问题,是以前的版本用5.0的打开,这是298行的,有什么不对吗
 楼主| y619 发表于 2014-8-17 10:25 | 显示全部楼层
mmuuss586 发表于 2014-8-15 19:46
啥叫高密度可以,中密度不行啊?

应该是,你使用了大容量FLASH里STM32的寄存器,实际使用的是中容量的STM3 ...

额,初学,请教一下,我现在用的是3.5.0的库,5.1.0的MDK,我要用STM32103c8这款芯片,但是建工程的时候,选芯片只能选103RC以下的芯片建工程的时候编译才不出错,请教这是为什么?谢谢
 楼主| y619 发表于 2014-8-17 10:26 | 显示全部楼层
lifeng202 发表于 2014-8-16 17:34
#ifdef STM32F10X_HD
  ADC1_2_IRQn                 = 18,     /*!< ADC1 and ADC2 global Interrupt      ...

我也是这个问题,改不了头文件的,那上面有个钥匙,ST公司自己写的,请教你用的芯片型号是?
mmuuss586 发表于 2014-8-17 11:20 | 显示全部楼层
y619 发表于 2014-8-17 10:25
额,初学,请教一下,我现在用的是3.5.0的库,5.1.0的MDK,我要用STM32103c8这款芯片,但是建工程的时候 ...

刚好我有个产品用的也是C8;
这是我的设置:
捕获.JPG
 楼主| y619 发表于 2014-8-18 09:47 | 显示全部楼层
mmuuss586 发表于 2014-8-17 11:20
刚好我有个产品用的也是C8;
这是我的设置:

在这里再次感谢您~
yht7891984 发表于 2015-3-4 14:23 | 显示全部楼层
一定要选对器件型号.
三又二分之一7 发表于 2015-9-22 15:44 | 显示全部楼层
正确的解决方法:
在C/C++选项卡里,把STM3210X_HD从prepocessor symbol define 里面删掉`(*∩_∩*)′

这么做的原因:在老版本的官方STM32F10X.H文件里,这句话不是这么写的,若没记错的话,是
...&&!defined(STM32F10X_HD) && ...
原来是有括号的,不做标识符来处理,而新版的,如图,直接说明了出来,那就没有必要,可以根据C/C++知识自己去推断;

具体可以看搜“[STM32系列贴-初级]之STM32F10X工程建立详细过程及问题解决”,去看
xml2028 发表于 2017-2-19 23:18 | 显示全部楼层
三又二分之一7 发表于 2015-9-22 15:44
正确的解决方法:
在C/C++选项卡里,把STM3210X_HD从prepocessor symbol define 里面删掉`(*∩_∩*)′

就是这样的,我按照您的建议修改后就正确编译了
shanfei_ts 发表于 2020-7-21 10:58 | 显示全部楼层
三又二分之一7 发表于 2015-9-22 15:44
正确的解决方法:
在C/C++选项卡里,把STM3210X_HD从prepocessor symbol define 里面删掉`(*∩_∩*)′

谢谢!按您的方法解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部