对于51单片机相信很多电子信息或者相关专业的朋友应该都不会感觉陌生,很多专业在大学课程中开设的单片机课程就是使用的51单片机进行授课和学习的。51单片机的内容相较于其他高性能复杂的单片机来说,架构相对简单一些,寄存器也少很多,作为新手入门学习是很有好处的,不用一上来就啃很复杂的东西,有助于培养学习的兴趣和达到快速入门的作用。 以前学校学习常见的单片机: 也许很多朋友都有接触过不少的单片机,甚至从事相关开发工作的朋友使用单片机的频率还是相当的高的。但是如果要问你一个问题:什么是单片机?你能回答的出来吗?这点我估计很多就算是从事了很多年单片机开发工作的朋友也未必能说出一个完整的结论。 在我...

  9BL8dis1r0PN   2023年12月10日   17   0   0 寄存器单片机指令寄存器

前面已经分析过RTU帧和ASCII帧的报文区别,细心的朋友应该会发现在两种不同的报文传输模式下都有一个共同的组成部分——差错校验。 这个差错校验在RTU模式和ASCII模式下也不是不相同的。看下面的对比: RTU模式的差错校验: ASCII模式的差错校验: 总而言之,RTU模式下用的是CRC校验,ASCII模式下用的是LRC校验。 下面会说明这两者不同的校验方式是怎么实现的。 1. RTU模式的CRC校验 在 RTU 模式中基于循环冗余校验 ( CRC - - Cyclical Redundancy...

  9BL8dis1r0PN   2023年11月02日   17   0   0 差错校验

​ ​ 选择排序是一种比较直观和简单的排序算法,它和冒泡排序算法都是很经典,很常用的排序算法。 选择排序顾名思义就是在于“选择”这个字眼上,算法的原理就是在需要排序的数据中选择一个数据作为基准,然后用剩下的数据和这个基准进行比较,如果其他的数据比这个基准数据要小(大),就交换数据的位置。 选择排序的算法实现的步骤如下:(按升序排列) 1) 先拿第一个数据作为基准,跟剩余的数据进行比较,将最小的数据放到最开始的位置; 2) 然后在将第二个数据作为基准,再跟剩下的数据进行比较,得到第二最小的数据; 3) 依次类推,完成数据的升序排序。 选择排序的算法原理显示如下: ...

  9BL8dis1r0PN   2023年11月02日   26   0   0 排序算法

​ 1、UART串口 UART:UniversalAsynchronousReceiver/Transmitter,通用异步收发传输器。UART串口是最常见的一种串口通信,下面是串口连接上位机电脑,以及RS232应用的动画。 ▲PC上通过UART来调试MCU ▲RS-232通过电平转换芯片与MCU通讯 2、SPI串行通信 SPI:SerialPeripheralInterface,串行外设接口。SPI是一种常见的串行同步通信协议,其应用也非常广泛。 下面是SPI数据传输的时序图: ▲SPI数据传输(1) ▲SPI数据传输(2) ▲SPI时序信号 3、I²C通信 I²C:Inter-...

  9BL8dis1r0PN   2023年11月02日   35   0   0 通信协议

前言 做过机器人、智能车或者玩航模的朋友应该对舵机不会陌生,这种舵机也是很常用的。 舵机只是我们通俗的叫法,它的本质是一个伺服电机,也可以叫做位置(角度)伺服驱动器。一般被应用在那些需要控制角度变化的系统中,可以方便的实现转动任意的角度,实现控制角度的变化。 sg90舵机的图示: 1、sg90舵机的应用场景 (1)航模 在很多的航模中,sg90舵机都被用于两翼的位置控制,从而实现航模的转向,倾斜之类的。因为航模本身的要求,需要尽量的控制航模的自重,而sg90舵机的重量本身就很轻,扭矩也大,所以能很好的满足要求。如下: (2)智能小车的转向桥 因为sg90舵机的精准角度控制,所以在很...

  9BL8dis1r0PN   2023年11月02日   40   0   0 舵机

