STM32的CRC校验(基于HAL库)

news2024/9/22 0:57:37

一:CRC概念

        1:什么是CRC

                crc是一种纠错技术,代表循环冗余校验,是数据通信领域中最常用的一种差错校验码,其信息字段和校验长度可以任意指定,但要求通信双方定义的CRC标准一致。主要用来检测或校验数据传输或保存后可能会出现的错误

        2:冗余实现的关键

                冗余少、运算少、识错纠错能力强

        3:CRC的实现方法

                (1)纯软件实现,靠cpu的运算能力了硬算。好处纯软件,坏处效率低

                (2)纯软件实现 ,查表确定。好处纯软件效率高,坏处死板且占内存

                (3)纯硬件实现,靠soc的内置的crc运算模块实现,类似于集成显卡

                (4)纯硬件实现,靠soc的外部运算模块实现,类似于独立显卡

二:STM32cubemx配置CRC

        1:打开stm32cubemx 选择使用的芯片

                        

 

         2:配置调试接口 

        

         3:配置时钟

        

         4:配置CRC

                使能使用默认即可 如果需要其他的可在参数设置进行配置 

        

         5:配置串口

        串口使用默认配置即可 波特率115200 数据位8bit 无校验 停止位1

                

         6:生成工程

                

  三:KEIL内进行代码编写

        1:打开stm32cubemx创建的工程                                            

                        编译一下

    工程一些设置 

 

 

 

 点击确定完后再编译一下

                

        2:进行代码编写

                 (1)定义全局变量

                

                (2)引用函数头文件声明

                         

                     (3)printf函数重定向   

                            (4)while循环内部实现crc校验

                                找到crc校验函数

         写完后编译通过即可

    

        

  四:单片机串口与上位机完成结果验证

         1:使用usb转tll和上位机进行通信(测试串口运行是否正常)

                      (1)首先确定usb转tll模块的rx tx是否与单片机的tx rx进行了连接 再连接gnd后即可

 

                        while循环里进行使用printf】进行发送信息测试,实现每隔1s发送一次                      

结果:

         2:上位机使用串口调试助手接收单片机发出的数据进行验证

结果:

                

         可以使用在线crc校验网页来进行结果验证

        

                

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

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

相关文章

伦理学(Ethics)

讯飞星火 伦理学哲学是一门关于道德问题的科学,旨在系统化和理论化道德思想观点。作为一门独立的哲学分支学科,伦理学的本质是对道德现象进行研究,包括道德意识、道德行为以及道德规范现象等。 伦理学的研究对象广泛,涉及个人的…

生成模型之生成器

生成模 型中网络会被作为一个生成器(generator)来使用。具体来说,在模型输入时会将一个随机 变量z 与原始输入x一并输入到模型中,这个变量是从随机分布中采样得到。输入时可以采 用向量拼接的方式将x和z一并输入,或在x…

『功能项目』怪物消亡掉落宝箱【17】

本章项目成果展示 我们打开上一篇17销毁怪物蛋的Shaders消融特效的项目, 本章要做的事情是在怪物消亡时掉落一个宝箱功能, 首先在资源商店下载一个宝箱物品 拖拽至场景中 完全解压缩 重命名Box 放进Prefabs预制体文件夹后在场景中删除 增加Box两个组件并…

C++和蓝图混用事件

一、在C中创建动态多播委托 1、UEBpAndCpp_Sender.h //声明一个蓝图可调用的多播委托的类型DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FUEBpAndCpp_Broadcast, int, Param);//创建对象UPROPERTY(BlueprintAssignable)FUEBpAndCpp_Broadcast UEBpAndCpp_Broadcast;注意&…

校园闲置物品销售平台

一、项目概述 Hi,大家好,今天分享的项目是《校园闲置物品销售平台》。 校园闲置物品销售平台,旨在为学生提供一个安全、便捷的交易环境。通过线上发布和浏览商品信息,学生可以快速找到自己需要的物品,同时也能将自己…

缓存分布式一致性问题

缓存一致性问题发生的原因,是在更新数据时数据库和缓存数据的不一致。我们要做到保证缓存的最终一致性。如果数据需要强一致性建议直接查询数据库。 双写模式 双写模式为先写数据库,在写缓存。 进来两个请求,先执行“请求1”的操作写入数据…

