实现串口接收功能,首先要在while(1)前面开启串口接收中断,HAL_UART_Receive_IT(&huart4, &buffer, 1);//接收中断标志位RXNEIE置一

uint8_t ABB[3]={0x11,11,12};
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{

            if(huart->Instance == UART4)
            {
                
            HAL_UART_Receive_IT(&huart4, &rx_buffer, 1);
            
                
                
            HAL_UART_Transmit_IT(&huart4, ABB, 3);实现数组数据发送


      HAL_GPIO_WritePin(GPIOI, GPIO_PIN_5, GPIO_PIN_RESET);


            }

实现串口回显功能

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{

            if(huart->Instance == UART4)
            {
                
            HAL_UART_Receive_IT(&huart4, &rx_buffer, 1);
            
                
                
            HAL_UART_Transmit_IT(&huart4, &rx_buffer, 1);


      HAL_GPIO_WritePin(GPIOI, GPIO_PIN_5, GPIO_PIN_RESET);


            }

上面两种功能均使用HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)回调函数,这种函数本质上是用void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)来处理这个接收回调函数,然而HAL_UART_IRQHandler里面可以处理所有和串口中断相关的功能。下面使用这个函数来进行串口的回显功能

uint16_t buffer123;//定义收发的数据
void UART4_IRQHandler(void)
{
  /* USER CODE BEGIN UART4_IRQn 0 */

  /* USER CODE END UART4_IRQn 0 */
//  HAL_UART_IRQHandler(&huart4);这个函数会清除接收标志位
  /* USER CODE BEGIN UART4_IRQn 1 */
                if((__HAL_UART_GET_FLAG(&huart4, UART_FLAG_RXNE) != RESET)&& (__HAL_UART_GET_IT_SOURCE(&huart4, UART_IT_RXNE) != RESET)){//获取接收标志位,以及接收中断使能
               HAL_GPIO_WritePin(GPIOI, GPIO_PIN_5, GPIO_PIN_RESET);

                buffer123=UART4->DR&0xFFFF;//将数据寄存器里面接收到的低八位数据传给变量
                __HAL_UART_ENABLE_IT(&huart4, UART_IT_TXE);//开启发送中断使能
             }
                
            if((__HAL_UART_GET_FLAG(&huart4, UART_FLAG_TXE) != RESET)&& (__HAL_UART_GET_IT_SOURCE(&huart4,UART_IT_TXE) != RESET)){//获取发送标志位,以及发送中断使能
             
                UART4->DR = buffer123;//将数据传给发送寄存器
                __HAL_UART_DISABLE_IT(&huart4, UART_IT_TXE);//关闭发送使能,不然会一直发送
             }
  /* USER CODE END UART4_IRQn 1 */
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