打印
[STM32F4]

STM32F405 uart DMA收发数据问题

[复制链接]
599|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 | 只看该作者
你只能收到一次数据,可能是那里的标记没清掉吧

使用特权

评论回复
5
未说出口的像你| | 2023-9-10 19:30 | 只看该作者
一般可以跟踪仿真一下,看看程序怎么运行的

使用特权

评论回复
6
她已醉| | 2023-9-10 22:40 | 只看该作者
DMA这块你可以用官方的例程来跑的啊

使用特权

评论回复
7
白马过平川| | 2023-9-11 01:04 | 只看该作者
乱码,是不是外围有啥干扰的啊

使用特权

评论回复
8
温室雏菊| | 2023-9-11 05:42 | 只看该作者
你还是用的LL库啊?

使用特权

评论回复
9
我吃小朋友| | 2023-9-11 08:30 | 只看该作者
其实用HAL配置就好了,用cubemx来配置

使用特权

评论回复
10
将爱藏于深海| | 2023-9-11 10:59 | 只看该作者
这么看,看不出毛病的,楼主能否发一份工程上来看看

使用特权

评论回复
11
失物招領| | 2023-9-11 15:00 | 只看该作者
收到一次数据就不好使了,我之前遇到过,当时我是一个主要的全局标记没清,导致没收到数据

使用特权

评论回复
12
Henryko| | 2023-9-11 21:44 | 只看该作者
用cubemx可以直接生成

使用特权

评论回复
13
MessageRing| | 2023-9-14 23:47 | 只看该作者
有没有忘记清的标志位啊

使用特权

评论回复
14
Jacquetry| | 2023-9-16 23:35 | 只看该作者
能收到一次的话可能就是有什么标志位没清

使用特权

评论回复
15
Bowclad| | 2023-9-17 21:57 | 只看该作者
检查下程序是不写的有问题

使用特权

评论回复
16
Undshing| | 2023-9-18 22:59 | 只看该作者
HAL_UARTEx_ReceiveToIdle_DMA

使用特权

评论回复
17
Mowergy| | 2023-10-19 10:36 | 只看该作者
检查时钟晶振配置之类的有没有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

562

主题

1979

帖子

0

粉丝