打印
[STM32F4]

f407关于外设库使用v1.4版本和v1.5版本的报错的问题

[复制链接]
1076|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如题所示的,我在建一个f407标准的工程模板时候,那个libraries里面放的标准的外设库,就是STM32F4xx_StdPeriph_Driver文件夹里面的inc和src这两个文件夹里面的东西,一个用的是V1.40版本的,一个是V1.50版本的,
如上图所示,就是这里的libraries里面的这些文件一个是v1.4版本里面的,一个是v1.5版本里面的,如果是v1.4版本的里面的就什么错误都不报,但是如果要是使用v1.5的inc和src就会报错,显示identifier “RCC_APB1Periph_CEC”is undefine,建模板的时候,就是那些其他的main.c都是一样的,包括的把中断,还有conf这些文件,就是下图所示的,


都用v1.5版本的里面的,一样报错,只要把那个inc和src里面的文件换成1.4版本的里面的就没错了,这个事为什么呢,我把工程啥的上传一下,大大们帮看看这个,十分感谢
下面是附件,大家可以下载看下,我传百度网盘里面不行了,只好分割传了

f4系列.part01.rar (1023.44 KB)

f4系列.part02.rar (1023.44 KB)
f4系列.part03.rar (1023.44 KB)
f4系列.part04.rar (1023.44 KB)
f4系列.part05.rar (1023.44 KB)
f4系列.part06.rar (1023.44 KB)
f4系列.part07.rar (1023.44 KB)
f4系列.part08.rar (688.78 KB)

沙发
摩天轮1111|  楼主 | 2015-5-21 00:17 | 只看该作者
本帖最后由 摩天轮1111 于 2015-5-21 00:18 编辑

这里是百度网盘的地址,不知道能不能上传,大家这里下载就一个压缩文件pan.baidu.com/s/1o63LJHS 实在不得已为之,因为8个文件下栽类似人了,我这个也不是什么重要东西,只是希望能方便大神们下载帮我看下,所有这里把百度网盘的链接插这里了,把表情符号去掉就可以了,复制到地址栏里面

使用特权

评论回复
板凳
wowow| | 2015-5-21 09:15 | 只看该作者
原因:1.5.0增加了对F446的支持,而1.4.0没有。例如你说的RCC_APB1Periph_CEC, 在stm32f4xx_rcc.h里:
#if defined(STM32F446xx)
#define RCC_APB1Periph_CEC               ((uint32_t)0x08000000)
#endif /* STM32F446xx */
而你在keil项目属性C/C++里设的是:STM32F40_41xxx

简单解决办法:删掉编译不过去,又用不到的模块文件。至少有4个文件是这样的。
另外一个办法,在项目文件列表里右键点不打算编译的文件,选option for ....出来的对话,去掉included in targe build前面的勾。

注意:HAL lib本来就是选择性使用的。不管是用keil的pack,还是用stm32cubeMX生成项目,都可以只加入需要的lib文件。
如果是自己手动创建项目,或者copy的例程,就需要自己处理一下,设置一些条件编译,去掉不用的模块文件等等。

使用特权

评论回复
地板
wowow| | 2015-5-21 09:17 | 只看该作者
还有,下次打包上传前记得删掉编译的中间文件,例如你的Output目录

使用特权

评论回复
5
周董| | 2015-5-21 09:35 | 只看该作者
“删掉编译不过去,又用不到的模块文件。”这个看上去挺简单的。

使用特权

评论回复
6
摩天轮1111|  楼主 | 2015-5-21 15:38 | 只看该作者
wowow 发表于 2015-5-21 09:15
原因:1.5.0增加了对F446的支持,而1.4.0没有。例如你说的RCC_APB1Periph_CEC, 在stm32f4xx_rcc.h里:
#if ...

十分感谢,您所说甚是,让我对这个东西又有深一步的了解了,这里也把自己意识到的东西分享出来给大伙看看,我受之于他人,也要造福他人,首先,大家要是用的原子家的f407开发板,都该注意到,教程里面只是说了,要把stm32f4xx_fmc.c去掉

但是这个事v1.4版本的固件,其实用v1.5版本的固件也是一个道理,v1.5里面除了这个stm32f4xx_fmc.c文件之外还有其他的文件是v1.4里面没有的,是v1.5增加的对新的东西的支持用的,就是这四个文件

有心对比一下,发现其实v1.4版本的库里面是没有这四个文件的,这四个文件就是wowow大神说的,不是f407支持的东西,也要去掉,就和v1.4版本里面要去了stm32f4xx_fmc.c
一样,好了,谢谢大神指点

使用特权

评论回复
7
摩天轮1111|  楼主 | 2015-5-21 16:52 | 只看该作者
wowow 发表于 2015-5-21 09:15
原因:1.5.0增加了对F446的支持,而1.4.0没有。例如你说的RCC_APB1Periph_CEC, 在stm32f4xx_rcc.h里:
#if ...


另外又发现这里在f103中,使用的v3.5的固件,这里如果写错大小写了都不行,或者随便写的也是不行,

应该是和这里面有一句这个话有关给限制住了,
但是在f407中,这里 的情况是只要选的是f407,上面第一张图里面的那个后面那句话随便写,大小写,不写,stm32f40xxx,或者stm32f407xx,或者写stm32f3xxxx都可以,不写也能编译过去,但是只要写了stm32f446xx就会报错,我问题是这里的这个一句话也就是这个STM32F40_41xxx,到底有什么本质性的作用,是做什么用处的,为什么在f103的编译中这么在意这句话的大小写,这里f407的编译中这句话显的可有可无的样子。

使用特权

评论回复
8
摩天轮1111|  楼主 | 2015-5-21 17:38 | 只看该作者
本帖最后由 摩天轮1111 于 2015-5-21 17:39 编辑

https://bbs.21ic.com/icview-949424-1-1.html,我重新开了个帖子,发现一些问题,应该要去stm32f4xx.h这个头文件里面去找要在魔术棒的c++,的define里面填写的东西。但是不同的启动文件编译不会报错,这个对他们是不是没有影响还是就是mdk5,软件的bug?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

224

帖子

15

粉丝