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

[复制链接]
4666|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。
  1. #include "gd32f10x.h" // GD32F103 MCU 的头文件

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

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

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

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

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

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,能看懂这个代码,太开心了!
童雨竹 发表于 2024-10-10 08:03 | 显示全部楼层
我试了你的代码,LED 闪烁效果很稳定,感谢分享。
万图 发表于 2024-10-10 08:03 | 显示全部楼层
想问下,如果我想加个按钮输入,该怎么实现呢?
Pulitzer 发表于 2024-10-10 08:04 | 显示全部楼层
GD32F103 的性价比真的很高,我的项目刚好用这个 MCU。
Bblythe 发表于 2024-10-10 08:04 | 显示全部楼层
按照这个思路,可以扩展更多 GPIO 控制的功能,真不错。
Uriah 发表于 2024-10-10 08:04 | 显示全部楼层
这个延时函数有点简单,我自己加了个定时器控制延时,效果更好。
Clyde011 发表于 2024-10-10 08:04 | 显示全部楼层
我用这个代码控制了四个 LED,项目进展顺利。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

6119

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部