【转载】keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因
初学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“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。
转载于:https://www.cnblogs.com/qsyll0916/p/8052609.html
【转载】keil5中加入STM32F10X_HD,USE_STDPERIPH_DRIVER的原因相关推荐
- 代码规范:在Keil5中使用代码格式化工具Astyle(插件)
r如果日志提示没有被格式化,那么检查你的文件是不是有错误,编译一下,没错误的时候才能格式化 keil mdk都啥年代了每次更新还是都无法解决补全bug也不添加格式化工具 所以这里要用一个第三方插件ht ...
- Keil5中No Cortex-M4 SW Device Found 解决方法
Keil5中No Cortex-M4 SW Device Found 解决方法 项目场景: 单片机设计:画原理图的时候为了使布线方便,使用了jlink的引脚.而STM32默认是设置为Jlink功能的, ...
- STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解)
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- OpenCV中initUndistortRectifyMap函数存在bug原因探究
原文首发于公众号「3D视觉工坊」:OpenCV中initUndistortRectifyMap函数存在bug原因探究. 最近在运行如下一段代码时,生成的mapx和mapy有点异常. 代码片段如下: # ...
- 微服务架构中的雪崩问题产生原因及解决办法
微服务架构中的雪崩问题产生原因及解决办法 参考文章: (1)微服务架构中的雪崩问题产生原因及解决办法 (2)https://www.cnblogs.com/panchanggui/p/10330924 ...
- 网络营销外包浅析网络营销外包中网站排名效果不佳的原因有哪些?
在网络营销外包之中站长在定期监测网站排名效果时发现网站排名效果不佳,这意味着网站排名优化工作的某些环节出现问题,导致网站排名优化效果不明显,这让站长十分头疼,毕竟每天坚持优化却依然没有排名效果,这究竟 ...
- [转载]C#中实现强制整除 来源:网络
[转载]C#中实现强制整除 来源:网络 两个int型数相除(/)为整除,自动舍弃小数部分:而double型相除则不然,结果的值四舍五入. -------- 如果/運算符中兩個操作數 ...
- matlab作动态函数曲线图,[转载]Matlab中使用Plot函数动态画图方法总结
本帖最后由 sonictl 于 2012-12-31 12:18 编辑 请删除我 清楚超靠靠靠 没办法,一会儿限制这不能发表,那不能发表的.... [转载]Matlab中使用Plot函数动态画图方法总 ...
- 【Java文件操作(五)】从txt文件中读取字符串、乱码原因
我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...
最新文章
- 12步轻松搞定python装饰器
- VM虚拟机下配置centos linux系统
- Redis(三)、支持数据类型及常用操作命令
- 刚刚,“国民”APP微信崩了!官方致歉:已经逐步恢复
- 如何在Mac系统清理 “其他” 中文件和数据
- 11.看板方法---建立服务水平协议
- 洛谷P1120【小木棍】(搜索+剪枝)
- 小白玩IT记录之MySQL:Centos完全卸载MySQL
- Ubuntu安装和显卡驱动安装
- 教你用3DMAX打造个性鲜明卡通角色
- tkinter让用户选择文件并返回可读取文件绝对地址
- mimax 刷原生android,小米手机想爽刷原生安卓?不愁!
- 用计算机算出别人多少岁,年龄计算器 年龄计算器查询
- 超给力,一款程序员必备的 996 代码工作量分析工具
- 生活小常识日常生活小常识
- shiro登陆错误回顾
- 数据库同步有哪些方式?【怎么保障目标和源数据一致性】
- 软件工程——软件开发阶段(概要设计、详细设计)
- “SqlSession[xxx] was not registered for synchronization because synchronization is not active”问题成功解决
- LCD Keypad Shield
热门文章
- pymssql mysql_Python利用pymssql访问mysql数据库
- php 四维数组_PHP 多维数组
- 计算机基础及ms应用在线,全国一级计算机基础及MS Office应用课件 (2).pdf
- mysql如何设置多节点_详细介绍Mysql5.7从节点设置多线程主从复制的办法
- linux 内存取证_【取证流程】电子数据证据远程勘验
- 淘宝代码和html区别,taobao.html
- 【C++基础】模板基础与函数模板
- LeetCode 257. 二叉树的所有路径 思考分析
- Java RandomAccessFile close()方法与示例
- php中对ASCII码的处理ord() 、chr()