野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9965|回复: 2

电机——串口中断函数中这些代码什么意思呀?求大佬指点

[复制链接]
发表于 2021-12-1 20:01:21 | 显示全部楼层 |阅读模式
//串口接收数组
unsigned char UART_RxBuffer[UART_RX_BUFFER_SIZE];
//串口接收数组指针
unsigned char UART_RxPtr;
/* 命令接收完成 */
uint8_t receive_cmd = 0;

void USART1_IRQHandler(void)
{
  __IO uint8_t data;

  if(__HAL_UART_GET_IT_SOURCE(&UartHandle, UART_IT_RXNE) != RESET)
        {
    data = UartHandle.Instance->DR;

    //如果为退格键
    if(data == '\b')
    {
      //如果指针不在数组的开始位置
      if(UART_RxPtr)
      {
        Usart_SendByte('\b');
        Usart_SendByte(' ');
        Usart_SendByte('\b');
        UART_RxPtr--;
        UART_RxBuffer[UART_RxPtr]=0x00;
      }
    }
    //如果不是退格键
    else
    {
      //将数据填入数组UART_RxBuffer
      //并且将后面的一个元素清零如果数组满了则写入最后一个元素为止
      if(UART_RxPtr < (UART_RX_BUFFER_SIZE - 1))
      {
        UART_RxBuffer[UART_RxPtr] = data;
        UART_RxBuffer[UART_RxPtr + 1]=0x00;
        UART_RxPtr++;
      }
      else
      {
        UART_RxBuffer[UART_RxPtr - 1] = data;
        Usart_SendByte('\b');
      }
      //如果为回车键,则开始处理串口数据
      if(data == 13 || data == 10)
      {
        receive_cmd = 1;
      }
      else
      {
        Usart_SendByte(data);
      }
    }

    __HAL_UART_CLEAR_FLAG(&UartHandle, UART_IT_RXNE);
  }

//  HAL_UART_Receive_IT(&UartHandle, &data, sizeof(data));

  HAL_UART_IRQHandler(&UartHandle);
}

回复

使用道具 举报

发表于 2021-12-2 09:13:08 | 显示全部楼层
他这个主要是一些情况的判断,按什么键,就进入处理中断的对应事件中去
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-3 16:13:22 | 显示全部楼层
LF_laffy 发表于 2021-12-2 09:13
他这个主要是一些情况的判断,按什么键,就进入处理中断的对应事件中去

我试了试把退格键判断那些代码删了也不影响程序。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 03:06 , Processed in 0.027892 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表