zoukankan      html  css  js  c++  java
  • 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 */

    调试结果如下:

  • 相关阅读:
    MySQL锁(阻塞)
    MySQL锁类型(一致性是非锁定读、自增和外键)
    MySQL锁算法(行锁的三种算法以及解决幻读问题)
    MySQL锁概述
    MySQL锁问题(脏读、不可重复读、幻读)
    MySQL默认隔离级别对应解决的三种问题
    简单动态字符串
    限流
    # SpringBoot自定义线程池
    & 生产环境mysql问题记录
  • 原文地址:https://www.cnblogs.com/lizhiqiang0204/p/11659957.html
Copyright © 2011-2022 走看看