自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 CAN总线断开重连后为什么会连续发出两包或两包及以上数据?又当如何处理?

CAN总线是一种高可靠性的网络总线标准,主要用于汽车和工业环境的控制器通信。那不知道大家有没有遇见过这种工况:当做总线测试时,会断开某一控制器与总线的连接,之后再重连,导致原本应该以10ms为周期外发的报文,实际上总线上会再10ms内捕获到相同ID的报文两次或两次以上,此时就导致测试不通过。相信汽车行业的朋友大多都遇见过或者经历过,如果没有遇见,那就是平台已经规避这类问题了,但是啊,总归要实际遇见并处理才有意思。下面就此问题,咱就来将其展开,给大家分享这个经验。

2024-12-31 10:27:51 932 1

原创 计算机体系结构之多级缓存、缓存miss及缓存hit(二)

多级缓存、缓存miss以及缓存hit存在的意义是为了保持成本效益的同时,尽可能地提高计算机系统的性能和效率。它们是现代处理器设计中关键的元素,对于提高用户体验和系统吞吐量是占据至关重要的一环。

2024-11-07 08:00:00 1469 1

原创 微控制器(MCU)如何运行存储在Flash的程序???

以上应该是可以帮助大家了解关于存储在Flash的程序至RAM运行的过程,当然,可能涉及其他的知识点(缓存机制、为什么要有缓存?、缓存MISS会发生什么?、多级缓存的目的是什么?又有什么优点?。。。。。。)大家不是很了解,作者会持续更新维护文章,充分将各个知识点进行相关联。这里也解释下为什么不在此文章中做发散,嵌入式领域知识体系之广泛,并不能通过寥寥万字/十几万字可以解释的,其知识体系在兼容的同时是不断更新迭代,做这一行毕生都将持续学习,所以作者只能针对单个知识点逐一讲解。

2024-11-05 11:00:04 2357

原创 C语言函数指针及其应用

在C语言中,函数指针的应用是非常广泛的,也许初学C的新星暂未接触,初入嵌入式行业者暂未实践,故,最近会针对C语言的实战应用以及作者在项目中的所见所闻所解决的问题一一盘点。

2024-10-24 10:33:17 1087

原创 Modbus协议概述及实例详解(二)附源码

通过上一篇《Modbus协议概述及实例详解(一)》相信大家已经了解到Modbus的相关原理以及应用,也了解到了Modbus中在RTU/ASCII/TCP三种协中必不可少协议RTU协议。本章将详细讲解关于Modbus RTU协议的相关内容并附带源码一份,以帮助有需要的读者朋友可以快速开发迭代自己的软件。

2024-10-21 14:27:11 1319

原创 Modbus协议概述及实例详解(一)

Modbus是一种串行通信协议,最初是由Modicon公司(现为施耐德电气的一部分)在1979年开发,用于实现PLC之间的通信。由于其开放性和可靠性,Modbus已成为工业领域事实上的标准通信协议之一。当然啦,在嵌入式行业也同样流行,比如常见的电源行业,开关电源、模拟电源和数字电源等。

2024-10-21 10:58:27 556

原创 原码、反码、补码与移码详解

在计算机系统中,原码、反码、补码与移码是用来做什么的?分别又有什么作用?它们为什么会出现?下面通过这篇文章,咱们就来谈谈四码的相关知识点。

2024-10-19 12:51:19 934

原创 基于IO模拟IIC与SPI驱动实现

最近项目上,由于一些变更问题,导致硬件设计上未考虑到相关GPIO是否支持硬件驱动,考虑到这两个驱动的应用场景并不普遍,基本上只有在下电与Boot升级时才可以会被应用(相信有经验的朋友以及猜出来是什么功能了),具体功能就不详说了,我们直接讲解关于IIC与SPI的模拟驱动吧。

2024-10-17 09:54:37 1069

原创 从零认识操作系统任务应用及原理

