用CubeMX对STM32F1 UART+DMA单向发送的极简编程

该博客介绍了如何使用CubeMX对STM32F103VET6微控制器进行配置,通过DMA实现在UART上的连续发送。在配置RCC、UART、GPIO和DMA后,作者发现在HAL_UART_Transmit_DMA函数内部的状态阻碍了连续发送。通过在函数返回前设置huart->gState为HAL_UART_STATE_READY,解决了这一问题,实现了连续发送字符串的功能。
摘要由CSDN通过智能技术生成

用CubeMX对F103VET6进行配置和自动生成代码,只需额外添加3条指令即可实现连续发送。

CubeMX配置:对RCC、UART、GPIO、DMA进行了常规配置,生成代码后在main.c的USER CODE BEGIN 2后插入:

uint8_t TxD_Buf[32]="Hello,STM32F103VET6!\r\n";

在main.c的USER CODE END WHILE前插入:

      HAL_Delay(100);
      HAL_UART_Transmit_DMA(&huart1,TxD_Buf,24);
编译、下载、运行后即可发送字符串,但只发送一次即停止。

原因:函数HAL_UART_Transmit_DMA内部有一状态:huart->gState阻碍了后续发送,一般由中断或其他程序对其复位,试着在此函数的return前插入“huart->gState = HAL_UART_STATE_READY;”指令,程序即可连续发送。

注:函数HAL_UART_Transmit_DMA()在stm32f1xx_hal_uart.c中,这是ST提供的HAL库函数,一般不应随意修改!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QSTECH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值