完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题。出现如下警告或错误提示: warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
这时候我们需要在“Target Options”中的“C/C++”选项卡中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。这样才能使编顺利通过。 知其然了,我们还得知其所以然。下面就一一道来。我们知道,程序的执行是从“main.c”文件开始的,其中必须包含有头文件“stm32f10x.h”。我们打开“stm32f10x.h”,按下“Ctrl+F”键,查找USE_STDPERIPH_DRIVER,在“Find What”栏中输入“USE_STDPERIPH_DRIVER”。点击“Find Next”,出现“USE_STDPERIPH_DRIVER”对应的代码行,重复上边操作三次,第三次的时候我们能在第8296-8298行找到 #ifdef USE_STDPERIPH_DRIVER #include "stm32f10x_conf.h" #endif 这段代码的意思是,只有用预编译指令预定义了“USE_STDPERIPH_DRIVER”,才会将"stm32f10x_conf.h"包含进“stm32f10x.h”中,从而被"main.c"用到。这就解释了,为什么我们没有在“main.c”中包含"stm32f10x_conf.h",而在编译之后却被包含进了"main.c"中。"stm32f10x_conf.h"文件相当于一个开关文件,如果要用到STM32固件库驱动标准外设,则外设驱动头文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我们通过代码 #include "stm32f10x_gpio.h" 来实现这个操作。 说到这儿估计大家已经对“USE_STDPERIPH_DRIVER”的来龙去脉有个清晰的认识了吧?其实单从字面意思理解就是“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。至于加入的“STM32F10X_HD“同样能在文件”stm32f10x.h“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。 另外需要注意的是,在使用不同版本库的时候,因为有所不同(当然包括MDK自带的库),所以我们需要在包含的时候一定要注意选对路径,免得不同版本之间的一些定义由于所处的文件不同而产生冲突。 摘抄地址:http://wojiushiwolxw.spaces.eepw.com.cn/articles/trackback/item/92844 谢谢博主! |
|
相关推荐
|
|
112 浏览 0 评论
971 浏览 1 评论
使用stm32l451片子,对ad7606进行3通道100k采样值跳动问题?
1429 浏览 1 评论
STM32进行DMA数据转运,为什么只有A组最后一位数据被转运到B组去?
1879 浏览 2 评论
2175 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-4 16:27 , Processed in 0.579984 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191