久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3770|回復: 0
打印 上一主題 下一主題
收起左側

stm32簡單的串口modbus-rtu數據處理方法

[復制鏈接]
跳轉到指定樓層
樓主
ID:645302 發表于 2019-12-17 16:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

//crc校驗
u16 crc16(u8 *puchMsg, u16 usDataLen)
{
        u8 uchCRCHi = 0xFF ;
        u8 uchCRCLo = 0xFF ;
        u32 uIndex ;
        while (usDataLen--)
        {
                  uIndex = uchCRCHi ^ *puchMsg++ ;
                  uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
                  uchCRCLo = auchCRCLo[uIndex] ;
        }
        return (uchCRCHi << 8 | uchCRCLo) ;
}
//數據校驗
unsigned short Check_Dat(unsigned char *pp,unsigned char Dat_len)
{
                        unsigned char Crc_H,Crc_L;
                        Crc_H = (unsigned char )crc16(pp,Dat_len);
                        Crc_L = (unsigned char )(crc16(pp,Dat_len)>>8);

                        if((Crc_H == *(pp+Dat_len))&&(Crc_L ==  *(pp+Dat_len+1)))
                        return Crc_Ok;
                        else
                        {
                                return Crc_Err;
                        }
}


void USART3_IRQHandler(void)//串口接收中斷
{
         
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
        {
                        buf[len] =USART_ReceiveData(USART3);//(USART1->DR);
                        len++;
                        if(len>7)//8個字節開始校驗
                        {
//                                LEDB=!LEDB;               
                          if( Check_Dat(buf,len)==Crc_Ok)
                                {               
//                                  LEDA=!LEDA;
                                         
                                        MRS485_Receive_Data();//接收數據處理
                               
                                        Rec_Buf_clean(buf,len);清空接收數據
                                        len=0;
                                }
                               
                                if(len>=30)//接收30個字節還未通過校驗
                                {
                                        Rec_Buf_clean(buf,len);
                                        len=0;
                                }
                               
                 }
                 
           USART_ClearFlag(USART3,USART_FLAG_RXNE);
               
        }   
}


void Rec_Buf_clean(u8 *point,u8 len ) //清空數組
{
        int p;
        for (p=0;p<len;p++)
        {
                point[p]=0;
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品在线免费观看 | 91高清视频在线观看 | 中文字幕不卡视频在线观看 | 中文字幕成人网 | 懂色av蜜桃av | 中文字幕在线看人 | 999免费观看视频 | 亚洲精品乱码久久久久久蜜桃 | 亚洲国产精品一区 | 亚洲一区二区三区免费观看 | 日韩精品二区 | 毛片韩国| 狠狠操av| 一区视频| 久久国产美女视频 | 激情五月综合网 | 亚洲国产精品久久久 | 91精品国产91久久久久久吃药 | 成人免费观看视频 | 国产精品成人在线播放 | 国产 日韩 欧美 制服 另类 | 在线国产一区二区三区 | 国产精品久久久久久久久久久久 | 国产伦精品一区二区三区高清 | 午夜丰满寂寞少妇精品 | www国产精 | 亚洲免费在线视频 | 瑟瑟激情 | 91成人在线视频 | 在线观看国产h | 久久久久久高清 | 四色永久 | 一区二区三区电影在线观看 | 国产精品视频偷伦精品视频 | 日韩欧美手机在线 | 久久久久成人精品免费播放动漫 | 亚洲国产一 | 亚洲精品综合 | 精品在线视频播放 | 黄色欧美在线 | 激情欧美一区二区三区 |