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 */

    调试结果如下:

  • 相关阅读:
    序列化
    restfull风格,规范的项目,django-DRF与django的区别
    JWT的应用
    七牛云上传文件
    微博三方登录
    celery原理与使用
    Redis五大数据类型
    图片验证码
    单点登录
    Django Rest Framework JWT
  • 原文地址:https://www.cnblogs.com/lizhiqiang0204/p/11659957.html
Copyright © 2011-2022 走看看