当前位置: 首页 > 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.dtcms.com/a/223890.html

相关文章:

  • DeepSeek 赋能金融反洗钱:AI 驱动的风险监测革新之路
  • Reactor 和 Preactor
  • Python训练营---Day41
  • [yolov11改进系列]基于yolov11引入重参数化模块DiverseBranchBlock的python源码+训练源码
  • [python]Prophet‘ object has no attribute ‘stan_backend‘解决方法
  • 前端学习(7)—— HTML + CSS实现博客系统页面
  • vue-08(使用slot进行灵活的组件渲染)
  • 数组题解——最大子数组和​【LeetCode】
  • 流媒体基础解析:音视频封装格式与传输协议
  • 新版智慧景区信息化系统解决方案
  • leetcode216.组合总和III:回溯算法中多条件约束下的状态管理
  • SCSS 全面深度解析
  • C56-亲自实现字符串拷贝函数
  • [学习] RTKlib 实用工具介绍
  • 第六十二节:深度学习-加载 TensorFlow/PyTorch/Caffe 模型
  • MonitorSDK_性能监控(从Web Vital性能指标、PerformanceObserver API和具体代码实现)
  • 3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云
  • 8086 处理器 Flags 标志位全解析:CPU 的 “晴雨表” 与 “遥控器”总结:
  • 【Docker系列】Docker 容器内安装`ps`命令
  • RFID技术深度剖析:从原理、协议到S50卡与FM17550读写
  • TI MSPM0G3507 简易PID项目显示和按键控制
  • C++语法系列之模板进阶
  • 【C#】一个简单的http服务器项目开发过程详解
  • MySQL备份工具:mysqldump
  • leetcode hot100刷题日记——33.二叉树的层序遍历
  • 单例模式的类和静态方法的类的区别和使用场景
  • Redis实战-基于redis和lua脚本实现分布式锁以及Redission源码解析【万字长文】
  • Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
  • 关于 java:3. Java 常用类库与数据结构
  • Spark核心:单跳转换率计算全解析