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

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, 下载次数: 11, 下载积分: ST金币 -1

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

举报

11个回答
流水白菜 回答时间: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

查看全部评分

七哥 回答时间: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, 下载次数: 12)

评分

参与人数 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,你分析的没错,也谢谢你的指教
七哥 回答时间: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的定义的问题。那不能编译原因是什么呢?
   我再把你上次改好的项目附上。有空麻烦再分析下,不胜感谢了。
七哥 回答时间:2018-4-9 15:39:51
本帖最后由 toofree 于 2018-4-9 15:43 编辑
我现在对了下,其实wifi.h中根本就没有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义。那就不存在在stm32f10x.h和wifi.h中都有关于 SUCCESS、ERROR、ENABLE、DISABLE的定义的问题。那不能编译原因是什么呢?

  这是C语言功底的问题,你要这么说,那我也没办法了。先学习一下C语言吧。
傲游截图20180409154143.png






hqw 回答时间:2018-4-12 12:54:20
toofree 发表于 2018-4-9 15:39
这是C语言功底的问题,你要这么说,那我也没办法了。先学习一下C语言吧。

toofree,是,你说的是对的。多谢了

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版