STM32完全学习——CRC校验

一、STM32F407CRC校验的补充

由于STM32F407的CRC校验,并没有什么配置的选项,就会导致他只能进行32位,且初始值是0XFFFFFFFF,输入和输出都没有反转的CRC校验。为了弥补这些不足点,于是自己编写函数来增加这些功能

//输入反转 函数如果需要输入反转就先调用这个将输入的数据先进行反转 
//每个字节按位反转  注意一个字节是8位 
void Byte_Reversal(uint32_t *buf, uint32_t length)
{uint32_t temp = 0;uint8_t i = 0, j = 0, k = 0;for (i=0; i<length; i++){for (j=0; j<=24; j+=8){temp = (buf[i] >> j) & 0xff;for (k=0; k<8; k++){temp |= ((temp & (0x01 << k)) << (15 - 2*k));}temp >>= 8;buf[i] &= ~(0x000000ff << j); buf[i] |= (temp << j);}}}//也就是CRC校验完成之后输出是否进行反转的函数 整个数据按位反转
//这个函数要在计算结果之后 异或之前进行调用
uint32_t Bits_Reversal(uint32_t buf)
{uint32_t temp = 0;uint8_t k = 0;for (k=0; k<32; k++){	temp |= (((buf >> k) & 0x01) << (31 - k));}return temp;
}//输出结果异或  这个是最后执行的,放在输出结果反转的后面就行
//yihuo 需要异或的值
uint32_t Result_Xor(uint32_t num, uint32_t yihuo)
{return (num ^ yihuo);}
Byte_Reversal(buf, 2);               //输入结果反转
result = HAL_CRC_Calculate(&hcrc, buf, 2);   //进行CRC校验
result = Result_Xor(Bits_Reversal(result), 0xffffffff);  //输出结果反转 并进行异或
printf("result = %X\n", result);   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS系列(27)- 图形与滤镜详解

前端技术探索系列&#xff1a;CSS 图形与滤镜详解 &#x1f3a8; 致读者&#xff1a;探索CSS的艺术表现力 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS 图形和滤镜效果&#xff0c;学习如何创建引人注目的视觉效果。 基础图形 &#x1f680; 几何形状…

四、使用langchain搭建RAG:金融问答机器人--构建web应用,问答链,带记忆功能

经过前面3节完成金融问答机器人基本流程&#xff0c;这章将使用Gradio构建web应用&#xff0c;同时加入memory令提示模板带有记忆的&#xff0c;使用LCEL构建问答链。 加载向量数据库 from langchain.vectorstores import Chroma from langchain_huggingface import HuggingF…

矩阵链乘法【东北大学oj数据结构10-2】C++

矩阵链乘法问题的目标是找到最有效的方法来乘以给定的 n 个矩阵 M1,M2,M3,...,Mn。 编写一个程序&#xff0c;读取 Mi 的维度&#xff0c;并找到最小标量乘法以计算最大链链乘法 M1M2...Mn。 输入 在第一行中&#xff0c;给出了一个整数 n。 在接下来的 n 行中&#xff0c;矩阵…

深度学习之超分辨率算法——SRCNN

网络为基础卷积层 tensorflow 1.14 scipy 1.2.1 numpy 1.16 大概意思就是针对数据&#xff0c;我们先把图片按缩小因子照整数倍进行缩减为小图片&#xff0c;再针对小图片进行插值算法&#xff0c;获得还原后的低分辨率的图片作为标签。 main.py 配置文件 from model im…

基于海思soc的智能产品开发(mcu读保护的设置)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于市场上的产品&#xff0c;除了电路之外&#xff0c;软件保护也是非常重要的一个环节。要是自己辛辛苦苦写的软件&#xff0c;被竞争对手轻易地…

Zabbix6.0升级为6.4

为了体验一些新的功能&#xff0c;比如 Webhook 和问题抑制等&#xff0c;升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档&#xff0c;确认组件要求的版本&#xff0c;否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

GitLab的卸载与重装

目录 一、GitLab的卸载 二、 GitLab的安装与配置 1. 创建安装目录 2. 安装 3. 使用 3.1 初始化 3.2 创建空白项目 ​编辑 3.3 配置SSH 3.3.1 配置公钥 ​编辑 3.3.2 配置私钥 3.4 配置本地git库 一、GitLab的卸载 1. 停止gitlab sudo gitlab-ctl stop 2. 卸载…

0基础学java之Day29(单例模式、死锁)

单例模式 理解&#xff1a;在整个项目中&#xff0c;该类的实例只能有一个 1.饿汉式 优点&#xff1a;线程安全 缺点&#xff1a;浪费资源 public class A { ​private static A a new A();private A(){}public static A getInstance(){return a;}public static void met…

