打印

基于GD32F103 MCU的GPIO配置与应用示例

[复制链接]
1533|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wordsworth|  楼主 | 2024-10-10 08:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

GD32F103 是 GD32 系列中的一款广泛应用的 32 位微控制器,基于 ARM Cortex-M3 内核,具有高性能、低功耗等特点。该芯片提供丰富的外设接口,适合应用在工业控制、物联网等多个领域。本文将以 GPIO(通用输入输出端口)的配置与应用为例,展示 GD32F103 MCU 的基本开发步骤,并提供相关代码示例,帮助开发者快速上手使用 GD32F103 MCU。

1. 硬件准备
  • GD32F103 开发板
  • 一些 LED 或按钮
  • USB 转串口调试工具(如 CH340)

2. 软件工具
  • GD32 开发环境(Keil 或者 IAR)
  • GD32 标准库文件

3. GPIO 简介GPIO 是微控制器中最常用的外设之一。通过 GPIO,开发者可以控制外部设备(如 LED、继电器)或读取外部信号(如按钮、传感器)。GD32F103 提供了丰富的 GPIO 引脚,可以配置为输入或输出模式,并支持多种中断和唤醒功能。

4. GPIO 配置步骤
  • 配置 GPIO 时钟
  • 设置 GPIO 引脚模式(输入或输出)
  • 配置输出电平或读取输入状态

5. 代码实现以下是一个简单的 LED 灯闪烁的示例,使用 GD32F103 的 GPIO 控制开发板上的 LED。
#include "gd32f10x.h" // GD32F103 MCU 的头文件

// 初始化 GPIO,配置 LED 引脚为输出模式
void GPIO_Init() {
    rcu_periph_clock_enable(RCU_GPIOC);  // 使能 GPIOC 时钟
    gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13); // 配置 GPIOC Pin 13 为推挽输出,速度50MHz
}

// 简单延时函数
void delay(uint32_t count) {
    for (; count != 0; count--);
}

// 主程序
int main(void) {
    GPIO_Init();  // 初始化 GPIO

    while (1) {
        // 点亮 LED(将 GPIOC Pin 13 输出低电平)
        gpio_bit_reset(GPIOC, GPIO_PIN_13);
        delay(1000000);  // 延时

        // 关闭 LED(将 GPIOC Pin 13 输出高电平)
        gpio_bit_set(GPIOC, GPIO_PIN_13);
        delay(1000000);  // 延时
    }
}

6. 代码解析
  • GPIO_Init 函数:该函数用于初始化 GPIO 引脚。首先,启用 GPIOC 的外设时钟,然后将 GPIOC 的第 13 引脚配置为推挽输出模式,输出速度为 50MHz。这个引脚通常在开发板上连接到板载 LED。
  • delay 函数:一个简单的延时函数,用于控制 LED 的亮灭频率。
  • main 函数:在主程序中,循环控制 LED 的开关。通过 gpio_bit_reset 将 GPIO 引脚置低电平(点亮 LED),通过 gpio_bit_set 将 GPIO 引脚置高电平(熄灭 LED)。通过延时函数,控制每次亮灭的时间间隔。


7. 进一步扩展
  • 多引脚控制:GD32F103 提供了多个 GPIO 引脚,可以配置多个引脚同时控制多个 LED,或者读取多个输入信号(如按钮状态)。
  • 中断应用:GPIO 支持外部中断,可以通过配置 GPIO 中断,实现按键中断响应,在按键按下时触发某些操作。
  • 低功耗应用:GD32F103 的 GPIO 模块支持低功耗模式,可以在电池供电的系统中使用,以降低功耗。
  • 外设互联:GPIO 还可以与其他外设模块(如定时器、ADC、DAC 等)联动使用,完成更多复杂的任务。

8. 实际应用
  • 按钮输入:通过 GPIO 引脚读取按钮状态,可以实现按钮控制的功能。在实际项目中,通常会使用 GPIO 读取传感器、按键或其他外设的输入信号。
  • 外设控制:GPIO 输出引脚可以用于控制外部设备,如继电器、LED、蜂鸣器等。开发者可以根据应用需求设置输出状态,驱动外部设备工作。
  • 调试输出:在调试过程中,GPIO 引脚可以用于输出调试信号,比如使用 LED 显示系统的工作状态,帮助开发者快速定位问题。

9. 小结通过本文的示例,我们了解了如何使用 GD32F103 MCU 的 GPIO 模块控制 LED 灯闪烁。GPIO 是 MCU 中非常重要的外设,几乎在所有嵌入式项目中都会用到。开发者可以根据具体的应用需求,灵活配置 GPIO 引脚,以实现不同的功能。GD32F103 MCU 提供了丰富的外设资源,能够满足各种嵌入式开发需求。希望本文的代码示例能帮助读者快速入门 GD32F103 的 GPIO 使用。

使用特权

评论回复
沙发
公羊子丹| | 2024-10-10 08:02 | 只看该作者
这个代码不错,简单明了,LED 控制很实用!

使用特权

评论回复
板凳
周半梅| | 2024-10-10 08:03 | 只看该作者
用 GD32F103 来控制 GPIO 感觉比我以前用的 STM32 还要方便。

使用特权

评论回复
地板
帛灿灿| | 2024-10-10 08:03 | 只看该作者
我刚开始学 GD32,能看懂这个代码,太开心了!

使用特权

评论回复
5
童雨竹| | 2024-10-10 08:03 | 只看该作者
我试了你的代码,LED 闪烁效果很稳定,感谢分享。

使用特权

评论回复
6
万图| | 2024-10-10 08:03 | 只看该作者
想问下,如果我想加个按钮输入,该怎么实现呢?

使用特权

评论回复
7
Pulitzer| | 2024-10-10 08:04 | 只看该作者
GD32F103 的性价比真的很高,我的项目刚好用这个 MCU。

使用特权

评论回复
8
Bblythe| | 2024-10-10 08:04 | 只看该作者
按照这个思路,可以扩展更多 GPIO 控制的功能,真不错。

使用特权

评论回复
9
Uriah| | 2024-10-10 08:04 | 只看该作者
这个延时函数有点简单,我自己加了个定时器控制延时,效果更好。

使用特权

评论回复
10
Clyde011| | 2024-10-10 08:04 | 只看该作者
我用这个代码控制了四个 LED,项目进展顺利。

使用特权

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

本版积分规则

29

主题

3652

帖子

1

粉丝