国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看
打開APP
未登錄
開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
CRC校驗(yàn)的C語言實(shí)現(xiàn)
xingwangjy
>《STM32》
2015.04.30
關(guān)注
如下內(nèi)容來自網(wǎng)絡(luò),剛好看到有人在談?wù)撨@個(gè)話題,數(shù)據(jù)的準(zhǔn)確應(yīng)該是通信中后期處理最重要的依據(jù):
CRC校驗(yàn)的C語言實(shí)現(xiàn)
下面我們以CRC-16為例來說明任意長度數(shù)據(jù)流的CRC校驗(yàn)碼生成過程。我們采用將數(shù)據(jù)流分成若干個(gè)8bit字符,并由低字節(jié)到高字節(jié)傳送的并行方法來求CRC校驗(yàn)碼。具體計(jì)算過程為:用一個(gè)16bit的寄存器來存放CRC校驗(yàn)值,且設(shè)定其初值為0x0000;將數(shù)據(jù)流的第一個(gè)8bit與16bit的CRC寄存器的高字節(jié)相異或,并將結(jié)果存入CRC寄存器高字節(jié);CRC寄存器左移一位,最低1bit補(bǔ)零,同時(shí)檢查移出的最高1bit,若移出的最高1bit為0,則繼續(xù)按上述過程左移,若最高1bit為1,則將CRC寄存器中的值與生成多項(xiàng)式碼相異或,結(jié)果存入CRC寄存器值;繼續(xù)左移并重復(fù)上述處理方法,直到將8bit數(shù)據(jù)處理完為止,則此時(shí)CRC寄存器中的值就是第一個(gè)8bit數(shù)據(jù)對應(yīng)的CRC校驗(yàn)碼;然后將此時(shí)CRC寄存器的值作為初值,用同樣的處理方法重復(fù)上述步驟來處理下一個(gè)8bit數(shù)據(jù)流,直到將所有的8bit字符都處理完后,此刻CRC寄存器中的值即為整個(gè)數(shù)據(jù)流對應(yīng)的CRC校驗(yàn)碼。
下面示出了其計(jì)算過程的流程圖:
在用C語言編寫CRC校驗(yàn)碼的實(shí)現(xiàn)程序時(shí)我們應(yīng)該注意,生成多項(xiàng)式 對應(yīng)的十六進(jìn)制數(shù)為0x18005,由于CRC寄存器左移過程中,移出的最高位為1時(shí)與 相異或,所以與16bit的CRC寄存器對應(yīng)的生成多項(xiàng)式的十六進(jìn)制數(shù)可用0x8005表示。下面給出并行處理8bit數(shù)據(jù)流的C源程序:
unsigned short crc_dsp(unsigned short reg, unsigned char data_crc)
//reg為crc寄存器, data_crc為將要處理的8bit數(shù)據(jù)流
{
unsigned short msb; //crc寄存器將移出的最高1bit
unsigned short data;
unsigned short gx = 0x8005, i = 0; //i為左移次數(shù), gx為生成多項(xiàng)式
data = (unsigned short)data_crc;
data = data << 8;
reg = reg ^ data;
do
{
msb = reg & 0x8000;
reg = reg << 1;
if(msb == 0x8000)
{
reg = reg ^ gx;
}
i++;
}
while(i < 8);
return (reg);
}
以上為處理每一個(gè)8bit數(shù)據(jù)流的子程序,在計(jì)算整個(gè)數(shù)據(jù)流的CRC校驗(yàn)碼時(shí),我們只需將CRC_reg的初值置為0x0000,求第一個(gè)8bit的CRC值,之后,即可將上次求得的CRC值和本次將要處理的8bit數(shù)據(jù)作為函數(shù)實(shí)參傳遞給上述子程序的形參進(jìn)行處理即可,最終返回的reg值便是我們所想得到的整個(gè)數(shù)據(jù)流的CRC校驗(yàn)值。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)
。
打開APP,閱讀全文并永久保存
查看更多類似文章
猜你喜歡
類似文章
CRC原理的理解與C語言
哪位大哥熟悉CRC16 CRC32,能幫掃掃盲么?
CRC從原理到實(shí)現(xiàn)
CRC原來是這么回事!
c語言CRC校驗(yàn)
Modbus CRC校驗(yàn)程序
更多類似文章 >>
生活服務(wù)
首頁
萬象
文化
人生
生活
健康
教育
職場
理財(cái)
娛樂
藝術(shù)
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點(diǎn)擊這里,查看已保存的文章
導(dǎo)長圖
關(guān)注
一鍵復(fù)制
下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時(shí)立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×