zoukankan      html  css  js  c++  java
  • UART1中断服务函数

    UART1中断

     1 extern SemaphoreHandle_t BinarySemaphore; //二值信号量句柄
     2 void USART1_IRQHandler(void)              //串口 1 中断服务程序
     3 {
     4     u8 Res;
     5     BaseType_t xHigherPriorityTaskWoken;
     6     if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
     7     {
     8         Res = USART_ReceiveData(USART1);  //(USART1->DR); //读取接收到的数据
     9         if ((USART_RX_STA & 0x8000) == 0) //接收未完成
    10         {
    11             if (USART_RX_STA & 0x4000) //接收到了 0x0d
    12             {
    13                 if (Res != 0x0a)
    14                     USART_RX_STA = 0; //接收错误,重新开始
    15                 else
    16                     USART_RX_STA |= 0x8000; //接收完成了
    17             }
    18             else //还没收到 0X0D
    19             {
    20                 if (Res == 0x0d)
    21                     USART_RX_STA |= 0x4000;
    22                 else
    23                 {
    24                     USART_RX_BUF[USART_RX_STA & 0X3FFF] = Res;
    25                     USART_RX_STA++;
    26                     if (USART_RX_STA > (USART_REC_LEN - 1))
    27                         USART_RX_STA = 0;
    28                 }
    29             }
    30         }
    31     }
    32     //释放二值信号量
    33     if ((USART_RX_STA & 0x8000) && (BinarySemaphore != NULL))
    34     {
    35         //释放二值信号量
    36         xSemaphoreGiveFromISR(BinarySemaphore, &xHigherPriorityTaskWoken);
    37         (1)
    38             portYIELD_FROM_ISR(xHigherPriorityTaskWoken); //如果需要的话进行一次任务切换
    39     }
    40 }
  • 相关阅读:
    cvxpy 示例代码
    Cora 数据集介绍
    图嵌入
    数学建模
    邮件服务器搭建
    windows安装、使用MongoDB
    Django 特殊查询
    软件测试-软件质量
    软件测试-配置管理(7)
    软件测试-缺陷管理(6)
  • 原文地址:https://www.cnblogs.com/kunshanpipixia/p/14472354.html
Copyright © 2011-2022 走看看