STM32-串口超时判断方式接收未知长度数据

来源:本站
导读:目前正在解读《STM32-串口超时判断方式接收未知长度数据》的相关信息,《STM32-串口超时判断方式接收未知长度数据》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM32-串口超时判断方式接收未知长度数据》的详细说明。
简介:本文给大家介绍了STM32-串口超时判断方式接收未知长度数据。

usart.c串口中断处理函数: [cpp] view plaincopy void USART1_IRQHandler(void)  {          u8 res;           if(USART1->SR&(1<<5))//接收到数据      {              res=USART1->DR;                     if(USART1_Recv_LenCV_LEN)      //还可以接收数据          {              TIM3->CNT=0;                             //计数器清空              if(Rec_Over_Flag==0)TIM3_Set(1);        //使能定时器4的中断               USART1_RX_BUF[USART1_Recv_Len++]=res;       //记录接收到的值              }else           {              Rec_Over_Flag=1;                    //强制标记接收完成          }       }                                              }   timer.c定时器中断函数  //定时器3中断服务程序       void TIM3_IRQHandler(void)  {                                         if(TIM3->SR&0X0001)//溢出中断      {             Rec_Over_Flag=1;          TIM3->SR&=~(1<<0);     //清除中断标志位          TIM3_Set(0);          LED1=!LED1;      //RxTimeout等于0,变换LED1表明该次发送结束                                                                }                             }  //设置TIM4的开关  //sta:0,关闭;1,开启;  void TIM3_Set(u8 sta)  {      if(sta)      {          TIM3->CNT=0;         //计数器清空          TIM3->CR1|=1<<0;     //使能定时器3      }else TIM3->CR1&=~(1<<0);//关闭定时器3       }   main.c主函数 [cpp] view plaincopy int main(void)  {                 u8 t;      u8 Password[7]="123456";      u8 Tishi1[]="操作码长度不对";      u8 Tishi2[]="操作码不正确";      u8 Tishi3[]="指令成功执行!";      u16 times=0;        Stm32_Clock_Init(9); //系统时钟设置      delay_init(72);      //延时初始化       uart_init(72,57600);     //串口初始化为57600      LED_Init();          //初始化与LED连接的硬件接口       Timerx_Init(99,7199);  //10kHz的技术频率,计数到100为10ms      while(1)      {             if(Rec_Over_Flag==1)          {                                    if(USART1_Recv_Len!=0x06)  //USART1_Recv_Len接收数据的长度不等于6              {                   Putstrings(Tishi1);              }              else                       // USART1_Recv_Len接收数据的长度等于6              {                  for(t=0;t                {                      if(USART1_RX_BUF[t]!=Password[t])                      {                          Putstrings(Tishi2);                          break;                      }                      else if(t==(USART1_Recv_Len-1))                      {                          Putstrings(Tishi3);                          LED0=!LED0;                      }                  }              }              Rec_Over_Flag=0;              USART1_Recv_Len=0;            }          else          {              times++;  //          if(times%30==0)LED1=!LED1;//闪烁LED,提示系统正在运行.  //          if(times%30==0)RxTimeout--;               delay_ms(10);                     }          }   }  //------------输出字符串到串口-------------------  void Putstrings(u8 *ptr)  {      while(*ptr!='')      {          USART1->DR=*ptr++;          while((USART1->SR&0X40)==0);//等待发送结束      }      USART1->DR='n';  }   

提醒:《STM32-串口超时判断方式接收未知长度数据》最后刷新时间 2024-03-14 00:57:54,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM32-串口超时判断方式接收未知长度数据》该内容的真实性请自行鉴别。