
首先说一下过程,之前在F1,F0上使用DMA串口发送和接收数据,开启空闲中断接收不定长数据,都没有任何问题。后来用上了G030,使用串口1做的DMA收发,同样也没有问题。后来有一个项目,因为需要单片机有UID(G030没有UID),所以更换单片机为G071CB,使用CUBEMX做配置,串口1和串口2都使用DMA收发数据,结果串口2的收发没有任何问题,串口1发不出去数据,也接收不了数据,但是更改函数HAL_UART_Transmit_DMA(&huart1,aTx1Buffer,4);为HAL_UART_Transmit_IT(&huart1,aTx1Buffer,4);就可以正常收发,即串口1用DMA 无法收发,用中断方式可以收发,使用官方dome程序也无法收发,折腾了几天,无解,最后改成了中断收发了。 |
STM32G0b1 USB device cdc显示设备描述符请求失败
基于STM32U575的RFID信息审查系统?
STM32L433VCT6 LCD复用引脚如何分配?(同一个引脚同一个复用功能里还有三类引脚)
STM32CubeProgrammer 安装错误,请帮忙解决,谢谢
STM32CubeMX 配置STM32G070RBT6TR时无法使能PVD中断
STM32G070RBT6TR STM32CubeMX ADC配置后使用的是内部参考电压且零点的读数太大了
测评在哪里发?
Group Study vs. Solo Study: What Works Best?
STM32G070CBT6使用硬件SPI无法读出W25Q128的ID
STM32G0B0CET6的usb的时钟只能用48MHz的晶振来实现吗?
关于IDLE中断的处理不要完全使用它的处理代码,它没有考虑到不定长接收,这个地方应说有bug,需要自行处理下。
查看了一下cubemx自动生成的代码,串口1的初始化在DMA初始化之前,串口2的初始化在DMA初始化之后。不知道如何调整cubemx生成初始化代码的顺序。但感觉很有可能是这个问题,导致DMA配置失败。
[md]这个顺序会影响的。
偶尔会有人反馈这个问题。
这里有个相关话题专门介绍。一个跟初始化顺序有关的异常话题 (qq.com)