打印

使用GD32 MCU实现简单的GPIO控制及LED闪烁

[复制链接]
1039|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wordsworth|  楼主 | 2024-10-4 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在这篇文章中,我将分享如何在GD32 MCU上编写代码,实现一个简单的GPIO控制,通过按键控制LED的开关。这是一个非常基础的入门项目,适合初学者快速上手GD32系列的MCU。

开发环境:
  • 芯片型号:GD32F103C8T6
  • 开发工具:Keil MDK
  • :GD32标准外设库

项目简介:这个项目的目标是使用GD32 MCU控制板上的GPIO引脚,使一个LED灯在按下按钮时进行开关闪烁。通过学习GPIO的配置和使用,你可以掌握基本的硬件控制方法。

步骤1:初始化GPIO首先,我们需要初始化GPIO端口。GD32的GPIO控制非常灵活,可以配置为输入、输出、复用功能等。我们将LED连接到GPIO引脚,按键连接到另一个GPIO引脚,并分别设置它们的模式。
#include "gd32f10x.h"

void gpio_init(void) {
    // 启动 GPIO 时钟
    rcu_periph_clock_enable(RCU_GPIOC);
    rcu_periph_clock_enable(RCU_GPIOA);
   
    // 配置PC13为输出,用于控制LED
    gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);
   
    // 配置PA0为输入,用于读取按键状态
    gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
   
    // 默认LED关闭
    gpio_bit_set(GPIOC, GPIO_PIN_13);
}
步骤2:主循环控制LED状态通过简单的循环,我们可以读取按键的状态,并根据按键的按下和松开,控制LED的开关。按键的去抖动处理可以通过简单的延时函数实现。
int main(void) {
    // 初始化GPIO
    gpio_init();
   
    while (1) {
        // 读取PA0的状态
        if (RESET == gpio_input_bit_get(GPIOA, GPIO_PIN_0)) {
            // 按下按钮,LED点亮
            gpio_bit_reset(GPIOC, GPIO_PIN_13);
        } else {
            // 按钮松开,LED关闭
            gpio_bit_set(GPIOC, GPIO_PIN_13);
        }
    }
}
步骤3:延时函数为了在按钮按下时让LED闪烁一下,我们可以添加一个简单的延时函数,模拟按键的去抖动效果。
void delay(uint32_t time) {
    uint32_t i;
    for (i = 0; i < time; i++) {
        __asm("nop");
    }
}

结语:
通过这篇文章,我们学习了如何在GD32 MCU上配置GPIO,并通过按键控制LED的闪烁。这个基础项目可以作为你学习更多外设(如UART、定时器等)的起点。希望你通过这个简单的应用对GD32的开发有更深入的理解!
如果有任何问题或改进建议,欢迎在评论区留言讨论!

使用特权

评论回复
沙发
公羊子丹| | 2024-10-4 09:02 | 只看该作者
这个项目挺基础的,正好适合我这种刚接触GD32的,学起来不难!感谢分享!

使用特权

评论回复
板凳
周半梅| | 2024-10-4 09:02 | 只看该作者
GPIO配置看着挺简单的,之前一直觉得MCU开发很难,看来是我想多了。

使用特权

评论回复
地板
帛灿灿| | 2024-10-4 09:03 | 只看该作者
这个LED闪烁的效果很实用,能不能再加个功能,比如按一下闪几次?

使用特权

评论回复
5
童雨竹| | 2024-10-4 09:03 | 只看该作者
楼主解释得很清楚,我照着做了一遍,成功控制了LED!开心!

使用特权

评论回复
6
万图| | 2024-10-4 09:03 | 只看该作者
GD32F103真的挺好用的,性价比也高,之前一直用STM32,现在考虑换了。

使用特权

评论回复
7
Bblythe| | 2024-10-4 09:04 | 只看该作者
延时函数写得简洁,看来还是基础扎实才能玩得转这些硬件。

使用特权

评论回复
8
Pulitzer| | 2024-10-4 09:04 | 只看该作者
第一次搞MCU项目,没想到这么简单就能控制硬件,成就感满满!

使用特权

评论回复
9
Uriah| | 2024-10-4 09:04 | 只看该作者
楼主这个按键的去抖动功能感觉可以再优化下,用定时器实现是不是更好?

使用特权

评论回复
10
Clyde011| | 2024-10-4 09:05 | 只看该作者
GD32库用起来还挺顺手的,原来以为和STM32差别会很大,结果没啥难度。

使用特权

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

本版积分规则

29

主题

3648

帖子

1

粉丝