当前位置: 首页 > news >正文

GD32E23x 串口0和1 DMA+空闲中断

GD32E23x 串口0和1DMA+空闲中断


这是一个从EmbeddedBuilder工程中移植过来的Keil工程,基于GD32E23x 创建使用。

  • 🎉大部分功能代码实现,基于AI辅助完成生成。
  • ✨功能经过烧录硬件验证。
🔧硬件平台
  • 🌿芯片型号:GD32E23x系列
  • 🌿开发环境:Keil MDK

📄功能说明

⚙️时钟配置
  • 外部高速时钟(HXTAL):8MHz晶振
  • 外部低速时钟(LXTAL):32.768KHz晶振(可选,通过宏ENABLE_LXTAL配置)
  • 内部低速时钟(IRC40K):40KHz RC振荡器(默认使用)
  • 系统时钟:72MHz(PLL倍频9倍)
  • APB1时钟:72MHz
  • APB2时钟:72MHz
📡串口外设
🔌USART0
  • 引脚:PB6(TX), PB7(RX)
  • 波特率:115200
  • 数据位:8位
  • 校验位:无
  • 停止位:1位
  • 功能:空闲中断 + DMA接收
  • DMA通道:DMA_CH2
  • 接收缓冲区:32字节
  • printf重定向:默认输出到USART0
🔌USART1
  • 引脚:PA2(TX), PA3(RX)
  • 波特率:115200
  • 数据位:8位
  • 校验位:无
  • 停止位:1位
  • 功能:空闲中断 + DMA接收
  • DMA通道:DMA_CH4
  • 接收缓冲区:256字节
📤串口输出函数
  • printf():标准printf函数,默认输出到USART0
  • usart_printf(USARTx, format, ...):可指定串口输出的格式化函数
💡LED指示灯
  • 引脚:PC13
  • 功能:RTC闹钟中断触发时翻转
🕐RTC实时时钟
  • 时钟源:内部RC40KHz(默认)或外部LXTAL 32.768KHz
  • 功能:
    • 实时时钟显示
    • 闹钟中断:默认每分钟第9秒触发
    • 闹钟中断时翻转LED指示灯
🔄DMA配置
  • DMA_CH2:USART0_RX接收
  • DMA_CH4:USART1_RX接收
  • 传输方向:外设到内存
  • 数据宽度:8位
  • 优先级:高优先级

📑使用说明

📝串口使用示例
💻USART0使用
// 标准printf输出到USART0printf("Hello from USART0\n");// 发送数据USART0_SendData("Send to USART0\n");
💻USART1使用
// 指定串口输出usart_printf(USART1,"Hello from USART1\n");// 发送数据USART1_SendData("Send to USART1\n");
📥串口接收处理
  • USART0和USART1都使用DMA+空闲中断接收
  • 接收完成后自动回显数据
  • USART1接收的数据会通过USART0打印显示
⚙️RTC配置
  • gd32e23x_hal_init.c中设置ENABLE_LXTAL宏选择RTC时钟源
    • #define ENABLE_LXTAL 0:使用内部RC40KHz(默认)
    • #define ENABLE_LXTAL 1:使用外部LXTAL 32.768KHz

🛠引脚分配


外设功能引脚复用功能
USART0TXPB6AF0
USART0RXPB7AF0
USART1TXPA2AF1
USART1RXPA3AF1
LED-PC13GPIO

🎯DMA通道映射

DMA通道外设功能
DMA_CH2USART0RX接收
DMA_CH4USART1RX接收

⛳注意事项

  1. 串口0和串口1的DMA接收使用不同的DMA通道,不会产生冲突
  2. printf默认输出到USART0,如需输出到USART1请使用usart_printf(USART1, ...)
  3. RTC时钟源在编译时通过宏定义选择,修改后需重新编译
  4. 接收缓冲区大小可根据实际需求调整

🔖编译说明

  • 使用Keil MDK打开Template.uvprojx工程文件
  • 选择对应的芯片型号(GD32E230C8等)
  • 编译生成Project.hex文件
  • 使用DAP-Link或GD-Link下载器烧录程序

📚程序源码

通过网盘分享的文件:HAL_UART0_1_DMA.rar 链接:https://pan.baidu.com/s/13FXxC_ktdhwWO7fd9dZenA?pwd=kpsb 提取码: kpsb
http://www.jsqmd.com/news/773046/

相关文章:

  • PCIe链路训练(LTSSM)实战避坑:从Detect到L0,你的仿真卡在哪一步了?
  • AISMM评估数据可视化终极检查清单(含自动化校验工具+可审计SVG渲染模板,仅限前200位领取)
  • 修改_IO_2_1_stdout_的某些值来泄漏libc基地址
  • D2DX:让经典《暗黑破坏神2》在现代PC上焕然一新的完整解决方案
  • LeetCode HOT100 - 不同的二叉搜索树
  • 维普AIGC检测算法连续句式识别原理:哪3款工具针对性应对? - 我要发一区
  • 万方AIGC检测术语堆叠识别原理:哪款工具能精准化解? - 我要发一区
  • 【AISMM模型效能验证报告】:对比17家Pre-A轮公司,采用该模型的团队产品上线周期缩短41%
  • 别再手动算字模了!用FPGA驱动16*16点阵,从取模软件到ROM存储的保姆级避坑指南
  • GitMCP:基于MCP协议为AI编程助手注入实时GitHub文档能力
  • 2026年选购指南:塑料生产企业选吹塑机厂家核心要点 - 速递信息
  • FastAPI 中间件
  • 实战指南:如何用特斯拉Model 3/Y的DBC文件构建智能车辆监控系统
  • AI Agent 入门课:RAG 不是检索外挂,而是 Agent 的知识闭环
  • 赵明能享受到千里科技的推背感吗?
  • 为什么 docker build 成功但 docker-compose build 失败?
  • 别再手动查了!教你用Python写个脚本,批量查询商品条码并自动保存信息到Excel
  • 3分钟掌握鸣潮120FPS解锁:WaveTools工具箱终极使用指南
  • 自建代理池实战:从零搭建高可用IP代理服务应对反爬策略
  • 2026年吹塑机厂家选购全解析:从选型困惑到解决方案 - 速递信息
  • 眨眼猫会务智能体:3位数报名签到查座会务小程序,到底能赚钱吗?
  • 从“零散台账”到“一屏掌控”:绿虫光伏全流程管理软件打通项目全链路
  • 天龙八部GM工具完整指南:3分钟掌握游戏数据管理的终极技巧
  • 告别Intent跳转!用ARouter重构你的Android模块化项目(附完整Gradle配置)
  • AISMM模型核心指标全拆解,从L1到L5逐级验证,你的企业卡在哪一级?
  • AISMM模型实战手册:3个月实现IT服务管理能力跃升,中小企CIO都在偷偷用的方法
  • 汽车MCU开发避坑:TLF35584看门狗喂不活?手把手教你SPI喂狗的正确姿势(附MPC5744代码)
  • 矢量网络分析仪原理
  • 打卡信奥刷题(3224)用C++实现信奥题 P8320 『JROI-4』Sunset
  • FastAPI CORS 跨域