PyCharm 中打印完整的 DataFrame

PyCharm 中打印完整的 DataFrame 方法 1&#xff1a;设置 pandas 的全局显示选项代码示例&#xff1a;解释&#xff1a; 方法 2&#xff1a;临时设置显示选项代码示例&#xff1a;解释&#xff1a; 方法 3&#xff1a;使用 to_string 方法代码示例&#xff1a;解释&#xff1a;…

Linux快速入门-Linux的常用命令

Linux的常用命令 1. Linux的终端与工作区1.1 终端概述1.2 切换终端 2. Shell语言解释器2.1 Shell概述 3. 用户登录与身份切换3.1 su 命令3.2 sudo 命令 4. 文件、目录操作命令4.1 pwd 命令4.2 cd 命令4.3 ls 命令4.3.1 ls 指令叠加使用 4.4 mkdir 命令4.5 rmdir 命令4.6 cp 命令…

内表中的 GROUP BY 详解

由于大家对语法及其含义似乎有些混淆&#xff0c;让我们用一个非常简单的例子来逐步处理内部表的分组问题&#xff0c;你会发现其实并不复杂。我还附上了一个程序的全文&#xff0c;该程序会执行以下步骤并产生一些输出结果。 是的&#xff0c;您有一个内部表 spfli_tab TYPE …

三、ubuntu18.04安装docker

1.使用默认ubuntu存储库安装docker 更新软件存储库 更新本地软件数据库确保可以访问最新版本。打开终端输入&#xff1a;sudo apt-get update 卸载旧版本的docker 建议继续之前卸载任何旧的docker软件。打开终端输入&#xff1a;sudo apt-get remove docker docker-engine …

【Linux系统编程】:信号(2)——信号的产生

1.前言 我们会讲解五种信号产生的方式: 通过终端按键产生信号&#xff0c;比如键盘上的CtrlC。kill命令。本质上是调用kill()调用函数接口产生信号硬件异常产生信号软件条件产生信号 前两种在前一篇文章中做了介绍&#xff0c;本文介绍下面三种. 2. 调用函数产生信号 2.1 k…

专业电脑数据恢复软件 iFind Data Recovery v9.2.3 绿色便携版

前言 iFinD Data Recovery一款特别实用的数据找回工具&#xff0c;它很厉害&#xff0c;能帮你在SSD硬盘和Windows10系统上找回丢失的数据。而且&#xff0c;它还能深度扫描并恢复各种主流数码相机里的RAW格式照片&#xff0c;速度超快&#xff0c;用起来也很稳定顺畅&#xf…

QT:Widgets中的数据库应用

SQL数据库驱动 pro文件中添加如下一行代码 QT sql widgetsmain.cpp #include <QApplication> #include <QSqlDatabase> #include <QStringList> int main(int argc, char *argv[]) {QApplication a(argc, argv);qDebug() << "Available driver…

AI的进阶之路:从机器学习到深度学习的演变(三)

&#xff08;承接上集&#xff1a;AI的进阶之路&#xff1a;从机器学习到深度学习的演变&#xff08;二&#xff09;&#xff09; 四、深度学习&#xff08;DL&#xff09;&#xff1a;机器学习的革命性突破 深度学习&#xff08;DL&#xff09;作为机器学习的一个重要分支&am…

数据集-目标检测系列 车牌检测识别 数据集 CCPD2019

车牌检测&识别 数据集 CCPD2019 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” 贵在坚持&#xff01; 数据样…

(2024.12)Ubuntu20.04安装ZED-SDK

一.官网地址 ZED SDK 4.2 - Download | Stereolabs 选择适配版本进行下载 二.安装程序 下载完成后&#xff0c;进入文件目录&#xff0c;打开终端&#xff0c;输入&#xff1a; chmod x ZED_SDK_Ubuntu20_cuda11.8_v4.2.2.zstd.run ./ZED_SDK_Ubuntu20_cuda11.8_v4.2.2.zst…

MySQL 中的常见错误与排查

在 MySQL 数据库的日常运维中&#xff0c;管理员可能会遇到各种错误。无论是查询性能问题、连接异常、数据一致性问题&#xff0c;还是磁盘空间不足等&#xff0c;及时排查并解决这些问题是保证数据库稳定运行的关键。本文将列出 MySQL 中一些常见的错误及其排查方法。 一、连接…

JUC并发工具---ThreadLocal

ThreadLocal适合用在哪些实际生产的场景中 适用场景 场景一场景二ThreadLocal用作保存每个线程独享的对象ThreadLocal用作每个线程内需要独立保存信息以便其他方法更方便地获取该信息的场景&#xff08;类似于全局变量的概念&#xff09;通常用于保存线程不安全的工具类&…