开发环境:
开发板:STM32F769NI-Discovery
KEIL版本:5.33
STM32CubeMX版本:6.3.0
本篇主要讲STM32F769NI的串口实现
STM32F769NI-Discovery开发板的usb接口带有stlink与串口,连接usb到电脑,打开设备管理器找到对应的com口
根据原理图找到uart对应的引脚为STM32F769NI的PA9 PA10
通过STM32CubeMX软件进行配置
时钟部分配置参考之前的笔记
串口的配置如下
DMA功能根据自己需求开启,我这边一般是使用dma功能,将串口接收设置成循环dma
配置完成后生成代码
使用DMA发送配置前需判断DMA是否发送完成,为方便演示,这边就暂时不使用DMA发送,
程序如下
uint8_t RxBuff; uint8_t TxBuff; //接收完成回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart == &huart1) { //收到什么发什么 TxBuff = RxBuff; HAL_UART_Transmit(&huart1,&TxBuff,sizeof(TxBuff),0xffff); } }
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ //配置串口dma接收缓存 HAL_UART_Receive_DMA(&huart1,&RxBuff,sizeof(RxBuff)); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //系统运行指示灯 HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); HAL_Delay(200); } /* USER CODE END 3 */ }
运行现象
![0](/i/l/?n=22&i=blog/1582082/202208/1582082-20220831153947127-1220995207.png)