最近可能不少人手上弄到了ST发布的的基于M33内核的H5系列Nucleo开发板,这里也用该开发板体验下UART通信,做些验证与确认。【提醒,下面测试过程中没有开启TrustZone功能】
有人在使用过程中,根据开发板手册描述,芯片的UART3默认与STLINK的VCP口相连,测试中感觉好像又不是。这里不妨一起验证下。根据该开放板使用手册描述,UART3[PD8/PD9]默认是与STLINK VCP的接口。

基于上面硬件条件,使用CubeMx简单配置即可验证。


创建工程后,在用户代码里调用HAL_UART_Transmit(&huart3, (uint8_t *)tx1_buffer, Size, TimeOut)函数,在串口输出终端即可看到结果。看来一切正常。

说明UART3的TX/RX脚【PD8/PD9】的确如手册所言,默认与VCP接口相连。
上面是基于查询方式做了UART的发送,如果采用DMA方式呢?我们也可以顺便体验下。
我这里使用GPDMA1的CH0和CH1,分别实现UART3的接收与发送。UART3的DMA接收采用Circular模式,外设到内存的传输方向;发送采用Normal模式,内存到外设的传输方向。源端与目的端访问数据宽度均为Byte。DMA请求使用标准请求模式。



创建基于STM32HAL库的工程,添加、整理用户代码。
#deifne RX_SIZE (16)
#define TX_SIZE (33)
ALIGN_32BYTES (uint8_t tx1_buffer[])='**STM32H5 UART Test with Polling**
';
ALIGN_32BYTES (uint8_t tx_buffer[])='**STM32H5 UART Test with DMA**
';
ALIGN_32BYTES (uint8_t rx_buffer[16]);
__HAL_LINKDMA(&huart3, hdmarx , handle_GPDMA1_Channel0);
__HAL_LINKDMA(&huart3, hdmatx, handle_GPDMA1_Channel1);
HAL_UART_Receive_DMA(&huart3, rx_buffer, RX_SIZE);//For RX
。。。。。
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_Delay(2023);
HAL_UART_Transmit_DMA(&huart3, (uint8_t *)tx_buffer, TX_SIZE);
//HAL_UART_Transmit(&huart3, (uint8_t *)tx1_buffer, 37,0xfff);
huart3.gState = HAL_UART_STATE_READY;
}
稍加调试后运行程序看结果。下面左侧窗口为UART3通过DMA发送出来的信息,右侧为串口助手发送后UART3通过DMA接收到的信息。
好,基于STM32H5的UART通信的演示就到这里。内容不难,主要是做了些验证。这些验证过程及结果的确也能为初次接触该板或该MCU系列的人在遇到相关问题时予以信心,在调试受阻时能尽快地锁定问题方向。毕竟做开发调试时,信心和问题方向都是非常重要的因素。
上一篇:STM32F7X硬件电路设计解读
下一篇:STM32 ILI9341驱动TFTLCD屏(四)
推荐阅读最新更新时间:2026-03-21 22:08
- Er3105Di 500Ma宽输入电压同步降压稳压器内部默认参数选择典型应用示意图
- 使用 LTC2377CMS-16、16 位、500ksps、低功耗 SAR ADC 的典型应用
- L7806C负输出电压电路的典型应用
- LT3959 的典型应用 - 具有 6A、40V 开关的宽输入电压范围升压/SEPIC/反相转换器
- LPS33W适配器板,标准DIL24插座
- 使用 Analog Devices 的 LT3470AIDDB 的参考设计
- MC33364通用输入电池充电器典型应用电路
- AM2G-2405SH30Z 5V 2W DC/DC 转换器的典型应用
- 用于电池测试解决方案的 ADP1972 降压或升压、PWM 控制器的典型应用
- LT1121IS8-3.3 5V 低压差稳压器的典型应用电路,用于具有关断的电池供电电源


Ethernet 接口 MII 模式下 CRS 等信号的处理
【Follow me第三季第2期】FRDM-MCXN947 任务源码汇总帖下载
斯坦福大学Mobile ALOHA 机器人开源资料
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号