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

STM32F103编译问题

[复制链接]
hqw 提问时间:2018-3-31 16:47 /
..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h(521): error:  #40: expected an identifier
  typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h(521): error:  #40: expected an identifier
  typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h(524): error:  #40: expected an identifier
  typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h(524): error:  #40: expected an identifier
  typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
..\..\User\mcu_sdk\mcu_api.c: 0 warnings, 4 errors



在mcu_api.c  里屏敝以下,则编译能过。
//#include "stm32f10x_gpio.h"               //   david
void wifi_uart_service(void)
{

  static unsigned short rx_in = 0;
  unsigned short offset = 0;
  unsigned short rx_value_len = 0;             //Êý¾ÝÖ¡³¤¶È
                    // GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_6)));


desk(改自空气净化器) - 0331 - FAE.zip

下载

4.5 MB, 下载次数: 9, 下载积分: ST金币 -1

<
收藏 评论11 发布时间:2018-3-31 16:47

举报

11个回答
zhang547886405 回答时间:2018-3-31 18:56:44
应该是你 “wifi.h"文件里面SUCCESS、ERROR、ENABLE、DISABLE这四个宏定义和stm32f10x.h文件里面的typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;定义重复了。enum和#define、typedef三者之间定义同名宏定义都会产生冲突,就会报这个错

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

toofree 回答时间:2018-3-31 22:33:43
本帖最后由 toofree 于 2018-3-31 22:36 编辑

你的“mcu_api.c”文件中少了包含一个库 #include "include.h"

因为在stm32f10x.h和wifi.h中都有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义,但是在定义之前先判断的之前有没有定义。由于你没有包含"include.h"文件,所以认为你没有定义,而重定义了这4个宏定义。而实际你在其它文件中又用到了“stm32f10x.h”中的相关定义,因此产生冲突。

附件的工程已经为了改过来了,请笑纳。
desk(改自空气净化器) - 0331 - FAE-toofree 修改.rar (3.72 MB, 下载次数: 10)

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

butterflyspring 回答时间:2018-4-2 10:37:21
厉害了.........
hqw 回答时间:2018-4-3 19:47:03
toofree,我下载你改好的来试了。真的OK了。看来我真是问对地方了,你一出手就解决了我几天都无法弄懂得东西,感谢之余,也深感佩服。
   里面还有个报警,有时间也帮看下,谢谢
..\..\User\mcu_sdk\system.c(433): warning:  #167-D: argument of type "volatile unsigned char *" is incompatible with parameter of type "unsigned char *"
        mcu_write_rtctime(wifi_uart_rx_buf + offset + DATA_START);
..\..\User\mcu_sdk\system.c: 1 warning, 0 errors

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

hqw 回答时间:2018-4-3 20:07:14
zhang547886405,你分析的没错,也谢谢你的指教
toofree 回答时间:2018-4-3 22:09:16
hqw 发表于 2018-4-3 19:47
toofree,我下载你改好的来试了。真的OK了。看来我真是问对地方了,你一出手就解决了我几天都无法弄懂得东西 ...

这个是指针类型不同的警告,你可以用强到类型转换一下,就好了。
jjbboox 回答时间:2018-4-4 08:40:45
本帖最后由 jjbboox 于 2018-4-4 08:42 编辑

ENABLE和DISABLE是不是在其他头文件中定义过了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

hqw 回答时间:2018-4-4 20:19:31
toofree,你好,关于我第一次发帖请教不能编译成功的问题,我还想弄清楚些。

方法1:#include "include.h"        //20180331Íí£¬Ìí¼Ó´ËÐУ¬STÉçÇøtoofree
#include "wifi.h"

按上面这样改,可以编译成功,如果两者调个先后(如下方法2),就不能编译。不知如何解释?
方法2:
#include "wifi.h"
#include "include.h"        //20180331Íí£¬Ìí¼Ó´ËÐУ¬STÉçÇøtoofree

上次,我的原项目是不能编译成功的,你按方法1改后可以编译成功。你的解释是:因为在stm32f10x.h和wifi.h中都有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义,但是在定义之前先判断的之前有没有定义。由于你没有包含"include.h"文件,所以认为你没有定义,而重定义了这4个宏定义。而实际你在其它文件中又用到了“stm32f10x.h”中的相关定义,因此产生冲突。
   我现在对了下,其实wifi.h中根本就没有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义。那就不存在在stm32f10x.h和wifi.h中都有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义的问题。那不能编译原因是什么呢?
   我再把你上次改好的项目附上。有空麻烦再分析下,不胜感谢了。



desk(改自空气净化器) - 0331 - FAE-toofree 修改.rar

下载

3.72 MB, 下载次数: 0, 下载积分: ST金币 -1

hqw 回答时间:2018-4-9 15:18:31
toofree 发表于 2018-3-31 22:33
你的“mcu_api.c”文件中少了包含一个库 #include "include.h"

因为在stm32f10x.h和wifi.h中都有关于 SUCC ...

toofree,你好,关于我第一次发帖请教不能编译成功的问题,我还想弄清楚些。

方法1:#include "include.h"        //20180331Íí£¬Ìí¼Ó´ËÐУ¬STÉçÇøtoofree
#include "wifi.h"

按上面这样改,可以编译成功,如果两者调个先后(如下方法2),就不能编译。不知如何解释?
方法2:
#include "wifi.h"
#include "include.h"        //20180331Íí£¬Ìí¼Ó´ËÐУ¬STÉçÇøtoofree

上次,我的原项目是不能编译成功的,你按方法1改后可以编译成功。你的解释是:因为在stm32f10x.h和wifi.h中都有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义,但是在定义之前先判断的之前有没有定义。由于你没有包含"include.h"文件,所以认为你没有定义,而重定义了这4个宏定义。而实际你在其它文件中又用到了“stm32f10x.h”中的相关定义,因此产生冲突。
   我现在对了下,其实wifi.h中根本就没有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义。那就不存在在stm32f10x.h和wifi.h中都有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义的问题。那不能编译原因是什么呢?
   我再把你上次改好的项目附上。有空麻烦再分析下,不胜感谢了。
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版