MK32E User Manual V1.1
82
2023 SIYI Technology, All Rights Reserved
uint16_t CRC16_cal(uint8_t *ptr, uint32_t len, uint16_t crc_init)
{
uint16_t crc, oldcrc16;
uint8_t temp;
crc = crc_init;
while (len--!=0)
{
temp=(crc>>8)&0xff;
oldcrc16=crc16_tab[*ptr^temp];
crc=(crc<<8)^oldcrc16;
ptr++;
}
//crc=~crc; //??
return(crc);
}
uint8_t crc_check_16bites(uint8_t* pbuf, uint32_t len,uint32_t* p_result)
{
uint16_t crc_result = 0;
crc_result= CRC16_cal(pbuf,len, 0);
*p_result = crc_result;
return 2;
}
const uint16_t crc16_tab[256]= {0x0,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,
0x1231,0x210,0x3273,0x2252,0x52b5,0x4294,0x72f7,0x62d6,