|
利用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 ); } |
简单平稳过度-回顾2025&说说我心中的ST中文论坛
stm32f746g-disco开发板的串口通讯连接方式
我最近在用stm32f407做CAN通讯的回环+静默,但是现在显示可以成功发送数据,FIFO接收不到数据,这是什么原因啊
DMA传输完成后,串口与DMA一直处于忙状态
CubeAI如何加载caffe模型
stm32f407的adc采样不稳?
STM32F407VET6 能适配哪些FATFS版本文件
stm32 定时器外部时钟1的TI1FP1及TI2FP2的设置问题
STM32F1定时器中触发信号TRC的来源及选择配置是怎么样的
Error in final launch sequence: Failed to execute MI command: target remote localhost:61234
微信公众号
手机版
楼主可以参考下面的博客说明,写得挺好的。 两行代码就搞定了~~
STM32使用串口空闲中断(IDLE)和 DMA接收一串数据流_stm32串口空闲中断_ONE_Day|的博客-CSDN博客
HAL库踩坑记录-CSDN博客