微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32F10x 学习笔记4(CRC计算单元 续)

STM32F10x 学习笔记4(CRC计算单元 续)

时间:11-20 来源:互联网 点击:

  1. for(;num>

        1. nedintnWords,uint32_tremainder)
        2. {
        3. unsignedintoffset;
        4. unsignedcharbyte;
        5. unsignedchar*p=(unsignedchar*)message;
        6. //width_tremainder=INITIAL_REMAINDER;
        7. /*Dividethemessagebythepolynomial,abyteatatime.*/
        8. for(offset=0;offset
        9. {
        10. byte=(remainder>>(WIDTH-8))^p[3];
        11. remainder=crcTable[byte]^(remainder<8);
        12. byte=(remainder>>(WIDTH-8))^p[2];
        13. remainder=crcTable[byte]^(remainder<8);
        14. byte=(remainder>>(WIDTH-8))^p[1];
        15. remainder=crcTable[byte]^(remainder<8);
        16. byte=(remainder>>(WIDTH-8))^p[0];
        17. remainder=crcTable[byte]^(remainder<8);
        18. p+=4;
        19. }
        20. /*ThefinalremainderistheCRCresult.*/
        21. return(remainder);
        22. }/*crcCompute()*/


        大家可以验证这个函数的计算结果与STM32上的结果完全一样。

        写到这里本该就结束了,不过我要多说一句,之所以要这么麻烦的调换字节序,都是小端(littleendian)惹的祸。要是都采用大端格式就没这些麻烦的转换了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top