C语言 | Leetcode C语言题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; bool isSubsequence(char* s, char* t) {int n strlen(s), m strlen(t);int f[m 1][26];memset(f, 0, sizeof(f));for (int i 0; i < 26; i) {f[m][i] m;}for (int i m - 1; i > 0; i--) {for (int j 0; j < 26; j) {if (t…

jmeter中上传文件接口,当文件名为中文时出现乱码

1、在jmeter5.1.1中配置上传文件接口&#xff0c;当上传的文件为中文名称时&#xff0c;文件名称会显示乱码如图 2、解决方案是需要更换jmeter/lib/ext文件中的ApacheJMeter_http.jar 包 3、更换jar包经过多次实验&#xff0c;发现有的上传文件接口中文名正常&#xff0c;但是有…

华为云征文|部署RedisStack+可视化操作

目录 1.介绍 1.1 什么是华为云Flexus X实例 1.2 什么是Redis Stack ​编辑 2 准备华为云Flexus应用服务器L实例 3 准备docker环境 4 docker 安装 Redis Stack 4.1拉取镜像 4.2 确认镜像 4.3 启动容器 4.4 放行安全组端口 4.5 操作redis 5 docker compose 配置持久 1.…

【算法】--双指针

文章目录 双指针例题移动零复写零快乐数盛⽔最多的容器有效三角形的个数和为 s 的两个数字三数之和四数之和 双指针 常⻅的双指针有两种形式&#xff0c;⼀种是对撞指针&#xff0c;⼀种是快慢指针。 对撞指针&#xff1a;⼀般⽤于顺序结构中&#xff0c;也称左右指针。 对撞…

python判断语句(三)

下一篇持续更新中… 如有错误欢迎指正&#xff01;&#xff01;&#xff01; 文章目录 前言学习内容 布尔类型和比较运算符布尔类型比较运算符总结 if语句的基本格式if语句的注意点总结案例 if else语句注意点总结案例 if elif else语句注意点总结案例 判断语句的嵌套语法格式…

哪里能够使用Claude-100k?

Claude-100k 是 Anthropic 开发的一个大型语言模型&#xff0c;可以在以下几种方式中使用&#xff1a; Anthropic 官网&#xff1a;可以通过访问 Anthropic 的官方网站来获取 Claude-100k 的使用许可或API访问权限。 API 服务&#xff1a;Claude-100k 也可以通过 API 服务进行…

fastchat与autogen使用要点澄清

说明&#xff1a; 本文重点是想使用autogen构建智能体&#xff0c;并且想要通过加载本地模型来构建&#xff0c;以灵活使用。但是autogen重点是以API调用支持openai, mistral等大模型使用的&#xff0c;对于使用国内的一些模型不是那么友好方便。然后在查找方法的过程中&#x…

ElasticSearch学习笔记(五)Bucket聚合、Metric聚合

文章目录 前言9 项目实战9.3 我周边的酒店9.4 酒店竞价排名 10 数据聚合10.1 聚合的分类10.2 DSL实现聚合10.2.1 Bucket聚合10.2.2 聚合结果排序10.2.3 限定聚合范围10.2.4 Metric聚合 10.3 RestAPI实现聚合10.3.1 API语法10.3.2 业务需求10.3.3 业务实现10.3.4 功能测试 前言 …

人工智能、机器学习和深度学习有什么区别?应用领域有哪些?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

RLHF(带有人类反馈的强化学习)初探

我的目标是&#xff0c;在决策游戏上学习某人风格&#xff0c;可以让人对战“带有某人风格”的AI&#xff0c;比如你可以在这里对战“sky风格的AI”,这样的效果。 我最开始受到的启发来源于xbox的广告《爸爸的幽灵车》&#xff0c;已故人在游戏中留下的速度记录的固定轨迹。 …

传统CV算法——仿射变换原理及应用

可以理解一下常规的翻转和平移。“线性变换”“平移”空间变换中的仿射变换对应着五种变换&#xff0c;平移&#xff0c;缩放&#xff0c;旋转&#xff0c;翻转&#xff0c;错切。而这五种变化由原图像转变到变换图像的过程&#xff0c;可以用仿射变换矩阵进行描述。而这个变换…

异地多活架构计算设计

随着互联网的飞速发展,企业对业务连续性和高可用性的需求日益增加。异地多活架构作为一种高可靠性的系统设计方案,通过在地理上分散的多个数据中心部署应用和数据,有效降低了单一故障点对整个系统的影响,确保业务在灾难发生时能够持续运行。 架构设计策略 业务解耦:将系…

Servelet学习-24.9.3

文章目录 前言一、Servelet概述1.1 简单入门&#xff1a;2.2 生命周期 二、HttpServletRequest对象2.1 常用方法 三、HttpServeletResponse对象 前言 九月&#xff0c;加油 一、Servelet概述 Servelet&#xff1a; server applet servelet就是一个接口,定义了Java类被浏览器访…

《大道平渊》· 廿壹 —— 杀心篇:何谓 “杀心”?本质上,就是寻求杀心的一个过程。

《大道平渊》 "行有不得&#xff0c;反求诸己。" ——《论语 学而》 指的是遇事遭困&#xff0c;须在自身寻因&#xff0c;而非怨天尤人&#xff0c;一味地归咎于外因。 凡事向内求也&#xff0c;多多自省&#xff0c;提高自身的修养和能力&#xff0c;取得成功。…