赞
踩
GD32系列文章均采用KEIL5(V5.35版本),芯片包及固件库版本V3.2.0,使用GD32F407VGT6芯片。
相关文档下载地址,后续更新内容也会放在这个文件路径中。
链接:https://pan.baidu.com/s/1qJEMaxVjLQHTjE1yh4df6Q
提取码:amvj
本章主要是验证第一章创建的工程模板是否正确,通过点灯来验证一下,本章以PC6为例。PC6拉高LED点亮,PC6拉低LED熄灭。
led.c
- #include "led.h"
-
- void led_init(void)
- {
- rcu_periph_clock_enable(RCU_GPIOC);
- rcu_periph_clock_enable(RCU_GPIOD);
- rcu_periph_clock_enable(RCU_GPIOE);
-
- /* configure led GPIO port */
- gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_6|GPIO_PIN_13);
- gpio_output_options_set(GPIOC, GPIO_OTYPE_PP,
- GPIO_OSPEED_50MHZ,GPIO_PIN_6|GPIO_PIN_13);
-
- //GPIO_BC(GPIOC) = GPIO_PIN_6|GPIO_PIN_13;
- gpio_bit_reset(GPIOC,GPIO_PIN_6|GPIO_PIN_13);
-
- /* configure led GPIO port */
- gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_4|GPIO_PIN_5);
- gpio_output_options_set(GPIOD, GPIO_OTYPE_PP,
- GPIO_OSPEED_50MHZ,GPIO_PIN_4|GPIO_PIN_5);
-
- //GPIO_BC(GPIOD) = GPIO_PIN_4|GPIO_PIN_5;
- gpio_bit_reset(GPIOD,GPIO_PIN_4|GPIO_PIN_5);
-
- /* configure led GPIO port */
- gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_6);
- gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_6);
-
- //GPIO_BC(GPIOE) = GPIO_PIN_6;
- gpio_bit_reset(GPIOE,GPIO_PIN_6);
- }
led.h
- #ifndef __LED_H
- #define __LED_H
-
- #include "gd32f4xx.h"
-
- #define LED1_ON GPIO_BOP(GPIOC) = GPIO_PIN_6
- #define LED1_OFF GPIO_BC(GPIOC) = GPIO_PIN_6
- #define LED1_Toggle GPIO_TG(GPIOC) = GPIO_PIN_6
-
- #define LED2_ON GPIO_BOP(GPIOC) = GPIO_PIN_13
- #define LED2_OFF GPIO_BC(GPIOC) = GPIO_PIN_13
- #define LED2_Toggle GPIO_TG(GPIOC) = GPIO_PIN_13
-
- #define LED3_ON GPIO_BOP(GPIOE) = GPIO_PIN_6
- #define LED3_OFF GPIO_BC(GPIOE) = GPIO_PIN_6
- #define LED3_Toggle GPIO_TG(GPIOE) = GPIO_PIN_6
-
- #define LED4_ON GPIO_BOP(GPIOD) = GPIO_PIN_4
- #define LED4_OFF GPIO_BC(GPIOD) = GPIO_PIN_4
- #define LED4_Toggle GPIO_TG(GPIOD) = GPIO_PIN_4
-
- #define LED5_ON GPIO_BOP(GPIOD) = GPIO_PIN_5
- #define LED5_OFF GPIO_BC(GPIOD) = GPIO_PIN_5
- #define LED5_Toggle GPIO_TG(GPIOD) = GPIO_PIN_5
-
- void led_init(void);
-
- #endif
-
main.c
- #include "gd32f4xx.h"
- #include "systick.h"
- #include "led.h"
-
-
- int main(void)
- {
- systick_config();
- led_init();
- gpio_bit_set(GPIOC,GPIO_PIN_6);
- while(1)
- {
-
- }
- }
在main.c中添加led的初始化函数,将PC6端口设置为高电平。编译下载到开发板中,LED灯点亮,实验成功,同时也说明第一章的工程模板没有问题。
简单修改前面的代码,即可实现流水灯的效果。
delay_1ms()函数是GD32官方为我们实现的1ms延时,使用SYSTick实现的,类似于STM32的HAL_Delay()函数功能。
- #include "gd32f4xx.h"
- #include "systick.h"
- #include "led.h"
-
-
- int main(void)
- {
- systick_config();
- led_init();
- while(1)
- {
- LED1_ON;
- delay_1ms(500);
- LED1_OFF;
- LED2_ON;
- delay_1ms(500);
- LED2_OFF;
- LED3_ON;
- delay_1ms(500);
- LED3_OFF;
- LED4_ON;
- delay_1ms(500);
- LED4_OFF;
- LED5_ON;
- delay_1ms(500);
- LED5_OFF;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。