【STM32F407IGT6】串口通信

📅 2026/7/9 7:30:58 👁️ 阅读次数 📝 编程学习
【STM32F407IGT6】串口通信

一.CUBE设置

注意这里要重新映射USART1的引脚,否则串口助手无法接收数据

1.普通发送

/* USER CODE BEGIN 2 */ //uint8_t test[50]="holow world"; uint8_t j[3]={0x11,0x12,0x13}; uint8_t test[] = "123\r\n"; /* USER CODE END 2 */ /* USER CODE BEGIN 3 */ HAL_UART_Transmit(&huart1, test, sizeof(test)-1, 1000); HAL_Delay(1000); } /* USER CODE END 3 */

现象:隔段时间接收数字123

2.中断发送

没有间隔时间

HAL_UART_Transmit_IT(&huart1, test, strlen((char*)test));

3.DMA发送&接收

(1)定时发送hollow world

/* USER CODE BEGIN PV */ uint8_t test[50]="hollow world"; /* USER CODE END PV */ /* USER CODE BEGIN 3 */ HAL_UART_Transmit_DMA(&huart1, test, strlen((char*)test)); HAL_Delay(1000);

(2)DMA接收并返回定长数组

/* USER CODE BEGIN 2 */ uint8_t test[32]; /* USER CODE END 2 */ HAL_UART_Receive_DMA(&huart1, test, sizeof(test)); HAL_Delay(1000); HAL_UART_Transmit_DMA(&huart1, test, strlen((char*)test));

现象:不断的返回值,并且不只返回了上次发送的值,还返回了以前发送的值

4.空闲中断+DMA(接收不定长数组)

代码参考:【STM32F407VGT6】8.5点灯&串口通信_ag32vf407vgt6-CSDN博客

同时该函数可以实现发送LED ON/OFF 打开/关闭 小灯