您的位置:首页 > 财经 > 金融 > 刚刚大连发布紧急通知_鄂州seo厂家_百度查重工具_如何实施网站推广

刚刚大连发布紧急通知_鄂州seo厂家_百度查重工具_如何实施网站推广

2024/12/23 16:37:04 来源:https://blog.csdn.net/2401_83010734/article/details/144591977  浏览:    关键词:刚刚大连发布紧急通知_鄂州seo厂家_百度查重工具_如何实施网站推广
刚刚大连发布紧急通知_鄂州seo厂家_百度查重工具_如何实施网站推广

一、STM32F407CRC校验的补充

由于STM32F407的CRC校验,并没有什么配置的选项,就会导致他只能进行32位,且初始值是0XFFFFFFFF,输入和输出都没有反转的CRC校验。为了弥补这些不足点,于是自己编写函数来增加这些功能

//输入反转 函数如果需要输入反转就先调用这个将输入的数据先进行反转 
//每个字节按位反转  注意一个字节是8位 
void Byte_Reversal(uint32_t *buf, uint32_t length)
{uint32_t temp = 0;uint8_t i = 0, j = 0, k = 0;for (i=0; i<length; i++){for (j=0; j<=24; j+=8){temp = (buf[i] >> j) & 0xff;for (k=0; k<8; k++){temp |= ((temp & (0x01 << k)) << (15 - 2*k));}temp >>= 8;buf[i] &= ~(0x000000ff << j); buf[i] |= (temp << j);}}}//也就是CRC校验完成之后输出是否进行反转的函数 整个数据按位反转
//这个函数要在计算结果之后 异或之前进行调用
uint32_t Bits_Reversal(uint32_t buf)
{uint32_t temp = 0;uint8_t k = 0;for (k=0; k<32; k++){	temp |= (((buf >> k) & 0x01) << (31 - k));}return temp;
}//输出结果异或  这个是最后执行的,放在输出结果反转的后面就行
//yihuo 需要异或的值
uint32_t Result_Xor(uint32_t num, uint32_t yihuo)
{return (num ^ yihuo);}
Byte_Reversal(buf, 2);               //输入结果反转
result = HAL_CRC_Calculate(&hcrc, buf, 2);   //进行CRC校验
result = Result_Xor(Bits_Reversal(result), 0xffffffff);  //输出结果反转 并进行异或
printf("result = %X\n", result);   

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com