单片机开发也是嵌入式开发中的一个大群体,有许多的的人是进行单片机逻辑开发的,也有些人是单片机+嵌入式实时操作系统,当然也有单片机+linux+人工智能技术的。 当然,不管你是什么样的组合方式,只要你最终开发的产品中有使用到MCU,进行程序开发时,都应该会涉及到内存的分配问题。只要是开发程序过程中有过动态申请内存的朋友,对malloc、free估计是不会陌生的。 很多时候单片机的内存分配是会让人感觉到头疼的,有些单片机的内存很大,可以肆无忌惮的申请,有些内存空间又很有限,捉襟见肘,既要完美的实现产品功能,又要考虑内存的问题,不断的各种优化进行适配。而且可能很多人玩了几年的单片机可能都不清楚单...

  9BL8dis1r0PN   2023年11月02日   31   0   0 单片机

手机端阅读:C语言的回调函数原来这么简单 了解开发语言的朋友应该都会对回调函数有所了解,在很多的程序开发语言中都能看到回调的身影。很多场景下,当某个条件成立以后我们希望代码执行某些指定的部分,这个时候可以考虑使用回调函数的方式,这样做思路更加的清晰,也能使代码结构的逻辑更加清晰,结构更加好。 那回调函数的到底是什么呢?它又是怎么实现的呢? 这是本次想要简单分析的一个主题。 但是在说回调函数之前,我觉得很有必要先说明一下“函数指针”这个概念,它是回调函数能够实现的重要基础。 1、函数指针 学习过C语言的伙伴都知道,C语言中的灵魂—指针。可以毫不犹豫的说,要检验你对C语言的掌握程度,那指针绝...

  9BL8dis1r0PN   2023年11月02日   32   0   0 回调函数函数指针指针变量

本文分享一个网上找到的轻量级的开源日志库— EasyLogger。对于嵌入式开发中需要使用到日志功能的,我个人觉得这个是个不错的选择,也是学习别人优秀代码的一个好例子。 首先要说明,这个EasyLogger不是我个人写的,是从网上找到的,感觉不错,使用说明也很详细,就想分享给更多人知道。感觉开源奉献的大佬们,让嵌入式开发有更多的丰富的参考代码和实用功能。 废话不多说,直接放EasyLogger仓库的地址,朋友们有需要的可以自行去克隆下载哦!地址如下: https://gitee.com/Armink/EasyLogger 如果不懂Git怎么使用的话,可以参看我以前的文章: G...

  9BL8dis1r0PN   2023年11月02日   49   0   0 log

关于看门狗想必各位嵌入式软件开发的朋友应该都不会陌生的。在嵌入式软件开发中,看门狗常被用于监测cpu的程序是否正常在运行,如果cpu程序运行异常会由看门狗在达到设定的阈值时触发复位,从而让整个cpu复位重新开始运行。 看门狗的本质是一个计数器,一开始的时候配置其为一个特定的值,然后这个计数器就会一直运行倒数自减,自减到0就会引发系统复位。所以为了避免被复位,就需要隔一定的时间复位看门狗的计数值,也就是我们常说的“喂狗”。 这个“喂狗”的动作应当发生在看门狗引发复位的阈值的间隔中,否者超过或者达到这个阈值,会导致系统被复位,这是我们所不希望看到的。 关于看门狗在程序中使用,可以分两种情况去讨...

  9BL8dis1r0PN   2023年11月02日   32   0   0 看门狗

