打印

【原创】GD32库函数中关于 gd32f10x_conf.h 定义和使用的探究

[复制链接]
1864|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunmeat|  楼主 | 2015-6-13 09:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在GD32中有这么一个gd32f10x_conf.h文件,他里面默认包含了所有的GD32的外设库文件,如果我们不修改的话,编译就会出现下面的情况

这样看着很别扭,因为很多外设的头文件是不会用到的。那么我们如何修改他呢?
沙发
sunmeat|  楼主 | 2015-6-13 09:33 | 只看该作者
首先找到gd32f10x_conf.h的定义是在gd32f10x.h中的,定义如下
#ifdef USE_STDPERIPH_DRIVER
#include "gd32f10x_conf.h"
#endif

USE_STDPERIPH_DRIVER的定义,是在MDK的配置中完成的,配置如下

这样,就通过调用gd32f10x.h的头文件实际调用了gd32f10x_conf.h的头文件

使用特权

评论回复
板凳
sunmeat|  楼主 | 2015-6-13 09:38 | 只看该作者
下面继续探究gd32f10x_conf.h的内容,gd32f10x_conf.h的内容如下
#ifndef __GD32F10X_CONF_H
#define __GD32F10X_CONF_H

/* Includes ------------------------------------------------------------------*/
#include "gd32f10x_adc.h"
#include "gd32f10x_bkp.h"
#include "gd32f10x_can.h"
#include "gd32f10x_crc.h"
#include "gd32f10x_dac.h"
#include "gd32f10x_dma.h"
#include "gd32f10x_eth.h"
#include "gd32f10x_exmc.h"
#include "gd32f10x_exti.h"
#include "gd32f10x_fmc.h"
#include "gd32f10x_gpio.h"
#include "gd32f10x_i2c.h"
#include "gd32f10x_iwdg.h"
#include "gd32f10x_mcudbg.h"
#include "gd32f10x_misc.h"
#include "gd32f10x_pwr.h"
#include "gd32f10x_rcc.h"
#include "gd32f10x_rtc.h"
#include "gd32f10x_sdio.h"
#include "gd32f10x_spi.h"
#include "gd32f10x_timer.h"
#include "gd32f10x_usart.h"
#include "gd32f10x_wwdg.h"

#endif /* __GD32F10X_CONF_H */

我们可以通过修改这里面包含的外设的头文件,来达到引用外设库函数的作用,但是在大多数情况下,不是所有的外设都需要引用的,我们可以屏蔽他。然后在需要使用某个外设的时候,再引用之。例如,如要用到外部中断,我们引用下面四个头文件即可,其他的可以屏蔽
#ifndef __GD32F10X_CONF_H
#define __GD32F10X_CONF_H

/* Includes ------------------------------------------------------------------*/
//#include "gd32f10x_adc.h"
//#include "gd32f10x_bkp.h"
//#include "gd32f10x_can.h"
//#include "gd32f10x_crc.h"
//#include "gd32f10x_dac.h"
//#include "gd32f10x_dma.h"
//#include "gd32f10x_eth.h"
//#include "gd32f10x_exmc.h"
#include "gd32f10x_exti.h"
//#include "gd32f10x_fmc.h"
#include "gd32f10x_gpio.h"
//#include "gd32f10x_i2c.h"
//#include "gd32f10x_iwdg.h"
//#include "gd32f10x_mcudbg.h"
#include "gd32f10x_misc.h"
//#include "gd32f10x_pwr.h"
#include "gd32f10x_rcc.h"
//#include "gd32f10x_rtc.h"
//#include "gd32f10x_sdio.h"
//#include "gd32f10x_spi.h"
//#include "gd32f10x_timer.h"
//#include "gd32f10x_usart.h"
//#include "gd32f10x_wwdg.h"

#endif /* __GD32F10X_CONF_H */

使用特权

评论回复
地板
sunmeat|  楼主 | 2015-6-13 09:43 | 只看该作者
当我们需要操作别的外设,需要包含别的外设头文件的时候,在main函数下面可以找到所有包含的头文件,进而找到gd32f10x_conf.h,双击点开修改即可。

使用特权

评论回复
5
sunmeat|  楼主 | 2015-6-13 10:08 | 只看该作者
对于大多数人来说,当gd32f10x_conf.h中包含的头文件够多的时候,想要从一堆头文件中找到gd32f10x_conf.h这个头文件,是一件头疼的事情,因此,我们为了修改方便,可以把gd32f10x_conf.h这个头文件像.c文件一样,在主页面显示出来,方便修改,如下所示:

使用特权

评论回复
6
comeon201208| | 2015-6-13 22:37 | 只看该作者
sunmeat 发表于 2015-6-13 09:33
首先找到gd32f10x_conf.h的定义是在gd32f10x.h中的,定义如下

USE_STDPERIPH_DRIVER的定义,是在MDK的配置 ...

这个问题的是需要多注意的,不注意的话程序就不会被编译成功额。

使用特权

评论回复
7
comeon201208| | 2015-6-13 22:39 | 只看该作者
sunmeat 发表于 2015-6-13 09:43
当我们需要操作别的外设,需要包含别的外设头文件的时候,在main函数下面可以找到所有包含的头文件,进而找 ...

这个地方的一定要注意的,设计时用到哪个外设模块的,就相应的再者各头文件中打开相应的模块头文件的。

使用特权

评论回复
8
STM32初学者| | 2015-6-14 14:21 | 只看该作者
原来USE_STDPERIPH_DRIVERhi干这个用的,我说怎么有时候得加这个宏定义,有时候不用加了

使用特权

评论回复
9
angerbird| | 2015-6-15 21:10 | 只看该作者
sunmeat 发表于 2015-6-13 09:38
下面继续探究gd32f10x_conf.h的内容,gd32f10x_conf.h的内容如下

我们可以通过修改这里面包含的外设的头文 ...

这个是需要多注意的,不然在变异的时候会出现错误的。

使用特权

评论回复
10
Thefantasy| | 2015-6-16 09:12 | 只看该作者
楼主讲解的很详细,其实这个和STM32差不多,只不过GD修改了一下名字而已。

使用特权

评论回复
11
baimiaocun2015| | 2015-6-17 21:48 | 只看该作者
正如下边有些大侠提到的一样,在dg32f10x_conf.h中设置的,不用的直接屏蔽掉的。

使用特权

评论回复
12
sunmeat|  楼主 | 2015-6-26 09:42 | 只看该作者
STM32初学者 发表于 2015-6-14 14:21
原来USE_STDPERIPH_DRIVERhi干这个用的,我说怎么有时候得加这个宏定义,有时候不用加了 ...

恩恩,这个宏定义延续到了GD32中,依然有用

使用特权

评论回复
13
september7| | 2015-6-28 13:20 | 只看该作者
楼主,我这个不到这个芯片的型号,怎么办

使用特权

评论回复
14
Thor9| | 2015-7-3 21:01 | 只看该作者
设计时用到哪个外设模块的,就打开相应的模块头文件的

使用特权

评论回复
15
comeon201208| | 2015-7-11 16:47 | 只看该作者
这些在应用的时候注意的,需要啥的就调用相应的库函数的就可以啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

208

主题

2132

帖子

13

粉丝