OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 38626|回复: 7

绝对牛X 的问题,关于STM32F407的那些事,一般人我不告诉他!

[复制链接]

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2013-9-4
在线时间
11 小时
发表于 2014-12-13 12:50:20 | 显示全部楼层 |阅读模式
5金钱
..\USER\stm32f4xx.h(89): warning:  #47-D: incompatible redefinition of macro "STM32F40_41xxx"

查不出原因 用的是MDK 5.11 
原子的设置与我的 基本一样,但是没用他们的 模板!魔法棒 里 设置 也是一样的!用的是原子STM32F407ZG 的板子
都是说重定义,问题,但是
有人说STM32F40XX,USE_STDPERIPH_DRIVER,__FPU_USED    可能有的版本没问题,有的无问题,但是我的有问题,
STM32F40_41xxx,USE_STDPERIPH_DRIVER,__FPU_USED
都不行,都报错,还有我想知道为什么,而不是把这个警告去了!

有人用MDK5.12 编译提示少 两个文件,这两个文件可能是在MDK5.11A 中内部集成了!而在MDK 5.12A 中 可能没集成  Core_cmFunc.h 和 Core_cmInstr.h 我没用5.12试过,
有人说MDK5.12 包含 这两个文件就好了,可是,为什么呢?

现在问题是 ,两个里面的内容都是相互复制的,都是一样的设置,但是一个有警告 ,一个没警告,为什么呢?除名字不一样外,其他都一个,同一个开发环境MDK5.11A!!

请牛人 看看
!!!

wujinggao.rar

543.2 KB, 下载次数: 1521

youjinggao.rar

538.94 KB, 下载次数: 1320

最佳答案

查看完整内容[请看2#楼]

回复【2楼】Tenux开源嵌入式操作系统社区: --------------------------------- 又用楼主使用的MDK 5.11编译了,确实youjinggao.zip那个有警告,wujinggao.zip那个无警告。 原因在于youjinggao.zip的工程中,在Target那个Sheet中,多了一个STM32F40xx的符号定义。 修改方法:只要在Target设置中,先更换一下其他芯片,再更换回来,这个符号就自动去掉了,结果就好了。 !@如果觉得我很牛,欢迎使用商业级质量的开源嵌入式操 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-12-13
在线时间
0 小时
发表于 2014-12-13 12:50:21 | 显示全部楼层
回复【2楼】Tenux开源嵌入式操作系统社区:
---------------------------------
又用楼主使用的MDK 5.11编译了,确实youjinggao.zip那个有警告,wujinggao.zip那个无警告。

原因在于youjinggao.zip的工程中,在Target那个Sheet中,多了一个STM32F40xx的符号定义。

修改方法:只要在Target设置中,先更换一下其他芯片,再更换回来,这个符号就自动去掉了,结果就好了。

!@如果觉得我很牛,欢迎使用商业级质量的开源嵌入式操作系统内核-uTOS,支持12个厂商的ARM7、9、Cortex M0、3、4内核芯片,采用GIT方式开放开发,
官网:www.tenux.org
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-12-13
在线时间
0 小时
发表于 2014-12-13 20:52:04 | 显示全部楼层
首先在MDK 5.10编译楼上的两个帖子,都有一样的警告信息,不存在那个有警告,那个没有警告的现象。

另外,查看了一下工程,警告产生的原因找到了,说明如下:
1、KEIL会根据在Device sheet中选择的芯片产生一个芯片系列的定义符号,现在的定义符号就是STM32F40XX,
   从工程Option的Compiler Control String文本框中可以看到,如果更换其他芯片系列,可以观察到这个符号定义就会发生变化。

2、不需要自己再定义STM32F40_41xxx符号,因为在stm32f4xx.h中已经有一下的语句:
     #ifdef STM32F40XX
    #define STM32F40_41xxx
     #endif /* STM32F40XX */

3、最后,产生警告的原因就是因为在KEIL中定义了STM32F40_41xxx
     符号,而stm32f4xx.h又有定义,所以,出现警告。
     解决方法是删除KEIL中的STM32F40_41xxx符号定义。





回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2015-10-27 21:52:19 | 显示全部楼层
回复【3楼】Tenux开源嵌入式操作系统社区:
---------------------------------
果然是大神(我也是遇到这个问题,只不过我是在2个版本上跑同一个文件,1个是4.72,1个是5.11)
电子爱好者
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2014-12-27
在线时间
17 小时
发表于 2016-1-25 15:10:07 | 显示全部楼层
果然是大牛
回复

使用道具 举报

4

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-1-25
在线时间
16 小时
发表于 2019-2-20 12:18:44 | 显示全部楼层
Tenux开源嵌入式操作系统社 发表于 2014-12-13 12:50
**** 作者被禁止或删除 内容自动屏蔽 ****

网站都挂了,还商业呢
诚交各路大侠
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-3-26
在线时间
2 小时
发表于 2022-6-16 09:05:35 | 显示全部楼层
原理是不同PACK间的重复宏定义, 解决办法就是下载新的 PACK包,一般新PACK包编译能通过无错误,放到安装旧版PACK包里就会重定义。安装个新PACK包就好了,前提是和KEIL版本配套的PACK包。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2022-3-26
在线时间
2 小时
发表于 2022-6-16 09:12:25 | 显示全部楼层
Yorke 发表于 2022-6-16 09:05
原理是不同PACK间的重复宏定义, 解决办法就是下载新的 PACK包,一般新PACK包编译能通过无错误,放到安装旧 ...

多说一句,原子F407配套的PACK包是1.8的 我用2.20版的PACK包编译就无错,用原子1.8的 就有错,2.20版本依然与KEIL5.14配套。这就是最低层原因。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 15:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表