在嵌入式实时操作系统中,都会有空闲任务的存在,这个任务是伴随着操作系统启动之后而存在的。正常情况来说,系统不挂掉,空闲任务都会一直存在。 freeRTOS 调度器启动时,自动创建空闲任务,以确保系统中始终存在一个能够运行的任务。 它是以最低优先级创建,以确保如果有更高的优先级的任务处于准备就绪状态,则空闲任务不使用任何 CPU 时间,让渡出CPU的使用权给到更高优先级的就绪任务去执行。 freeRTOS中创建空闲任务的代码如下: xTaskCreate(prvIdleTask, configIDLE_TASK_NAME, configMINIMAL...

  9BL8dis1r0PN   2023年11月02日   170   0   0 时间片优先级钩子函数

  PID控制算法是自动控制中的一个非常典型且重要的算法,可以明确的说,对于学自动控制的朋友来说,不懂PID控制,那就等于没真正的学过自动控制。 PID的应用其实在我们的生活中是很普遍的,它不止浮现于算法介绍的文献中,在生活中也是应用广泛的、比如我们日常使用的恒温热水器、液位稳定系统,以及平衡车,无人机的飞行姿态、飞行速度的控制等等。甚至更加高端的领域如自动驾驶等都会涉及到PID的使用。 说到这里,那我们就得要思考几个问题:什么是PID?为什么需要使用PID?什么情况下可以使用PID呢? 那我们先举个例子:比如恒温热水壶大家应该都熟悉吧,我想让热水壶里面的水可以保持在一个恒定的温度...

  9BL8dis1r0PN   2023年11月02日   44   0   0 控制系统控制算法

前面的文章已经介绍过什么是pid了,现在再回顾一下: PID:是过程控制中常用的一种针对某个对象或者参数进行自动控制的一种算法。 这一篇分享不打算再深究pid的理论知识,如果有不懂或者对pid感兴趣的朋友,可以自行查阅资料,或者看我前面的文章。 这次分享一下pid算法的常见实现和流程。主要简单分享一下pid的模拟控制实现和数字控制实现。 1. PID的模拟控制 在以前,计算机系统没这么发达的时候,那个时候很多的系统是通过硬件电子的方式去实现的。如果有观察过一些老物件的话,会发现以前那个时代的很多电子式的控制系统,都是很巨大很笨重的,里面满满的都是电子元器件。 到了后面计算机技术发展...

  9BL8dis1r0PN   2023年11月02日   21   0   0 步进电机控制系统离散化

PID算法广泛的被应用在很多的控制系统中,最终的目的都是希望通过pid控制器实现被控量能稳定在预期的目标值。 使用pid控制器作用于系统的时候,正常情况下它应该是不断的发生作用的,从而让系统能够克服外部带来的干扰最终稳定在期望值。所以对于在一个系统中使用pid进行调节控制的时候,我们是很有必要了解一些有关控制系统的概念和指标的。同时既然选择了使用pid作用系统的控制器,那么有关pid的特性和指标也是有必要掌握的。 (1)系统的状态:动态和静态 一个控制系统的状态可以分为两种:静态和动态。 静态:如果一个系统通过调节之后,各个环节都暂时不动作了,系统的输入保持不变,输出也处于相对静止的状...

  9BL8dis1r0PN   2023年11月02日   24   0   0 控制系统系统控制求余

使用串口进行数据的收发在嵌入式产品中是很常用的一种通信方式,因为串口的简单使用,很容易就被选为产品中数据交互的通信手段。 基于串口进行开发的功能有很多,比如同类/不同类产品之间的通信,RS485通信,RS232通信方式,实现串口命令行终端用于调试等等的。虽然应用的场景有所不同,但是都会涉及到一个共同的问题:怎么确保收到一帧完整的数据? 使用过串口的朋友都会知道,串口收发数据都是按照串行的方式进行的,数据是按照bit的方式一位一位进行发送的。而且发送数据方想要发送的数据长度不一定是固定的,有可能长有可能短,这就会涉及到怎么识别一帧数据已经被接收完了的问题。 1. 串口数据的发送和接...

  9BL8dis1r0PN   2023年11月02日   72   0   0 时间间隔串口

前面的几篇文章分别分享了PID算法的原理、增量式和位置式PID算法的区别、以及过程控制中一些重要的指标,感兴趣的朋友可以回看之前的文章或者自行查阅资料。 在实际项目中,使用数字PID算法对系统的被控量进行控制的时候,有时候并不是仅仅的使用简单的增量式或者位置式的PID就完成了对系统的被控量控制。很多时候会采用一些改进了的PID算法进行系统的控制,以求达到更好的控制效果。 常见的对标准PID算法进行改进的措施有哪些呢?下面会根据我个人有限的经验进行简单的分享,就当是一次学习分享吧! 1、针对微分项的改进 对微分项的改进常见的有两种措施:微分先行和输入滤波。 (1)微分先行 我们知道,在一个闭...

  9BL8dis1r0PN   2023年11月02日   42   0   0 数字信号采样频率采样周期

最近在做项目,需要用到ubuntu进行代码编译生成可执行文件,但是我个人阅读和编写代码喜欢用source insight这个软件IDE。安利一下这个软件,阅读代码和编辑代码真的很棒啊,谁用谁知道吧! 由于在ubuntu中安装source insight比较麻烦,这个软件本身也没有linux版本的,但是我又想ubuntu中的代码可以在windows中打开来阅读和编写,那怎么办呢? 这种情况下需要建立ubuntu和windows之间的文件互相传输的方式。这个前面的文章其实也有讲过,现在重新整理一遍吧。我所知道的方式可以有以下几种: (1)ubuntu搭建ftp服务器,在win...

  9BL8dis1r0PN   2023年11月02日   32   0   0 ubuntu重启共享文件夹

前面的文章已经针对PID进行过分析:PID是比例、积分、微分的三种控制方式组合成的控制算法的称谓。 在使用PID算法进行控制的时候,难点往往都不是怎么样去用代码实现,而是PID控制器的参数整定。PID参数整定是非常关键的,这些参数的设置影响了PID控制算法的快速性、稳定性。所以正确地理解PID各参数的实际物理意义,对PID控制来说是非常重要的。 对PID的理解还是与锅炉加热系统的温度控制来加以说明。对锅炉而言,我们不考虑其他的控制功能和附加因素,就以控制温度稳定在我们期望值而言对PID控制算法进行剖析。 1. 比例控制起什么作用? 假设锅炉系统启动的时候,距离我们期望的温度500...

  9BL8dis1r0PN   2023年11月02日   33   0   0 比例控制采样周期控制算法

Modbus协议是应用非常广泛的一种通信协议规约,也是最早应用在工业现场的协议。 早在1979年出现工业串行链路以来,Modbus的应用就开始普遍起来,它使得各种自动化设备之间的互相通信得到实现,做嵌入式产品开发的朋友应该不会陌生,Modbus的身影是随处可见的。并且在中国Modbus都已经形成了规范的标准,都有相应的国标的文件可以查阅到的。 有兴趣的朋友可以查阅标准文件: 《GBT19582.1-2008基于Modbus协议的工业自动化网络规范第1部分:Modbus应用协议》 《GBT19582.2-2008基于Modbus协议的工业自动化网络规范第2部分:Modbus协议在串行链路...

  9BL8dis1r0PN   2023年11月02日   57   0   0 ide链路工业自动化

首先我们要清楚:Modbus是一种串行链路上的主从协议,在通信线路上只能有一个主机存在,不会有多主机存在的情况。虽然主机只有一个,但是从机是可以有多个的。 Modbus的通信过程都是由主机发起的,从机在接收到主机的请求后再进行响应,从机不会主动进行数据的发送。并且从机之间也不会互相发送数据。 1、Modbus的地址规则 Modbus中的每个从机为了能在通信时被主机识别,都会有一个地址,也称为从节点地址。 从节点地址对从设备而言必须是唯一的,在总线上也只能有唯一的一个设备地址,即从机设备的地址在总线上也不能冲突。 从机是有唯一的设备地址的,而主机本身是没有地址的。 Modbus支持的寻址空...

  9BL8dis1r0PN   2023年11月02日   24   0   0 子节点单播广播地址

Modbus既然是一种通信协议,那它就应该有规定的通信格式用于在设备之间的指令接收与识别。 本文就着重讲讲Modbus协议的RTU帧和ASCII帧。 Modbus帧在串行链路上的格式如下: 在上图的格式中: 1)地址域:指代的是子节点地址。合法的子节点地址为 0 – 247。 每个子设备被赋予 1 – 247 范围中的地址。主节点通过将子节点的地址放到报文的地址域对子节点寻址。当子节点返回应答时, 它将自己的地 址放到应答报文的地址域以让主节点知道哪个子节点在回答。 2)功能码:指明服务器要执行的动作...

  9BL8dis1r0PN   2023年11月02日   44   0   0 Modbus
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~