一.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 打开/关闭 小灯