欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)超時(shí)接收程序完成 [打印本頁(yè)]

作者: bibi    時(shí)間: 2015-4-19 02:10
標(biāo)題: 單片機(jī)超時(shí)接收程序完成
  超時(shí)接收完成。在一些沒(méi)有結(jié)束位和不固定長(zhǎng)度的情況下可以使用。可移植各平臺(tái)單片機(jī)。- =。~~


  1. #define MaxLen    255               //最大長(zhǎng)度

  2. u16 RecTimNum=0;                    //接收計(jì)時(shí)
  3. FunctionalState RecStart=DISABLE;   //接收啟動(dòng)標(biāo)志位
  4. FunctionalState RecFinish=DISABLE;  //接收完成標(biāo)志位
  5. u8 ReceiveBuf[MaxLen]={0};          //接收緩沖區(qū)
  6. u8 BufLen=0;                        //接收長(zhǎng)度

  7. /* 超時(shí)接收完成函數(shù) 定時(shí)器中斷1ms進(jìn)入一次 */
  8. void Rec_TimOut(void)
  9. {
  10.     if(RecStart==ENABLE)
  11.     {
  12.         if(++RecTimNum==5)                  //5ms沒(méi)有接收到數(shù)據(jù)默認(rèn)接收完成
  13.         {
  14.             RecTimNum=0;                    //計(jì)時(shí)清零
  15.             RecStart=DISABLE;               
  16.             RecFinish=ENABLE;               //接收完成標(biāo)志位置位
  17.             //接收完成處理函數(shù)
  18.             Uart_Send(ReceiveBuf,BufLen);   //本段為將接收到的數(shù)據(jù)重新發(fā)送回串口。回環(huán)測(cè)試

  19.             BufLen=0;                       //長(zhǎng)度清零
  20.             RecFinish=DISABLE;              //接受完成
  21.         }
  22.     }
  23. }

  24. /* UART接收函數(shù) 放在串口接收中斷*/
  25. void Uart_Receive()
  26. {
  27.     u8 temp;
  28.     if(RecStart==DISABLE)           //第一次進(jìn)入串口中斷
  29.     {
  30.         RecStart=ENABLE;            //接收啟動(dòng)標(biāo)志
  31.     }
  32.     RecTimNum=0;                    //每次重新進(jìn)入串口接收中斷時(shí),清零計(jì)數(shù),表示還未接收完成
  33.     temp = UART_ReceiveData8();    //從緩沖區(qū)取出數(shù)據(jù)
  34.     ReceiveBuf[BufLen++]=temp;      //接收緩沖區(qū)

  35. }
復(fù)制代碼






測(cè)試結(jié)果如下:
  


作者: 1113634577    時(shí)間: 2019-1-29 13:15
串口等待時(shí)間超時(shí)程序,不錯(cuò)!加入crc更好




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1