注意:此程式計算出的crc值,和電腦版crc計算工具計算出的值不一樣。
c程式如下:
//! crc16_ibm standard, polygon code 0x8005
const uint16 crc_tab16 =;
//! crc32_common standard, polygon code 0x04c11db7
const uint32 crc_tab32 =;
const uint16 crc_init = 0x3aa3;/*
****************** crc calculationns ********************
*/uint16 crc16update(uint16 crc, uint8 ch)
uint32 crc32update(uint32 crc, uint8 ch)
uint16 crc16calc(
const uint8*pmsg, uint32 nlen)
return
wcrc;
}uint32 crc32calc(
const uint8*pmsg, uint32 nlen)
return
wcrc;
}
只需要了解 crc16calc 和 crc32calc 函式的使用即可, 這兩個函式的用法相同。以 crc16calc 舉例,例如有陣列a[20] = , 若要計算這10個數的crc16的值,則呼叫crc16calc((uint8*)a, 10);的返回值0xe48f就是其crc16的值,將crc16的值填到資料末尾(小端儲存)後成為a[20] = , 然後再計算這12個數的crc16的值將會是0。
所以 crc16calc的用法是:
1. 傳送端呼叫crc16calc((uint8*)a, n) ; 計算出要傳送n個位元組的資料a的crc16的值, 然後以小端儲存方式追加到n個資料的末尾
2. 接收端將接收到n+2個位元組資料,呼叫crc16calc((uint8*)a, n+2);返回值是0說明校驗成功。
所以 crc32calc的用法是:
1. 傳送端呼叫crc32calc((uint8*)a, n) ; 計算出要傳送n個位元組的資料a的crc32的值, 然後以小端儲存方式追加到n個資料的末尾
2. 接收端將接收到n+4個位元組資料,呼叫crc32calc((uint8*)a, n+4);返回值是0說明校驗成功。
微控制器和嵌入式的概念 入門嵌入式必備
如果之前知道微控制器和嵌入式的話,那麼對於這兩者還是有點基礎的,如果不知道的話,那麼難免對他們有些誤解,很多人甚至還覺得這可能是一種,只是名字不一樣而已,下面快點來了解下微控制器和嵌入式的概念吧。微控制器和嵌入式的概念 一 什麼是微控制器?首先明確概念,什麼是微控制器,微控制器是一種積體電路晶元,是...
微控制器,ARM,FPGA和嵌入式的特點
簡單的說,嵌入式是嵌入式系統的簡稱,所謂嵌入式系統是指嵌入到應用物件中的專用計算機系統。這裡的物件就是指產品,比如日常使用的冰箱 空調 洗衣機,或者手機 遊戲機等。這些產品中都有計算機系統,這類計算機系統就是嵌入式計算機系統。至於微控制器 arm fpga dsp等都是實現嵌入式系統的硬體平台。根據...
從微控制器到嵌入式
1 什麼是微控制器?微控制器是乙個控制系統,接收管腳中斷輸入,進行一些簡單的邏輯操作,對記憶體或flash進行訪問,再輸出到管腳 2 什麼是嵌入式?嵌入式有linux核心 linux核心功能有 程序管理 記憶體管理 檔案系統管理 裝置驅動 網路管理 3 微控制器和嵌入式有什麼共同點?都是靠中斷驅動,...