硬件:STM32F103RCT6
软件:STM32CubeIDE Version: 1.8.0
时钟参数

增加串口

增加DMA

增加中断

修改main.c
int main(void)
{
………………………………………………
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART1_UART_Init(); //注意这里的语句顺序,与CubeIDE生成的顺序不同。默认的顺序,使用DMA传输时,串口只能收到最后一个字节。
/* USER CODE BEGIN 2 */
//使能DMA接收
HAL_UART_Receive_DMA(&huart1,rx_buffer,BUFFER_SIZE);
/* USER CODE END 2 */
………………………………………………
}

本文介绍了如何在STM32F103RCT6上使用STM32CubeIDE v1.8.0配置串口、DMA和中断,以实现数据的高效接收和发送。在main.c文件中,通过调整初始化顺序解决了仅接收最后一个字节的问题,并启用DMA接收。在中断服务函数中,处理IDLE中断,完成数据接收并复用DMA进行回传。实验结果显示,该设置能够正确处理串口数据并确保数据完整传输。

3624

被折叠的 条评论
为什么被折叠?



