小熊派gd32f303学习之旅(2)—新建工程点亮第一个LED灯
一、下载标准固件库
首先们要下载GD32的标准固件库:http://www.gd32mcu.com/cn/download/7?kw=GD32F3
找到【GD32F30x Firmware Library】将其下载下来,
将其解压即可。
二、新建工程
新建一个工程目录,将固件库中的【Firmware】和【Template】文件夹复制过来,方别放到主目录和子目录下,路径如下所示
然后将【Template】重命名为【01_LED】,并将其中的两个文件夹删去,并新建MDK-ARM
文件夹:
打开Keil-MDK,新建工程,选择【MDK-ARM】存放工程文件
选择GD32F303RG
,点击OK
然后将工程目录及main.c
修改为如下所示:
接下来添加全局宏定义和头文件包含:
接下来编译,有一个报错,那是因为我们刚才把led_led_spark()
删除了
打开gd32f30x_it.c
,将其注释掉:
再次编译,成功
三、编写代码,点亮LED
查看小熊派的原理图可以看到,LED由PB0控制
将main.c
代码修改为如下所示:
#include "gd32f30x.h"
#include "systick.h"
int main(void)
{
/* 配置系统时钟 */
systick_config();
/* 使能LED所使用的GPIOB时钟 */
rcu_periph_clock_enable(RCU_GPIOB);
/* 配置LED使用的引脚为推挽输出 */
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
/* reset LED GPIO pin */
gpio_bit_reset(GPIOB, GPIO_PIN_0);
while(1)
{
/* turn on LED */
gpio_bit_set(GPIOB, GPIO_PIN_0);
delay_1ms(1000);
/* turn off LED */
gpio_bit_reset(GPIOB, GPIO_PIN_0);
delay_1ms(1000);
}
}
编译:
接入开发板,设置仿真器:
然后下载到开发板,可以看到,LED在闪烁:
四、代码优化
在主目录下新建一个Hardware
目录,用来存放硬件驱动代码,然后在该目录下新建include
目录和led.c
文件,在include
目录下新建led.h
文件,并将给目录添加到头文件路径中
然后再工程结构中添加Hardware
,并将led.c
添加进来
然后编写led.h
为如下所示
#ifndef __LED_H
#define __LED_H
/* 宏定义LED的控制方式 */
#define LED(n) (n?gpio_bit_set(GPIOB, GPIO_PIN_0):gpio_bit_reset(GPIOB, GPIO_PIN_0))
/* LED硬件初始化 */
void led_init(void);
#endif
编写led.c
如下所示
/* LED的硬件初始化代码 */
#include "gd32f30x.h"
/* LED硬件初始化 */
void led_init(void)
{
/* 使能LED所使用的GPIOB时钟 */
rcu_periph_clock_enable(RCU_GPIOB);
/* 配置LED使用的引脚为推挽输出 */
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
/* reset LED GPIO pin */
gpio_bit_reset(GPIOB, GPIO_PIN_0);
}
修改main.c
为如下所示
#include "gd32f30x.h"
#include "systick.h"
#include "led.h"
int main(void)
{
/* 配置系统时钟 */
systick_config();
/* 初始化LED */
led_init();
while(1)
{
/* turn on LED */
LED(1);
delay_1ms(1000);
/* turn off LED */
LED(0);
delay_1ms(1000);
}
}
五、附录
完整代码我存放在码云,可以查看:https://gitee.com/william_william/BearPi-GD32F303RGT6.git
上一篇:小熊派gd32f303学习之旅(1)— BearPi介绍和开发环境的搭建
下一篇:小熊派gd32f303学习之旅(3)—串口打印第一个Hello world程序