蓝桥杯嵌入式-9:UART串口通信

本文介绍了如何在CubeMx中配置PA9和PA10的中断,并使用USART进行串口通信,包括发送和接收代码,以及数据的解析过程。
摘要由CSDN通过智能技术生成
  1. 硬件连线
  2. CubeMx中配置PA9和PA10
  3. 参数配置
  4. 中断配置
  5. 发送代码
    #include "string.h"  //为使用strlen()函数
    
    int main(void)
    {
        char uart_text[20];
        sprintf(uart_text,"frq=%d\r\n",frq1);
        HAL_UART_Transmit(&huart1,(uint8_t*)uart_text,strlen(uart_text),50);
    }

  6. 接受&解析
    1. 在key_of_timer.c文件中
      #include "usart.h"
      
      char rxdata[30]; //临时接受数组
      uint8_t rx; //数据存储数组
      unsigned char rx_point; //指针指向数据存储到哪了
      //串口接收回调函数
      void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
      {
          rxdata[rx_point++] = rx; //每次将上次接受到的数据存储下来
          HAL_UART_Receive_IT(&huart1,&rx,1); //必须为1,因为每次中断只能接受1个字符
      }

    2. 在main文件中
      #include "usart.h"
      
      char car_type[5];
      char car_data[5];
      char car_time[13];
      
      extern char rxdata[30]; //临时接受数组
      extern uint8_t rx; //数据存储数组
      extern unsigned char rx_point; //指针指向数据存储到哪了
      
      
      //串口解析函数
      void uart_rx_proc(void)
      {
          if(rx_point>0)//表示接受到
          {
              if(rx_point == 12)
              {
                  sscanf(rxdata,"%4s:%4s:%2s",car_type,car_data,car_time);//使用该函数按格式进行拆分
              }
              else
              {  //错误则发送消息
                  char uart_text[20];
                    sprintf(uart_text,"Error");
                    HAL_UART_Transmit(&huart1,(uint8_t*)uart_text,strlen(uart_text),50);
              }
              rx_point=0;//指针归为
              memset(rxdata,0,30);//数组全清0
          }
      }
      int main(void)
      {
          HAL_UART_Receive_IT(&huart1,&rx,1); //必须为1,因为每次中断只能接受1个字符
          while(1)
          {
              uart_rx_proc();
          }
      }

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值