如:A/B/C三个任务均会调用函数Func()优先级由高到低,且为抢占式调度,当B任务在运行时调用函数Func(),正在函数Func中,此时A任务为就绪态,那么A任务会获取到CPU控制权,并允许函数Func(),此时是有可能破坏原任务的数据的,因为两任务有可能共用一套数据。解:在单一CPU情况下,不存在真正的多任务机制,存在的只有各个任务轮流获取CPU控制权的占用,所以其本质还是单任务或者说裸机运行,区别是在于有一个大管家管理各个任务在各个任务需要时做出最优判断,并将CPU控制权给到其任务。

2024-10-14 09:43:06 1040

原创 操作系统:线程间通信之邮箱

在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改动全局变量的值,另一个功能对此全局变量进行读取,根据读取的全局变量值执行相应的动作,达到通信协作的目的。下面会分享一些如何将邮箱、消息队列、信号用于线程间的通信。

2025-04-10 08:45:00 425

原创 操作系统:线程间同步之事件集

事件集是线程间同步的机制之一,一个事件集可以包含多个事件,利用事件集可以完成一对多、多对多的线程间同步。

2025-04-09 15:32:08 298

原创 优先级继承协议(Priority Inheritance Protocols)

本篇文章主要以分享为主,想深入了解Linux的可以访问()自行理解学习。在单个CPU上,许多进程可以在支持多任务的操作系统下同时运行。同步策略用于组织对共享资源的访问。另一方面,当高优先级活动被持有共享资源的低优先级进程阻塞时,就会发生优先级翻转。下面将介绍一种用于解决优先级翻转问题的同步方法——优先级继承协议(PIP)。使用优先级继承协议(PIP),解决了优先级翻转问题。PIP为拥有共享资源的任务赋予等待该资源的其他作业中最高优先级。

2025-04-08 08:45:00 657

原创 操作系统:线程间同步之互斥量

互斥量又叫相互排斥的信号量,是一种特殊的二值信号量。互斥量类似于只有一个车位的停车场:当有一辆车进入时,将停车场大门锁住,其他车辆在外面等候。当里面的车出来时,将停车场大门打开,下一辆车才可以进入。同时互斥量也是为了解决由于使用信号量不当导致的优先级翻转问题。

2025-04-07 15:46:32 631

原创 C语言跳表(Skip List)算法(附链表与跳表实现源码)

在数据结构算法中,有一种算法犹如“时空穿梭机”,能在瞬间跨越层层障碍,直击目标——它就是跳表算法。下面,就让我们一起揭开跳表算法的神秘面纱,通过实例探究其高效与魅力。

2025-04-02 10:39:02 389

原创 基于MCU实现的电机转速精确控制方案:软件设计与实现

本文将详细介绍一篇基于微控制器(MCU)的电机转速精确控制的软件方案。通过采样PWM信号控制和ADC采样技术,结合PID闭环控制算法,实现了电机转速的高效、稳定调节。以下是软件方案流程图,下文将对其进行展开讲解。一、引言 为了实现电机转速的精确控制,本文根据个人所接触的项目总结了基于MCU的电机转速控制软件方案。二、系统初始化三、主循环四、定时器中断服务程序(用于PWM和ADC采样触发)五、ADC转换完成中断服务程序六、转速调整逻辑 这里建议在定时器中断服务程序中基于上次PID计

2025-03-26 10:45:13 932

原创 数字系统的历史演变与起源:从原始计数到现代科技基石

嵌入式技术之深之广,技术文章不知写些什么,索性讲一下数字系统相关的。我们最熟悉的10,因为10大家都了解,但是在不同的数字系统表示不同的意义。各个国家的语言不一,但是对10的以及数学的认识是一样的,所以啊,数学不愧是通用语言啊!!!        自人类文件伊始,计数和数字表示成就了社会进步和发展的关键。数字系统的历史演变是一段跨越千年、涉及多种文明的壮丽旅程。从最早的计数方法到现代数字系统的复杂性,本文讲这一演变过程及其对人类社会的影响做一下汇总及举例讲解。

