历史上的今天
今天是:2025年01月02日(星期四)
2020年01月02日 | keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因
2020-01-02 来源:eefocus
初学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“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:43 编辑 基于PROTEUS的俄罗斯方块 [ 本帖最后由 open82977352 于 2010-9-17 08:37 编辑 ] … 查看全部问答> |
|
我想把PAL制式的视频信号经过视频AD后转换成数字的,然后显示在2.4存的小液晶上,可是对图像不怎么了解,但是又很想弄,希望高手给点意见。深表感谢!!!… 查看全部问答> |
|
我的机子装不了eVC4,安装到配置wince platform manager 4.0 时,电脑就卡住了 就鼠标还可以动 重启后就出现未识别的硬件和硬件安装向导, 提示什么虚拟PC的 只要安装也就卡机了. 这是怎么回事? 我电脑是SP3的,台式机一样的系统都安装 ...… 查看全部问答> |
|
明基 M23的AT+GNC指令都能得到那些基站的信息呢?专业人士请指教! 我需要使用手机邻近的几个基站的位置信息,但是不知道通过M23 GPRS模块的 AT+GNC指令能否得到位置信息呢,下面是使用这个指令之后可能得到的一个结果,请专业人士指教一下每组16进制的数的含义都是什么呢,从其中能得到位置信息么? 如果不能得话 ...… 查看全部问答> |
|
我使用SPI2操作M25P64,在写M25P64的时候,如果使用软件发送,读回来的数据是正确的,但是如果使用DMA发送数据即不正确。读回来的数据是0xff.下面是写M25P64的代码,帮忙看看是什么问题?是不是发送用DMA时没有对时钟进行控制,造成对SPI2写溢 ...… 查看全部问答> |
|
关于PIC32MX320F128L单片机的RTCC和计时器功能 各位高手好: 小弟最近做一个监控,选择了PIC32MX320F128L单片机: 计时要求如下: 1. 1.系统持续主电工作48h后每隔30(+/-2)d应能自动由主电路工作状态转入应急工作状态并持续30s~180s,然后自动回复到主 ...… 查看全部问答> |




