STM32Cube IDE配置串口发送与接收
Posted lizhiqiang0204
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32Cube IDE配置串口发送与接收相关的知识,希望对你有一定的参考价值。
此项目源码下载地址:https://github.com/lizhiqiang0204/STM32CubeIDE_Uart
串口与中断配置如下
在生成的main函数中,添加开启串口接收中断
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_USART1_UART_Init(); /* USER CODE BEGIN 2 */ LED2(OFF); HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRx1Buffer, 1);//使能串口接收中断 printf("************FreeRTOS******************** "); /* USER CODE END 2 */
然后在接收中断回调函数中写接收过程
/* USER CODE BEGIN 4 */ /** * @brief Rx Transfer completed callbacks. * @param huart pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Prevent unused argument(s) compilation warning */ UNUSED(huart); /* NOTE: This function Should not be modified, when the callback is needed, the HAL_UART_TxCpltCallback could be implemented in the user file */ if(huart->Instance == huart1.Instance) { if(bRx1_complete != 0) return; if(Uart1_Rx_Cnt >= 255) { Uart1_Rx_Cnt = 0; memset(Uart1_RxBuff,0x00,sizeof(Uart1_RxBuff)); } else { Uart1_RxBuff[Uart1_Rx_Cnt] = aRx1Buffer; Uart1_Rx_Cnt++; if((Uart1_RxBuff[Uart1_Rx_Cnt-1] == 0x0A)&&(Uart1_RxBuff[Uart1_Rx_Cnt-2] == 0x0D)) { Uart1_Rx_Cnt= 0; bRx1_complete = 0; } } } HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRx1Buffer, 1); } /* USER CODE END 4 */
调试结果如下:
以上是关于STM32Cube IDE配置串口发送与接收的主要内容,如果未能解决你的问题,请参考以下文章