2025-03-21 11:19:30 485

原创 存储器与内存的区别:深入理解二者差异在现代计算机系统中的应用

存储器是指用于存储数据的设备,它可以是磁性介质、光学介质或其他电子介质。存储器的分类如下:1)内存存储器(简称内存)指计算机主板上的存储芯片,用于暂时存储计算机运行时的数据和指令。2)外部存储器(简称外存)指计算机外部连接的存储设备,如硬盘、U盘、光盘,用于长期保存数据。存储器与内存是计算机系统中两个重要的组成部分,它们在功能、读写速度、容量和易失性等方面存在显著的差异。了解这些差异,有助于我们更好地使用和维护计算机。在实际应用中,存储器和内存相互配合,共同为计算机的正常运行提供保障。

2025-03-17 13:34:41 777 1

原创 过程即产品:深入剖析产品过程的优点和缺点

做汽车软件的都知道,汽车软件要经历许许多多繁琐的过程(这里为产品过程的一部分)才会发布。那么请问,这个过程重要吗?答案肯定是必然的,但是产品过程的繁琐与流程又会抑制产品的未来,这产品过程不可谓是一把“双刃剑”。高质量的产品离不开它,但是它又会成为产品成长的枷锁。大家在反驳这个观点前,请先思考下以下几个问题:为什么那么多伟大的产品都是在产品过程之外产生的?

2025-03-10 16:25:30 556

原创 深入理解UDP:一种高效但不可靠的传输层协议、揭示其工作原理

UDP(User Datagram Protocol)是一种无连接的传输层协议,它为应用程序提供了一种简单、不可靠的数据传输服务。与TCP(传输控制协议)相比,UDP在数据传输过程中不需要建立连接,也不保证数据包的顺序和可靠性。UDP作为一种高效但不可靠的传输层协议,在现代网络技术中发挥着重要作用。虽然它不适用于所有场景,但在实时性、低延迟要求较高的应用中,UDP具有独特的优势。了解UDP的工作原理和应用场景,有助于更好地优化网络通信性能。

2025-03-03 17:16:25 1398

原创 TCP协议工作原理详细介绍(具体参数版)

​下面是一个简化的TCP数据传输过程的具体数据例子,相较之前的文章《TCP协议工作原理详细介绍(形象举例版)》,作者在此将相关的形象说明进行了数据化,同时也基于Wireshark抓取的TCP数据进行了关键参数抽取,便于大家能够更快的了解TCP的建立过程。感兴趣的朋友可以下载软件“Wireshak”自行抓取解析一下,该软件对16进制报文做了充分的解析,也通过更直观的UI界面展示相关内容,同时也提取出了相关的关键参数。

2025-02-28 11:23:10 908

原创 TCP协议工作原理详细介绍(形象举例版)

通过这个例子,可以看到TCP协议就像是一个精心设计的邮递系统,确保信息能够可靠、有序的在A和B之间传递,即使是在网络条件不佳的情况下也能保持通信的稳定性。希望对大家有所帮助。

2025-02-27 17:13:35 721

原创 OSI七层模型和TCP/IP四层模型形象实例

这些实例可以帮助更直观地理解每一层在数据传输过程中的作用。每一层都有特定的功能和责任,共同确保数据能够从源头安全、有效地传输到目的地。

2025-02-26 10:05:12 1317

原创 OSI七层模型和TCP/IP四层模型介绍

本章主要是对计算机网络知识的一个整理,后续会对其进行实际举例进行发散,感兴趣的朋友可以关注一下,共同学习与进步。

2025-02-25 17:18:49 1170

原创 缓存为什么比主存快?

缓存之所以比主存快,是因为它采用了更先进、更高效的SRAM技术。这种技术使得缓存能够更快速地响应处理器的数据请求,而DRAM的刷新机制和复杂的访问流程则导致了相对较慢的访问速度。这些技术差异,不仅体现在存储器的内在实现上,还体现在它们与处理器核心的距离、总线宽度以及数据传输协议上。正是这些因素的综合作用,使得缓存成为了计算机性能提升的关键所在。

