使用STM32G030F6P6做了个小项目,使用了串口空闲中断+DMA接收数据。期间发现总是接收不到数据,排查了配置代码,也调整了DMA优先级和DMA接收缓冲区等等能想到的,均以失败告终。之后对着以前代码发现DMA初始化函数都是放在需要用到的外设初始化前面,就尝试把DMA初始化放在了串口初始化前面,发现居然正常了。而Cubemx默认生成的stm32g030的工程是放在外设初始化后面的。。这应该算是CubeMX的坑吧?特此记录一下。
上面这个是cubemx生成的代码,无法使用DMA接收数据。换成下面图片中的初始化就可以正常接收数据了
|