Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GPIO
【GD32F527I-EVAL运行RTThread】GPIO外设使用
发布于 2025-11-06 15:14:12 浏览:27
订阅该版
[tocm] 感谢RT-Thread论坛提供的GD32F5系列实践的机会,使用RT-Thread对GPIO外设进行操作 # 1、硬件信息 GD32F5系列芯片官网可以下载芯片的数据手册、固件包、示例代码、开发工具等软件包。 https://www.gigadevice.com.cn/product/mcu/high-performance-mcus/gd32f5xx-series/gd32f527 从开发板使用手册中可知GD32F527I-EVAL的芯片型号为GD32F527IST7,在芯片的[介绍页面](https://www.gigadevice.com.cn/product/mcu/mcus-product-selector/gd32f527ist7)可以了解到芯片内核为Cortex-M33、最高主频为200MHz、内部Flash为7680K Byte,片上SRAM为576k Byte。  通过查看评估版的原理图可知,开发板上搭载的NNAND Flash芯片型号为GD9FU1G8F2AMG,有1Gbit的容量。  SDRAN的芯片型号为MT48LC16M16A2P-6AIT,存储容量为256Mbit。  强悍的性能加上丰富的外设资源,配合RTThread实时控制系统,能够实现资源的有效利用。 # 2、RT-Thread代码拉取以及环境配置 从Gitee上拉取RTThread的源码 ```bash git clone https://gitee.com/rtthread/rt-thread ``` RTThread环境配置配置工具env可以从Gitee上拉取env-windows。 ```bash git clone --recursive --depth 1 https://gitee.com/mirrors_RT-Thread/env-windows.git ``` 关于env工具的安装使用,可以查看以下文章中的介绍。 https://club.rt-thread.org/ask/article/af8952fcf0ca464b.html 从GD32F5系列芯片的网站下载芯片的插件包。  解压出来的文件中有用于Keil环境的芯片支持包。  # 3、RTThread BSP代码编译和Keil工程生成 在RTThread代码仓库中进入`bsp/gd32/arm/gd32527I-eval`文件夹中,通过右键菜单进入env工具的命令行界面,  首先在其中运行`pkgs --upgrade`和`pkgs --update`更新相关CMSIS固件包。  完成CMSIS固件支持包更新后,运行`scons -j128`编译BSP代码。  接下来运行`scons --target=mdk5`生成Keil5工程  使用Keil打开生成的project工程,编译工程后,使用Micro-USB线连接开发板下载程序到开发板。  连接开发板的串口,进入开发板的Shell终端,可以调用内置的指令查看设备和线程信息。  # 4、RT-Thread GPIO驱动 RT-Thread为兼容多种MCU,使用IO设备框架和管理接口对外设进行统一管理。  系统在硬件初始化时,会创建包含外设信息、操作函数等的IO设备,注册到IO设备管理器中。应用程序使用外设时,通过调用IO设备管理框架的接口函数获取相应外设的控制,进行数据的读写和外设设置,  GPIO是MCU的基础外设,其基本功能可以分为三类; 1. 通过读取引脚的电平检测引脚外部输入情况; 2. 设置引脚输出电平,控制外部设备的状态; 3. 检测外部中断,GPIO电平发生变化时,触发相应的中断。 RTThread以Pin设备抽象GPIO的基本功能,通过Pin设备对GPIO外设的初始化、电平读取和控制以及中断进行管理。在官方的文档中对Pin设备驱动的组成和使用有详细的说明。 https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pin/pin RTThread使用IO设备框架驱动外设前,需要在工程配置中检测是否使能相关的配置,在env命令行中使用`menuconfig`指令进入代码配置界面,在*Hardware Drivers Config->On-chip Peripheral Drivers*中确认使能GPIO外设。  ## 4.1 Pin设备接口和硬件原理图 应用程序通过RT-Thread的Pin设备管理接口来访问GPIO,相关的接口以及功能描述如下: |函数|描述| |--|--| |rt_pin_mode()|设置引脚模式| |rt_pin_write()|设置引脚电平| |rt_pin_read()|读取引脚电平| |rt_pin_attach_irq()|绑定引脚中断回调函数| |rt_pin_irq_enable()|使能引脚中断| |rt_pin_detach_irq()|脱离引脚中断回调函数| 在使用GPIO设备前,需要知道GPIO引脚的位置,通过查看GD32F527I-EVAL的原理图可知。开发板上的GPIO外设有LED。LED的原理图如下  ## 4.2 Pin设备控制GPIO输出 使用GPIO的输出功能可以设置GPIO的电平,控制LED外设的状态。在工程中添加以下代码,实现呼吸灯的效果。 ```c int main(void) { int count = 1; /* set LED1 pin mode to output */ rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT); rt_pin_mode(LED3_PIN, PIN_MODE_OUTPUT); rt_pin_mode(LED4_PIN, PIN_MODE_OUTPUT); while (count++) { if(count%1==0) rt_pin_write(LED1_PIN, PIN_HIGH); if(count%2==0) rt_pin_write(LED2_PIN, PIN_HIGH); if(count%3==0) rt_pin_write(LED3_PIN, PIN_HIGH); if(count%5==0) rt_pin_write(LED4_PIN, PIN_HIGH); rt_thread_mdelay(500); if(count%1==0) rt_pin_write(LED1_PIN, PIN_LOW); if(count%2==0) rt_pin_write(LED2_PIN, PIN_LOW); if(count%3==0) rt_pin_write(LED3_PIN, PIN_LOW); if(count%5==0) rt_pin_write(LED4_PIN, PIN_LOW); rt_thread_mdelay(500); } return RT_EOK; } ``` 开发板LED的运行状态如下  # 5、总结 RTThread为GD32F527I-EVAL适配的GPIO驱动使用方便,配合env配置环境可以快速上手GD32F527I-EVAL的开发。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
EPTmachine
Big Maker
文章
8
回答
5
被采纳
0
关注TA
发私信
相关文章
1
drivers- pin
2
bsp 里面的drivers/gpio.c 少了一个功能
3
stm32f407移植RTT中gpio设备驱动问题
4
config PB4(NJTRST) to GPIO
5
RT-Thread的GPIO设备驱动问题
6
关于pin.c文件中语句可能出现的bug
7
RT-Thread学习笔记--线程创建与官方Pin设备驱动调用
8
【应用笔记】小白也能玩转RT-Thread之通用GPIO设备【官方出品
9
串口引脚定义中的GPIO_Pin_sources是社么意思?
10
RTT -GPIO 使用例程
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
ART-Pi
CAN总线
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
rt-smart
RTC
cubemx
I2C_IIC
BSP
UART
WIZnet_W5500
PWM
ESP8266
ota在线升级
packages_软件包
GD32
flash
freemodbus
潘多拉开发板_Pandora
keil_MDK
编译报错
ADC
flashDB
rt_mq_消息队列_msg_queue
ulog
MicroPython
msh
socket
Debug
SFUD
中断
at_device
QEMU
本月问答贡献
出出啊
1532
个答案
346
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
822
个答案
180
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
super_gith
3
篇文章
3
次点赞
wdfk_prog
2
篇文章
19
次点赞
killer22
1
篇文章
3
次点赞
LoongYang
1
篇文章
3
次点赞
waner
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部