基于STM32H5的UART通信的演示过程.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于STM32H5的UART通信的演示过程 最近可能不少人手上弄到了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系列的人在遇到相关问题时予以信心,在调试受阻时能尽快地锁定问题方向。毕竟做开发调试时,信心和问题方向都是非常重要的因素。 审核

文档评论(0)

man9872 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档