STM32对HAL库的串口不定长度的读写操作(三)

关于利用中断实现串口不定长接收,还可以使用串口通讯协议来控制读写的长度。

先设定停止结束标志位为0x02(自定义)。

 

新建一些数组备用:

uint8_t value;    //进入中断接收数据的变量  或 uint8_t value[1];
uint8_t getBuffer[50];  //保存接收到的数据的数组
uint8_t countOfGetBuffer = 0;    //接受到的数据长度

 

在main函数的while循环前利用下面函数开启串口接收中断:

HAL_UART_Receive_IT(&huart1, (uint8_t *)(&value), 1); //打开串口中断接收
//或者value[1]对应的HAL_UART_Receive_IT(&huart1, (uint8_t *)value, 1);
 
 

接下来可以选在重写串口接收回调函数,也可以在it.c中的中断执行函数中写。

这里用stm32f1xx_it.c中的串口中断函数写,回调函数也是一样内容的:

void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */
  /* USER CODE END USART1_IRQn 0 */
  HAL_UART_IRQHandler(&huart1);
  /* USER CODE BEGIN USART1_IRQn 1 */
    getBuffer [countOfGetBuffer] = value;    
    if(getBuffer[countOfGetBuffer] == 0x2A)  //停止位
    {
        Flag = 1;
    }
    countOfGetBuffer++;
    
    if(Flag == 1)  //停止位
    {
        if(getBuffer[0] == 0x00)//左移
        {
            Left();
        }
            else if(getBuffer[0] == 0x01)//右移复位
            {
            Reset_Motor();
            }
            else if(getBuffer[0] == 0x02)
            {
                if((S2_Read != 0) && (S3_Read != 0))
                    HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_7);
            }
                      
            for(uint8_t i = 0;i < 50;i++)  //清空缓存数组
            {
                    getBuffer[i] = 0;
            }
            Flag = 0;
            countOfGetBuffer = 0;            
    }        
      HAL_UART_Receive_IT(&huart1, (uint8_t *)&value,1); //每接收一个数据就打开一次接收
    
  /* USER CODE END USART1_IRQn 1 */
}

 

对于清空数组,有函数memset也可以直接清空缓存数组。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32G070是意法半导体公司推出的一款32位微控制器系列,适用于低功耗应用场景。而HAL库STM32系列微控制器开发中常用的硬件抽象层,可以提供方便易用的API接口,简化了对微控制器外设的驱动和控制。 STM32G070 HAL库为开发者提供了丰富的功能组件,包括GPIO(通用输入输出)、UART(串行通信)、SPI(串行外设接口)、I2C(串行外设接口)、定时器等。开发者可以通过简单的函数调用来完成对这些外设的配置和操作。 HAL库使用起来非常方便。首先,开发者需要初始化相应的外设,例如使用HAL_GPIO_Init函数初始化GPIO引脚。然后,可以使用HAL_XXX_XXX函数进行读写操作,例如使用HAL_UART_Transmit函数发送数据。此外,HAL库还提供了一些中断处理函数,如HAL_UART_RxCpltCallback可以在接收到UART数据时自动调用,方便开发者编写中断服务程序。 使用STM32G070 HAL库的好处是,它提供了一系列简单易懂的API函数,降低了使用者的开发门槛。通过使用HAL库,开发者可以更高效地利用STM32G070的功能,提高开发效率。同时,HAL库是基于CMSIS(Cortex Microcontroller Software Interface Standard,Cortex微控制器软件接口标准)开发的,保证了代码的可移植性,可以方便地迁移至其他系列的STM32微控制器。 总之,STM32G070 HAL库是适用于STM32G070系列微控制器的硬件抽象层,为开发者提供了简便易用的API接口,方便配置和操作微控制器的外设。使用HAL库可以提高开发效率,降低开发门槛,并保证代码的可移植性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值