关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
来源:互联网 发布:淘宝投诉外观专利侵权 编辑:程序博客网 时间:2024/04/30 03:08
原文地址:http://blog.csdn.net/xingzhewalker/article/details/6929804
初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题。出现如下警告或错误提示:
warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
这时候我们需要在“Target Options”中的“C/C++”选项卡中如图-2所示红框中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。这样才能使编顺利通过。
图-2
知其然了,我们还得知其所以然。下面就听Herison给大家一一道来。我们知道,程序的执行是从“main.c”文件开始的,其中必须包含有头文件“stm32f10x.h”。我们打开“stm32f10x.h”,按下“Ctrl+F”键,查找USE_STDPERIPH_DRIVER,在“Find What”栏中输入“USE_STDPERIPH_DRIVER”。如图-3所示。点击“Find Next”,出现“USE_STDPERIPH_DRIVER”对应的代码行,重复上边操作三次,第三次的时候我们能在第8296-8298行找到如图-4所示代码段。
图-3
图-4
这段代码的意思是,只有用预编译指令预定义了“USE_STDPERIPH_DRIVER”,才会将"stm32f10x_conf.h"包含进“stm32f10x.h”中,从而被"main.c"用到。这就解释了,为什么我们没有在“main.c”中包含"stm32f10x_conf.h",而在编译之后却被包含进了"main.c"中,出现如图-5所示的情况。 "stm32f10x_conf.h"文件相当于一个开关文件,如果要用到STM32固件库驱动标准外设,则外设驱动头文件是必不可少的,如“stm32f10x_gpio.h”。在"stm32f10x_conf.h"中我们通过代码#include "stm32f10x_gpio.h"来实现这个操作。
图-5
说到这儿估计大家已经对“USE_STDPERIPH_DRIVER”的来龙去脉有个清晰的认识了吧?其实单从字面意思理解就是“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。至于加入的“STM32F10X_HD“同样能在文件”stm32f10x.h“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释(转)
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题及 STM32F10X_LD STM32F10X_MD STM32F10X_HD STM32F10X_CL宏定义的选择
- STM32的USE_STDPERIPH_DRIVER
- MDK设置中USE_STDPERIPH_DRIVER,STM32F10X_HD含义
- STM32标准外设库中USE_STDPERIPH_DRIVER, STM32F10X_MD的含义
- STM32标准外设库中USE_STDPERIPH_DRIVER, STM32F10X_MD的含义
- stm32标准外设库中USE_STDPERIPH_DRIVER, STM32F10X_MD的含义
- STM32(MDK)中不能使用printf()函数的问题
- stm32 加入 USE_STDPERIPH_DRIVER、STM32F10X_HD的原因
- stm32 加入 USE_STDPERIPH_DRIVER、STM32F10X_HD的原因
- STM32 在MDK SRAM调试的问题
- 关于正点原子STM32的MDK例程移植到IAR中遇到的错误解决方法 __use_no_semihosting
- 11g 设置memory_target参数
- 【GamingAnywhere源码分析之知识补充零】Detour开发包之API拦截技术【转载】
- Kernel Source片段 -- 收包(2)软中断处理函数
- Java的垃圾回收之算法
- Error 1402. Could not open key UNKNOWN\Components\.... Verify that you have sufficient access to tha
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- EVENT: 10046 "enable SQL statement tracing (including binds/waits)" (文档 ID 21154.1)
- 不用检测软件如何查看电脑硬件的配置?
- POSIX 互斥锁
- Spring AOP + 自定义注解实现Session的验证
- QString 类
- HDU 1114(完全背包)
- 以太网帧长度 64 octet
- python *args和**kwargs