stm32F1xx标准库CRC外设使用

前言

本文笔记记录stm32F1xx的CRC外设使用,基于标准库函数;

一、相关文件

头文件 stm32f10x_crc.h
源文件 stm32f10x_crc.c

二、使用方式

主要函数

void CRC_ResetDR(void); //复位 CRC输入数据/结果 寄存器
uint32_t CRC_CalcCRC(uint32_t Data); //计算一个32位数据的CRC32
uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength); //
uint32_t CRC_GetCRC(void); //获取CRC计算的结果
void CRC_SetIDRegister(uint8_t IDValue);
uint8_t CRC_GetIDRegister(void);

函数是对以下寄存器的操作的封装

主要寄存器

/** 
  * @brief CRC calculation unit 
  */

typedef struct
{
  __IO uint32_t DR;  //输入数据和结果寄存器,写为数据数据读为获取结果
  __IO uint8_t  IDR;  //
  uint8_t   RESERVED0; //保留
  uint16_t  RESERVED1; //保留
  __IO uint32_t CR;  //CRC复位寄存器 bit0写1可以复位CRC数据/结果寄存器中的数据为复位值0xFFFFFFFF
} CRC_TypeDef;

例子
step1 使能:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
//RCC_AHBPeriph_CRC CRC位于AHB总线上,RCC_AHBPeriph_CRC为0x40, CRC使能位为RCC寄存器 RCC_AHBENR 的bit6
step2 计算一个或者一组数据的CRC32值:
uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength);//计算一组数的CRC32值;
uint32_t CRC_CalcCRC(uint32_t Data); //计算一个数的CRC32值

注意
当在一个程序中对不同一个数或不同组数进行CRC32计算使用时,在进行新的计算之前要调用一下CRC_ResetDR 清除上次计算结果;

三、原理

参考网上资料即可,使用库函数是将计算过程进行了隐藏,输入数据获取结果即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值