定义函数CRC8,参数为指向校验内容的指针 pmsg和检验内容的字节数 msgsize
函数内:
1.定义6个Uint 类型的变量;i,j,carry,msg,Poly,CRC;
2.将0x07赋给Poly
3.将pmsg指向的内容赋给CRC后
4.for循环:(第一层)
i的初值为0,当i小于msgsize-1的时候,执行循环体
循环体:
4.1pmsg指针指向下一字节
将pmsg指针指向的内容赋给msg
4.2for循环:(第二层)
j的初值为0,当j小于8的时候,执行循环体
循环体:
(用sm1.1判定即可) 4.2.1将CRC与0x80按位相与,然后赋给carry
4.2.2将CRC左移1位后的值与msg右移7位后的值按位相或,然后赋值给CRC
4.2.3如果carry为真,则将CRC与Poly按位异或后赋值给CRC;carry为假,则 执行下一步
4.2.4将msg左移1位后赋值给msg
4.2.5将msg与0x00FF按位相与后赋给msg
4.2.6j自动加1后,判断j是否小于8,如果j小于8则继续执行循环体,若不小 于则跳出循环执行下一步
4.3i自动加1后,判断i是否小于msgsize-1,如果i小于msgsize-1则继续执行循环体,若不小 于则跳出循环执行下一步
5.for循环:
j的初值为0,当j小于8的时候,执行循环体
循环体:
5.1将CRC与0x80按位相与,然后赋值给carry
5.2将CRC左移1位后,赋值给CRC
5.3如果carry为真,则将CRC与Poly按位异或后,赋值给CRC
5.4j自动加1后,判断j是否小于8,如果j小于8则继续执行循环体,若不小于则跳出循环执行下一步
6.将CRC与0x00FF按位相与后,赋值给CRC
7.函数返回CRC结束