2025-01-21 10:13:56 749 1

原创 链表队列应用场景及代码实现——附源码

队列,为什么突然想写关于它的文章,主要原因是在新公司(从事汽车行业)后,接手了公司部分平台软件的开发,跳过槽的兄弟都知道,一家企业内部的代码风格基本上是一致的,特别是那种老旧平台,初创人员都离职了的平台更甚之。这种平台的代码框架大多都是条理不清晰,说直白一点,代码能跑就行,很多地方明明会严重阻塞程序运行,但是它的功能就是正常的,所以面对这种代码框架,我们能做的就是尽量克制住自己,不要觉得自己能力强,就去做修改。因为往往这种老而旧但仍在使用的程序正是量产的产品的代码,一次修改意味着影响市场上所有的产品。

2025-01-20 15:05:42 858

原创 C语言编程常见错误与防范策略(实例)

​前面通过《C语言编程常见错误与防范策略(大纲)》分享了C语言的常见错误,那么接下来这篇文章就是针对相关错误所编写的代码实例,以便大家能够更直观的体会

2025-01-06 08:52:07 351 1

原创 C语言编程常见错误与防范策略(大纲)

C语言编程错误多种多样,但通过遵循良好的编程习惯、使用现代工具和编写测试代码,我们可以有效降低错误发生的概率。只有深入了解C语言的特性和陷阱,才能编写出高效、稳定的程序。

2025-01-06 07:30:00 1032

原创 485通信详细描述(附示例代码)

新的一年,万象更新,在这充满希望的开始,我选择以485通信为主题,开启新年的首篇文章,之所以选择这一通信协议,原因有三:1、485通信,是我初涉嵌入式领域的启蒙老师。它如同一名智者,引领我走向嵌入式世界的大门,在我接触它、使用它、排查问题的过程中,被其百般折磨。2、485通信具有广泛的应用前景。在我国,485通信已被广泛应用于工业控制、智能家居、物联网等领域。深入了解这一协议,有助于我们更好地把握行业发展脉搏,为我国嵌入式产业和繁荣作出贡献。3、485通信的魅力在于其简洁 、稳定、高效的特点。

2025-01-03 17:05:23 1313 1

原创 软件耦合类型及相关说明

软件耦合类型及相关说明

2024-12-27 13:22:50 311 1

原创 《我的嵌入式软件之旅:在创新与优化的道路上自我反省》

创新与优化相互成全,相互依赖,两者可以是同一个东西,之所以区别出来,我感觉只是这两个词汇给人带来的冲击力不同罢了。试想一下这个场景:某某优化了红绿灯的计时系统,使该系统更加稳定,并增加了语音提示功能;某某针对红绿灯的计时系统,创新出了新一代的计时系统,比原本的旧系统更加稳定,并增加了语音提示功能。二者其实只是不同的表达方式罢了,因为创新与优化在人的脑海中用已经有一个“高低之分”了。——有需求才有优化与创新。

2024-12-26 14:56:09 1631

原创 《更了解设计内涵的人更懂设计》

内涵”的释义摘录于字典,内涵是一种抽象的但绝对存在的感觉,是某个人对一个人或某件事的一种认知感觉。内涵不一定是广义的,也可以是局限在某一特定人对待某一人或某一事的看法。它的形式有很多,但从广泛来讲是一种可给人内在美感的概念。人的感知能力有差异,且内涵不是表面上的东西,而是内在的,隐藏在事务深处的东西,故需要探索、挖掘才可以看到。为什么说更了解设计内涵的人更懂设计,这是因为设计不仅仅是外观的美感或者功能的实现。它还包括了更深层次的意义和目的。

2024-12-23 17:19:43 700 2

原创 《工程师设计思维——理性模型》

