|
利用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 ); } |
程序卡死在USB_EPStartXfer这里
SDIO 初始化 死在 __HAL_RCC_SDIO_CLK_ENABLE语句上
我现在使用STM32F446ZET6芯片,外挂了16m的片外SDRAM。想把程序在SDRAM中运行,一直尝试没有成功,希望得到帮助,是否有相关的例子或参考的文档
MotorControl Workbench 6.4.1 生成 FOC 项目代码后运行死机。
STM32F405rgt6 I2S DMA输入会造成卡死,这个芯片有BUG
USBX在F407上创建CDC不能正常使用
串口DMA收发出现ORE错误
STM32F427ZGTx内部RTC秒及亚秒同步问题
stm32使用hal库数据疑问
stm32使用hal库开发串口通讯问题
微信公众号
手机版
楼主可以参考下面的博客说明,写得挺好的。 两行代码就搞定了~~
STM32使用串口空闲中断(IDLE)和 DMA接收一串数据流_stm32串口空闲中断_ONE_Day|的博客-CSDN博客
HAL库踩坑记录-CSDN博客