[STM32F4] STM32F405 uart DMA收发数据问题

[复制链接]
1771|16
 楼主| flycamelaaa 发表于 2023-8-28 16:13 | 显示全部楼层 |阅读模式
利用dma+ldle接收数据,使用STM32cubemx生成driver,使用hal库发现仅能接收一次数据,然后串口busy无法再次触发中断,然后使用标准库编写测试代码,数据接收问题解决,数据输出乱码,波特率设置无误(debug显示接收数据正常)请问是不是哪里配置不对?

cube生成代码之外user config如下:

void usart_transmit_buffer_f( uint8_t *p_buffer, uint32_t g_len ) { while( !LL_USART_IsActiveFlag_TXE( USART2 ) ); LL_DMA_ClearFlag_TC6( DMA1 ); LL_DMA_DisableStream( DMA1, LL_DMA_STREAM_6 ); LL_DMA_SetMemoryAddress( DMA1, LL_DMA_STREAM_6, ( uint32_t )( &p_buffer ) ); LL_DMA_SetPeriphAddress( DMA1, LL_DMA_STREAM_6, ( uint32_t )( &USART2->DR ) ); LL_DMA_SetDataLength( DMA1, LL_DMA_STREAM_6, 35 ); LL_DMA_EnableStream( DMA1, LL_DMA_STREAM_6 ); }

void user_config( void )

{

LL_DMA_SetPeriphAddress( DMA1, LL_DMA_STREAM_5, ( uint32_t )( &USART2->DR ) ); LL_DMA_SetDataLength( DMA1, LL_DMA_STREAM_5, DRIVER_UART_MAXNUM ); LL_DMA_SetMemoryAddress( DMA1, LL_DMA_STREAM_5, ( uint32_t )( &g_usart3_receive_buffer ) ); LL_USART_EnableIT_IDLE( USART2 ); LL_DMA_EnableStream( DMA1, LL_DMA_STREAM_5 ); LL_USART_EnableDMAReq_RX( USART2 );

LL_DMA_SetPeriphAddress( DMA1, LL_DMA_STREAM_6, ( uint32_t )( &USART2->DR ) ); LL_DMA_EnableIT_TC( DMA1, LL_DMA_STREAM_6 ); LL_USART_EnableDMAReq_TX( USART2 );

}
月亮一键变蓝 发表于 2023-9-10 14:58 | 显示全部楼层
波特率跟DMA没啥关系吧
在曼谷的春 发表于 2023-9-10 15:05 | 显示全部楼层
波特率无误,但是时钟晶振配置之类的有没有可能有问题啊
西洲 发表于 2023-9-10 17:17 | 显示全部楼层
你只能收到一次数据,可能是那里的标记没清掉吧
未说出口的像你 发表于 2023-9-10 19:30 | 显示全部楼层
一般可以跟踪仿真一下,看看程序怎么运行的
她已醉 发表于 2023-9-10 22:40 | 显示全部楼层
DMA这块你可以用官方的例程来跑的啊
白马过平川 发表于 2023-9-11 01:04 | 显示全部楼层
乱码,是不是外围有啥干扰的啊
温室雏菊 发表于 2023-9-11 05:42 | 显示全部楼层
你还是用的LL库啊?
我吃小朋友 发表于 2023-9-11 08:30 | 显示全部楼层
其实用HAL配置就好了,用cubemx来配置
将爱藏于深海 发表于 2023-9-11 10:59 | 显示全部楼层
这么看,看不出毛病的,楼主能否发一份工程上来看看
失物招領 发表于 2023-9-11 15:00 | 显示全部楼层
收到一次数据就不好使了,我之前遇到过,当时我是一个主要的全局标记没清,导致没收到数据
Henryko 发表于 2023-9-11 21:44 | 显示全部楼层
用cubemx可以直接生成
MessageRing 发表于 2023-9-14 23:47 | 显示全部楼层
有没有忘记清的标志位啊
Jacquetry 发表于 2023-9-16 23:35 | 显示全部楼层
能收到一次的话可能就是有什么标志位没清
Bowclad 发表于 2023-9-17 21:57 | 显示全部楼层
检查下程序是不写的有问题
Undshing 发表于 2023-9-18 22:59 | 显示全部楼层
HAL_UARTEx_ReceiveToIdle_DMA
Mowergy 发表于 2023-10-19 10:36 | 显示全部楼层
检查时钟晶振配置之类的有没有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

837

主题

4432

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部