STM32 CRC32与对应的软件CRC32(转)
简单实现STM32 CRC32使用
使用前记得使能STM32 CRC时钟
//STM32硬件CRC32 byte数据计算,将数据移到最高位,低位补上FF
u32 stm32_crc32_byte(u8 *pBuff, u32 len)
{
u32 i;
u8 buff[];
u32 *p32 = (u32 *)buff; CRC->CR = ; //复位CRC寄存器
buff[] = buff[] = buff[] = buff[] = 0XFF;
for(i = ;i < len;i ++)
{
buff[] = pBuff[i];
CRC->DR = *p32;
}
return CRC->DR;
} //STM32硬件CRC32 u32数据计算
u32 stm32_crc32(u32 *pBuff, u32 len)
{
u32 i; CRC->CR = ; //复位CRC寄存器
for(i = ;i < len;i ++)
{
CRC->DR = pBuff[i];
}
return CRC->DR;
} //软件CRC32 u32数据计算
u32 crc32(u32 *ptr, u32 len)
{
u32 xbit;
u32 data;
u32 CRC32 = 0xFFFFFFFF;
u32 bits;
const u32 dwPolynomial = 0x04c11db7;
u32 i; for(i = ;i < len;i ++)
{
xbit = << ;
data = ptr[i];
for (bits = ; bits < ; bits++)
{
if (CRC32 & 0x80000000) {
CRC32 <<= ;
CRC32 ^= dwPolynomial;
}
else
CRC32 <<= ;
if (data & xbit)
CRC32 ^= dwPolynomial; xbit >>= ;
}
}
return CRC32;
} //软件CRC32 byte数据计算,将数据移到最高位,低位补上FF
u32 crc32_byte(u8 *ptr, u32 len)
{
u32 xbit;
u32 data;
u32 CRC32 = 0xFFFFFFFF; //初值
u32 bits;
u32 i;
u8 buff[];
u32 *p32 = (u32 *)buff;
const u32 dwPolynomial = 0x04c11db7; buff[] = buff[] = buff[] = buff[] = 0XFF;
for(i = ;i < len;i ++)
{
xbit = << ; buff[] = ptr[i];
data = *p32;
for(bits = ; bits < ; bits++)
{
if (CRC32 & 0x80000000) {
CRC32 <<= ;
CRC32 ^= dwPolynomial;
}
else
CRC32 <<= ;
if (data & xbit)
CRC32 ^= dwPolynomial; xbit >>= ;
}
}
return CRC32;
}
STM32 CRC32与对应的软件CRC32(转)的更多相关文章
- U8g2图形库与STM32移植(I2C,软件与硬件)
U8g2图形库 简介 U8g2 是一个用于嵌入式设备的简易图形库,可以在多种 OLED 和 LCD 屏幕上,支持包括 SSD1306 等多种类型的底层驱动,并可以很方便地移植到 Arduino .树莓 ...
- STM32:获取复位源,软件复位
RCC CSR寄存器会存储复位标示,可通过它来知道复位原因,来源: if(RCC_GetFlagStatus(RCC_FLAG_PINRST)) printf("PINRST\r\n&quo ...
- CRC32
CRC32生成多项式:X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1 对应的16进制表示为:0x4C11DB7 下面贴CRC32查表法生成代码: ...
- 加密算法使用(一):用CRC32来压缩32uuid字符串
CRC32相比MD5重复率较高, 不过我们仍然可以使用CRC32然后转长整形的方式将32位的UUID字符串压缩成更短的整形唯一标识. /** * * @Title: getCRC32Value * @ ...
- boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET
boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET boost::crc_32_type crc32; crc32. ...
- boost计算随机数和计算crc32简单示例
boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET boost计算随机数和计算crc32简单示例 2013-02-18 17:14 10 ...
- STM32 mdk软件仿真时过不去时钟的问题
stm32的程序用MDK软件仿真时,由于系统时钟初始化函数里有个等待系统时钟准备好的循环,所以过不去. 设置方式如下:这么设置之后仿真时就可以直接进入main函数了.
- CRC-32 校验算法
crc32的头文件 ===========================分割线=========================== //crc32.h #ifndef _CRC32_H #de ...
- 数据安全之MD5、SHA-1、CRC32区别
crc32 — 计算一个字符串的 crc32 多项式 生成 string 参数的 32 位循环冗余校验码多项式……:这句话从英文翻译过来的,不正确,准确的说应该是这么理解: 以32位循环冗余校验多项式 ...
随机推荐
- ImageLoader must be init with configuration before using
遇到上面的问题是没有全局初使化ImageLoader,我是在Application中配置了ImageLoaderConfiguration 解决的,当然还有官方的写法 public class MyA ...
- c#基础 第五讲
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- Struts入门(三)深入Struts用法讲解
访问Servlet API Action搜索顺序 动态方法调用 指定多个配置文件 默认Action Struts 后缀 接收参数 处理结果类型 1.访问Servlet API 首先我们了解什么是Ser ...
- python裁剪base64编码的图片
简介 今天遇到需要裁剪base64字符串的PNG图片,并返回base64格式字符串的任务,捣鼓半天. 裁剪代码如下: def deal_inspect_img(base64_str): "& ...
- LeetCode 笔记系列16.2 Minimum Window Substring [从O(N*M), O(NlogM)到O(N),人生就是一场不停的战斗]
题目:Given a string S and a string T, find the minimum window in S which will contain all the characte ...
- POJ 3233 Matrix Power Series(矩阵快速幂)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19338 Accepted: 8161 ...
- 设计模式之——Builder建造模式
Builder模式又叫建造模式,是用于组装具有复杂结构的实例的模式. 示例程序是编写一个文档,并且写入到文件中,该文档具有以下结构,含有标题,字符串,一些条目. Builder抽象类,为建造模式的核心 ...
- vue下给title配置图标.ico
在根目录下放入要作为浏览网站时看到的网页title里的图标.如 32*32 后缀为.ico的图 然后再项目中build文件夹中的,webpack.dev.conf.js文件加入一句代码,加入完重启即可 ...
- apache2.2版本 configuration error: couldn't perform authentication. AuthType not set!: /
configuration error: couldn't perform authentication. AuthType not set!: / 500服务器错误 解决方案: <Dire ...
- 设计模式中类的关系UML
在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖.关联.聚合.组合.继承.实现.他们的耦合度依次增强. 1. 依赖(Dependence) 依赖关系的定义为:对于两 ...