当前位置: 首页 > news >正文

STM32 HAL库函数学习 CRC篇

1、HAL_StatusTypeDef HAL_CRC_Init(CRC_HandleTypeDef *hcrc)

CRC是循环冗余校验,常用于数据通信过程中进行收发双方对数据组进行校验。例如RS485,DLT64协议中常用。而STM32中的CRC技术使用非常简单高效。CRC计算设计到多项式和初始值,如果不需要设置则可以直接使用ST默认的多项式和初始值。

static void MX_CRC_Init(void)
{CRC_HandleTypeDef hcrc;hcrc.Instance = CRC;hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE;hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE;hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE;hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES;//输入数据为单字节HAL_CRC_Init(&hcrc);}

2、HAL_StatusTypeDef HAL_CRC_DeInit(CRC_HandleTypeDef *hcrc)

复位功能,调用方法如上函数。

3、void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc)

初始化函数1的回调函数,主要是打开本外设功能的时钟。

void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc)
{if(hcrc->Instance==CRC){  __HAL_RCC_CRC_CLK_ENABLE();}
}

4、uint32_t HAL_CRC_Calculate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength)

重要功能函数,用于计算CRC的值。本函数是对一组数据进行一次性的CRC计算。

 uint8_t Buffer[] = {0x01,0x02,0x03,0x04};uint8_t u8CrcValue = 0;u8CrcValue = HAL_CRC_Calculate(&hcrc,Buffer,LEN);//使用一个U8类型的数据 来接收对Buffer数组的CRC校验值uint16_t u16CrcValue = 0;u16CrcValue = HAL_CRC_Calculate(&hcrc,Buffer,LEN);//也可以使用U16类型 来接收

http://www.xdnf.cn/news/742285.html

相关文章:

  • Linux系统编程之共享内存
  • 在QT中,利用charts库绘制FFT图形
  • MAC软件游戏打开提示已损坏
  • MATLAB实战:机器学习分类回归示例
  • 【MFC】如何设置让exe的控制台不会跟着exe退出而退出
  • C++中指针常量和常量指针的区别
  • 【设计模式-4.6】行为型——状态模式
  • [蓝桥杯]拉马车
  • L56.【LeetCode题解】 电话号码的字母组合
  • 触发器与存储过程详解
  • Mybatis-Plus简单介绍
  • 鸿蒙HarmonyOS (React Native)的实战教程
  • Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
  • 【Java学习笔记】内部类(重点)
  • 数据结构:时间复杂度(Time Complexity)和空间复杂度(Space Complexity)
  • Typescript学习教程,从入门到精通,TypeScript 配置管理与编译器详解(19)
  • Rust 配置解析`serde` + `toml`
  • 华为OD机试真题——找出两个整数数组中同时出现的整数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 【HTML】基础学习【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • MySQL事务与锁机制详解:确保数据一致性的关键【MySQL系列】
  • 005 flutter基础,初始文件讲解(4)
  • leetcode付费题 353. 贪吃蛇游戏解题思路
  • 实现MPC钱包
  • [蓝桥杯]阶乘求值【省模拟赛】
  • Thinkphp6实现websocket
  • Spring Boot养老院管理系统源码分享
  • MacOS安装Docker Desktop并汉化
  • 2.5 TypeScript 中的 instanceof 运算符
  • C++中全局变量和局部变量的区别
  • 华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现