理性模型在特定的情形下会体现出更多的长处,在项目早期就给出目标的明确陈述,相关的必要条件以及约束说明,这有助于避免团队陷于举棋不定的局面,也促使团队形成关于项目宗旨的统一认识。在开始编码或正式的制图上工作开始前做好整体的设计过程规划,就能够规避大量麻烦(也是为了避免各种扯皮),也避免让许多努力都付诸东流(其实就是做无用功,做了很多,但是没用,类似要洗衣服,没有脏衣服,你放再多水又有何用?)。将设计过程打造成对于设计空间的系统化搜索,可以扩展设计师个人的眼界,并远远超过其先前的个人经验。

2024-12-18 11:05:38 571

原创 《探索设计领域的三种境界》

例行设计、改造设计和实在设计各有侧重,共同构造设计领域的完整体系。在实际工作中,设计师应根据项目需求和阶段,灵活运用这三种设计方法,以实现产品和服务的最佳效果。从长远看,一个企业应注重培养设计师的创新能力和实践能力,以适应不断变换的市场环境,推动设计领域的持续发展。软件设计合何尝不是如此呢?在如今的市场里面,软件设计师(软件给的各个设计领域)也是需要考虑可持续发展的设计。

2024-12-16 09:03:34 681

原创 《创新与简约并存,打造非凡体验 —— 设计理念》

在这个瞬息万变的时代,设计不仅仅是美学的外在表现,更是一种生活态度的传达。深知,每个设计细节都承载着用户的期待与信任。

2024-12-12 14:51:58 846

原创 C语言指针-二级指针

二级指针的应用与举例,主要是对数组指针的应用进行实际举例

2024-12-08 11:07:59 515 1

原创 C语言指针-一级指针

指针也就是内存地址,指针变量是指用来存放内存地址的变量。就像变量一样,在使用指针存储其他变量地址前对其进行声明。一级指针时C语言中非常基础和重要的概念,熟练使用指针,相当于人眼开透视一般,能实现其他语言无法实现的操作。值得我们深入理解与学医使用。

2024-12-08 09:50:11 550 1

原创 CAN通信之位时序

位时序的在CAN协议中是非常重要的。根据环境的不同,可以通过编程配置位时序的参数,正确的配置CAN通信的位时序对于确保网络的可靠性和效率是非常重要的。同时,它也是CAN通信协议的核心组成部分,因为它直接影响到网络的性能、可靠性和稳定性

2024-12-05 14:46:28 1119

原创 技术文档编写指南

一篇高质量的技术文档能够有效传递信息、指导使用、解决问题并提供支持。确保文档的准确性和实用性,从而提高团队效率和项目成功率。

2024-12-02 13:03:07 1039 2

原创 CAN通信错误帧之应答错误(六)

应答错误会影响CAN网络的通信效率和可靠性,通过检测并响应应答错误,CAN网络能够确保数据帧正确接收,从而维持网络的可靠性和数据完整性。在这里,关于CAN的错误帧的相关内容就讲解结束了,如有遗漏或错误的地方欢迎大家指正,一起共同进步。

2024-12-02 09:11:19 1142

原创 CAN通信错误帧之格式错误(五)

格式错误可能导致通信的中断(错误标志的发送会中断当前的数据传输)、网络性能下降(频繁的格式错误会导致网络性能下降,因为节点需要重新发送数据帧)以及节点状态变化(错误计数器的增加可能会导致节点进入错误被动状态或关闭总线,进一步影响网络通信)。CAN通信通过立即检测并响应格式错误,才能够保持较高的通信可靠性和数据完整性。

2024-11-29 09:03:05 739 1

CAN的采样率计算工具

CAN的采样率计算工具

2025-03-11

W25Q80驱动代实例

W25Q80驱动代实例,详细构造了w25q80的驱动代码

2025-03-11

TLF35584驱动函数库以及Demo

基于英飞凌TC397实现TLF35584驱动编写 涵盖SPI配置信息以及驱动Demo例程

2024-12-17

Modbus协议概述及实例详解(二)附源码

主要是关于Modbus协议的C代码实现库

2024-10-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除