专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
include
和#include
有什么不同,什么时候用哪个,详细点?
2019-07-21 04:03
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
4877
41
1078
#include<stm32f10x_lib.h>和#include<stm32f10x.h>有什么不同,什么时候用哪个,详细点,服务态度也太差了,问两个问题爱说不说,就是不懂才问啊,懂了还问你吗
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
正点原子
1楼-- · 2019-07-21 06:11
楼主典型的一人爽歪歪,别人累半死。
重复性的问题,如果10个人问,我要回答10次,1000个人问,我要回答1000次。
如果论坛问了,我发帖子给提问者,不就OK了么?
我要你论坛提问的目的就在这里,个中关系请看此帖:
http://www.openedv.com/posts/list/657.htm
楼主问了很多很简单的问题:比如,如何在MDK下,打开一个头文件,楼主不知道(PS:我们教程教了的,见《不完全手册V2.3》第83页)。 比如,README在哪里,找不到,不会找。 其他一些电路基础问题,我就不说了。
我认为这些问题,你应该自己知道找答案,然后,好不容易问了一个有点共性的问题,让楼主来论坛发个帖子,方便别的初学者了解,很明显,楼主貌似很不情愿。
好了,说问题。 #include<stm32f10x_lib.h>和#include<stm32f10x.h>的区别,这确实是个好问题,所以在这里好好解答一下。 首先,我们看#include<stm32f10x_lib.h>这个头文件。 #include<stm32f10x_lib.h>是ST公司V2.0的库函数使用的头文件,用MDK3.80A,打开Mini板例程-扩展实验1 自定义汉字显示实验,如图1所示:
图1 stm32f10x_lib.h
只要你善于观察,这个图片,告诉我们好几个信息了:
1,文件的路径,也就是stm32f10x_lib.h,到底是在哪个位置,在图中1处就告诉你了。
2,文件的版本,图中2处,说明了,这是V2.0.1版本。
3,该文件包含的一些内容,也就是图中3处的内容。
图1,我们是用MDK3.80A打开的Mini板例程,因为MDK3.80A自带了这些头文件,所以可以打开。
但是,如果你用MDK4.7/MDK5打开,就没法找到了,这也就是为什么,我们老版本的例程,存在高版本的MDK编译的时候,报找不到stm32f10x_lib.h的错误的原因了。
而stm32f10x_lib.h里面,我们经过分析,实际可以用:stm32f10x_map.h和stm32f10x_nvic.h来替代,所以新版本的Mini板例程,都是用这两个替代stm32f10x_lib.h了,而
为了避免不同编译器,可能不会带这两个文件,而报错的问题,我们将这些相关头文件统一拷贝到了例程SYSTEMsys文件夹下,如图2所示:
图2 SYSTEMSYS 文件夹里面的内容
所以,Mini板的最新例程,都是可以在MDK个版本下直接编译的。
新例程下载地址:
http://www.openedv.com/posts/list/13912.htm
接下来我们再说说:#include<stm32f10x.h>这个头文件。
#include<stm32f10x.h>是ST公司V3.5及以后版本统一使用的库函数头文件了,说白了就是把原来的stm32f10x_lib.h,换成了#include<stm32f10x.h>,规范了代码,不需要包含那么多的头文件了。
这里打开战舰板,寄存器例程-按键实验。
如图3所示:
图3 stm32f10x.h
这是我们用MDK5.10打开战舰板寄存器例程,按键实验,查看stm32f10x.h的内容,对比图1,应该看出些区别了。
MDK5界面大改,这里不多说,关键没法查看stm32f10x.h的路径了,不知道放在哪里。。。
怎么办呢?
俗话说,上天给人关闭一扇门的时候,一定会为他开启另外一扇门,你把鼠标,放到stm32f10x.h选项卡上,然后右键,是不是弹出了一个小窗口?如图4所示:
、
图4 拷贝全路径&打开包含文件夹
以上两个划红线的,大家自己试试,就知道什么情况了,我就不多说了。
同样,图3中,也告诉你stm32f10x.h的版本了。
另外,如何查看某个.c文件,包含了哪些头文件,见图3中3处的方法,点击.c文件前面的+号标记,就可以展开其包含的头文件了。
但是很多网友会问,明明我的delay.c只包含了#include "delay.h",怎么会包含这么多呢?
答案就是:头文件可以层层包含的... A包含B,B包含C,C包含D,D包含E,E包含F...
那么只要你包含了A,那么B,C,D,E,F,就都是会包含进来的。。。
同样,为了兼容不同版本的MDK,以避免MDK不自带头文件,带来的错误,我们将:stm32f10x.h和system_stm32f10x.h拷贝到了SYSTEMSYS 文件夹下,这里大家查看战舰板最新例程就可以知道。
最后,再总结下:
1,stm32f10x_lib.h是2.0的ST库函数头文件,在我们开发板老版本的寄存器版本例程上面有用到,新版本例程一律没用了。
2,stm32f10x.h,是3.5的ST库函数头文件,在战舰板新版本例程,全部使用这个头文件了。
3,为了兼容不同的MDK版本,我们将这些所需的头文件,一律拷贝到了工程SYSTEMsys 文件夹了。
加载中...
469219945
2楼-- · 2019-07-21 08:04
回复【2楼】正点原子:
---------------------------------
谢谢原子哥啊!那是不是可以这样理解:寄存器版本和库函数3.5以前的版本用#include "stm32f10x_lib.h"或者#include <stm32f10x_map.h>+#include <stm32f10x_nvic.h>,而库函数3.5及以后的版本用#include "stm32f10x.h"
加载中...
luofeng
3楼-- · 2019-07-21 13:56
精彩回答 2 元偷偷看……
加载中...
jiaozhu
4楼-- · 2019-07-21 17:49
顶起
加载中...
正点原子
5楼-- · 2019-07-21 20:34
回复【3楼】469219945:
---------------------------------
是的
加载中...
469219945
6楼-- · 2019-07-22 00:22
精彩回答 2 元偷偷看……
加载中...
1
2
3
4
5
6
7
下一页
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
重复性的问题,如果10个人问,我要回答10次,1000个人问,我要回答1000次。
如果论坛问了,我发帖子给提问者,不就OK了么?
我要你论坛提问的目的就在这里,个中关系请看此帖:http://www.openedv.com/posts/list/657.htm
楼主问了很多很简单的问题:比如,如何在MDK下,打开一个头文件,楼主不知道(PS:我们教程教了的,见《不完全手册V2.3》第83页)。 比如,README在哪里,找不到,不会找。 其他一些电路基础问题,我就不说了。
我认为这些问题,你应该自己知道找答案,然后,好不容易问了一个有点共性的问题,让楼主来论坛发个帖子,方便别的初学者了解,很明显,楼主貌似很不情愿。
好了,说问题。 #include<stm32f10x_lib.h>和#include<stm32f10x.h>的区别,这确实是个好问题,所以在这里好好解答一下。 首先,我们看#include<stm32f10x_lib.h>这个头文件。 #include<stm32f10x_lib.h>是ST公司V2.0的库函数使用的头文件,用MDK3.80A,打开Mini板例程-扩展实验1 自定义汉字显示实验,如图1所示:
图1 stm32f10x_lib.h
只要你善于观察,这个图片,告诉我们好几个信息了:
1,文件的路径,也就是stm32f10x_lib.h,到底是在哪个位置,在图中1处就告诉你了。
2,文件的版本,图中2处,说明了,这是V2.0.1版本。
3,该文件包含的一些内容,也就是图中3处的内容。
图1,我们是用MDK3.80A打开的Mini板例程,因为MDK3.80A自带了这些头文件,所以可以打开。
但是,如果你用MDK4.7/MDK5打开,就没法找到了,这也就是为什么,我们老版本的例程,存在高版本的MDK编译的时候,报找不到stm32f10x_lib.h的错误的原因了。
而stm32f10x_lib.h里面,我们经过分析,实际可以用:stm32f10x_map.h和stm32f10x_nvic.h来替代,所以新版本的Mini板例程,都是用这两个替代stm32f10x_lib.h了,而
为了避免不同编译器,可能不会带这两个文件,而报错的问题,我们将这些相关头文件统一拷贝到了例程SYSTEMsys文件夹下,如图2所示:
图2 SYSTEMSYS 文件夹里面的内容
所以,Mini板的最新例程,都是可以在MDK个版本下直接编译的。
新例程下载地址:http://www.openedv.com/posts/list/13912.htm
接下来我们再说说:#include<stm32f10x.h>这个头文件。
#include<stm32f10x.h>是ST公司V3.5及以后版本统一使用的库函数头文件了,说白了就是把原来的stm32f10x_lib.h,换成了#include<stm32f10x.h>,规范了代码,不需要包含那么多的头文件了。
这里打开战舰板,寄存器例程-按键实验。
如图3所示:
图3 stm32f10x.h
MDK5界面大改,这里不多说,关键没法查看stm32f10x.h的路径了,不知道放在哪里。。。
怎么办呢?
俗话说,上天给人关闭一扇门的时候,一定会为他开启另外一扇门,你把鼠标,放到stm32f10x.h选项卡上,然后右键,是不是弹出了一个小窗口?如图4所示:
图4 拷贝全路径&打开包含文件夹
以上两个划红线的,大家自己试试,就知道什么情况了,我就不多说了。
同样,图3中,也告诉你stm32f10x.h的版本了。
另外,如何查看某个.c文件,包含了哪些头文件,见图3中3处的方法,点击.c文件前面的+号标记,就可以展开其包含的头文件了。
但是很多网友会问,明明我的delay.c只包含了#include "delay.h",怎么会包含这么多呢?
答案就是:头文件可以层层包含的... A包含B,B包含C,C包含D,D包含E,E包含F...
那么只要你包含了A,那么B,C,D,E,F,就都是会包含进来的。。。
同样,为了兼容不同版本的MDK,以避免MDK不自带头文件,带来的错误,我们将:stm32f10x.h和system_stm32f10x.h拷贝到了SYSTEMSYS 文件夹下,这里大家查看战舰板最新例程就可以知道。
最后,再总结下:
1,stm32f10x_lib.h是2.0的ST库函数头文件,在我们开发板老版本的寄存器版本例程上面有用到,新版本例程一律没用了。
2,stm32f10x.h,是3.5的ST库函数头文件,在战舰板新版本例程,全部使用这个头文件了。
3,为了兼容不同的MDK版本,我们将这些所需的头文件,一律拷贝到了工程SYSTEMsys 文件夹了。
---------------------------------
谢谢原子哥啊!那是不是可以这样理解:寄存器版本和库函数3.5以前的版本用#include "stm32f10x_lib.h"或者#include <stm32f10x_map.h>+#include <stm32f10x_nvic.h>,而库函数3.5及以后的版本用#include "stm32f10x.h"
---------------------------------
是的
一周热门 更多>