stm32 crc16校验
时间: 2023-08-23 08:05:43 浏览: 179
CRC-16_crc16校验stm32_
4星 · 用户满意度95%
在STM32中使用CRC16校验,可以使用STM32自带的硬件CRC模块,以下是一个简单的示例代码:
```c
#include "stm32f4xx.h"
void crc16_init()
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE); // 使能CRC时钟
CRC_DeInit(); // 复位CRC寄存器
CRC_SetInitRegister(0xFFFF); // 设置初始值为0xFFFF
CRC_SetPolynomial(CRC_Polynomial_16Bit); // 选择16位多项式
CRC_CalculationCmd(ENABLE); // 使能CRC
}
uint16_t crc16_calc(uint8_t *data, uint32_t len)
{
uint16_t crc = 0xFFFF; // 初始化CRC值为0xFFFF
for (uint32_t i = 0; i < len; i++)
{
crc = CRC_CalcCRC(data[i]); // 计算CRC值
}
return crc;
}
```
在使用时,先调用`crc16_init()`函数初始化CRC模块,然后调用`crc16_calc()`函数计算CRC值,传入要校验的数据和数据长度即可。注意,STM32的硬件CRC模块只支持16位多项式,因此CRC值也是16位。
阅读全文