完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在调用HAL_UART_Transmit_DMA函数连续发送时发现发不出去(while(1)可以持续发送但可能丢了不少包),返回值为HAL_BUSY,条件即huart->gState == HAL_UART_STATE_READY不成立。在网上找解决方法都不能解决这个问题,比如在/* Set the UART DMA transfer complete callback */和/* Set the UART DMA Half transfer complete callback */中给 huart->gState赋值也不行。请问有什么好的解决方法?感觉也不像是数据还没发送完。
|
|
相关推荐
1个回答
|
|
在使用DMA发送数据时,遇到返回值为HAL_BUSY的情况一般是由于DMA传输还未完成。下面给出几个可能的原因和解决方法:
1. 数据长度不正确:确保传输的数据长度为预期的长度,特别是当发送的数据不是固定长度的时候。 2. DMA传输未完全结束:DMA传输可能需要一定时间才能完成,确保在检查状态之前等待DMA传输完全结束。可以使用HAL_DMA_IRQHandler函数处理DMA传输中断,并在DMA完成传输后调用HAL_UART_DMAStop函数停止DMA传输。 3. DMA通道被其他外设占用:DMA通道可能被其他外设占用,导致HAL_BUSY状态。可以修改代码,使用其他未被占用的DMA通道。 4. DMA传输缓冲区溢出:DMA传输的缓冲区可能已满,导致不能继续发送数据。可以增加缓冲区的大小,或者修改代码以处理缓冲区溢出的情况。 5. 中断优先级设置不正确:确保UART和DMA相关的中断优先级正确设置,以确保中断能够正确处理。 6. 错误的硬件连接:确保UART和DMA的硬件连接正确,包括引脚连接和电源连接等。 如果以上方法都不能解决问题,建议参考芯片厂商提供的文档和示例代码,或者咨询厂商技术支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:16 , Processed in 0.667085 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号