有时使用STM32CubeMX生成串口和DMA时,要把DMA的初始化放到串口初始化之前,否则DMA接收的数据有问题,只收到最后一个字节的数据。
生成是这样的:
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_DMA_Init();
要改成这样:
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART1_UART_Init();
这是STM32CubeMX的BUG,有可能以前是用旧软件生成的工程属性,与新版本不一样。