开发环境: 开发板: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 */ }
运行现象 至此UART驱动完成啦 标签:DMA,CODE,HAL,UART,USER,STM32F769NI,Discovery From: https://www.cnblogs.com/jeremy2016/p/16643328.html