GD32E23x 串口0和1DMA空闲中断这是一个从EmbeddedBuilder工程中移植过来的Keil工程基于GD32E23x 创建使用。大部分功能代码实现基于AI辅助完成生成。✨功能经过烧录硬件验证。硬件平台芯片型号GD32E23x系列开发环境Keil MDK功能说明⚙️时钟配置外部高速时钟HXTAL8MHz晶振外部低速时钟LXTAL32.768KHz晶振可选通过宏ENABLE_LXTAL配置内部低速时钟IRC40K40KHz RC振荡器默认使用系统时钟72MHzPLL倍频9倍APB1时钟72MHzAPB2时钟72MHz串口外设USART0引脚PB6(TX), PB7(RX)波特率115200数据位8位校验位无停止位1位功能空闲中断 DMA接收DMA通道DMA_CH2接收缓冲区32字节printf重定向默认输出到USART0USART1引脚PA2(TX), PA3(RX)波特率115200数据位8位校验位无停止位1位功能空闲中断 DMA接收DMA通道DMA_CH4接收缓冲区256字节串口输出函数printf()标准printf函数默认输出到USART0usart_printf(USARTx, format, ...)可指定串口输出的格式化函数LED指示灯引脚PC13功能RTC闹钟中断触发时翻转RTC实时时钟时钟源内部RC40KHz默认或外部LXTAL 32.768KHz功能实时时钟显示闹钟中断默认每分钟第9秒触发闹钟中断时翻转LED指示灯DMA配置DMA_CH2USART0_RX接收DMA_CH4USART1_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引脚分配外设功能引脚复用功能USART0TXPB6AF0USART0RXPB7AF0USART1TXPA2AF1USART1RXPA3AF1LED-PC13GPIODMA通道映射DMA通道外设功能DMA_CH2USART0RX接收DMA_CH4USART1RX接收⛳注意事项串口0和串口1的DMA接收使用不同的DMA通道不会产生冲突printf默认输出到USART0如需输出到USART1请使用usart_printf(USART1, ...)RTC时钟源在编译时通过宏定义选择修改后需重新编译接收缓冲区大小可根据实际需求调整编译说明使用Keil MDK打开Template.uvprojx工程文件选择对应的芯片型号GD32E230C8等编译生成Project.hex文件使用DAP-Link或GD-Link下载器烧录程序程序源码通过网盘分享的文件HAL_UART0_1_DMA.rar 链接:https://pan.baidu.com/s/13FXxC_ktdhwWO7fd9dZenA?pwdkpsb 提取码: kpsb