您现在的位置: 主页 > MCU > 单片机技术应用 > STM32 CRC32与对应的软件CRC32 -
本文所属标签:
为本文创立个标签吧:

STM32 CRC32与对应的软件CRC32 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]简单实现STM32 CRC32使用使用前记得使能STM32 CRC时钟//STM32硬件CRC32byte数据计算,将数据移到最高位,低位补上FFu32stm32_crc32_byte(u8*pBuff,u32len){u32i;u8buff[4];u32*p32=(u32*)buff;CRC->CR=1;//复位CRC寄存

简单实现STM32 CRC32使用

本文引用地址: http://www.21ic.com/app/mcu/201808/781715.htm

使用前记得使能STM32 CRC时钟


//STM32硬件CRC32byte数据计算,将数据移到最高位,低位补上FF

u32stm32_crc32_byte(u8*pBuff,u32len)

{

u32i;

u8buff[4];

u32*p32=(u32*)buff;

CRC->CR=1;//复位CRC寄存器

buff[0]=buff[1]=buff[2]=buff[3]=0XFF;

for(i=0;i

{

buff[3]=pBuff[i];

CRC->DR=*p32;

}

returnCRC->DR;

}

//STM32硬件CRC32u32数据计算

u32stm32_crc32(u32*pBuff,u32len)

{

u32i;

CRC->CR=1;//复位CRC寄存器

for(i=0;i

{

CRC->DR=pBuff[i];

}

returnCRC->DR;

}

//软件CRC32u32数据计算

u32crc32(u32*ptr,u32len)

{

u32xbit;

u32data;

u32CRC32=0xFFFFFFFF;

u32bits;

constu32dwPolynomial=0x04c11db7;

u32i;

for(i=0;i

{

xbit=1<<31;

data=ptr[i];

for(bits=0;bits<32;bits++)

{

if(CRC32&0x80000000){

CRC32<<=1;

CRC32^=dwPolynomial;

}

else

CRC32<<=1;

if(data&xbit)

CRC32^=dwPolynomial;

xbit>>=1;

}

}

returnCRC32;

}

//软件CRC32byte数据计算,将数据移到最高位,低位补上FF

u32crc32_byte(u8*ptr,u32len)

{

u32xbit;

u32data;

u32CRC32=0xFFFFFFFF;//初值

u32bits;

u32i;

u8buff[4];

u32*p32=(u32*)buff;

constu32dwPolynomial=0x04c11db7;

buff[0]=buff[1]=buff[2]=buff[3]=0XFF;

for(i=0;i

{

xbit=1<<31;

buff[3]=ptr[i];

data=*p32;

for(bits=0;bits<32;bits++)

{

if(CRC32&0x80000000){

CRC32<<=1;

CRC32^=dwPolynomial;

}

else

CRC32<<=1;

if(data&xbit)

CRC32^=dwPolynomial;

xbit>>=1;

}

}

returnCRC32;

}





              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > STM32 CRC32与对应的软件CRC32 -
 

"STM32 CRC32与对应的软件CRC32 -"的相关文章

网站地图

围观()