单片机原理简介

2023-05-16

提出问题:

什么是单片机?

类似于一台性能相对较弱的微型电脑,具有完整的计算机结构和片内外设(例如串口,I2C,ADC等硬件),将他们集成封装在一颗芯片上就成为单片机。根据单片机的性能,性能相对较弱的称为单片机(比如51单片机),性能相对强的叫嵌入式系统(比如32MCU),手机里的叫SOC(里面的集成度更高)。‘

单片机简单的工作流程就是通过其他设备(比如PC)将写好的代码烧录进去,芯片按照既定程序执行,所以称为“嵌入”式。我们学习单片机也是这么一个过程,将程序写好烧录进去然后调试执行。

什么是32单片机?

STM32,是一款单片机,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起来就是 ST 公司开发的 32 位微控制器。32单片机是我们使用最多的单片机之一,因为他的生态完善,网上资源非常丰富,性能又很强(比如f1系列的主频72Mhz,51的只有12MHz),所以受到青睐。

什么是单片机最小系统板?

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统,实际上单片机的最小系统可以做到非常简单,因为本生集成度就很高,接入电源和晶振就能使用,但为了确保使用的稳定性我们一般不会设计得过于简单,具体得详情接下来会讲。

为什么要学这个最小系统板的硬件?

弄清楚最小系统板的原理是开发前的通识课,因为学习单片机就是要根据硬件编写程序,比如你要知道哪个引脚接的是灯你才能配置这个程序,所以大概了解一些基本原理对我们有帮助。

  1. 32单片机生态与选型:

32单片机的生态

32单片机的官方给出的是cubeMX,cubeIDE(我们用的是keil51),cubeMoiter等等(目前官方已不再维护标准库),适合直接开发的32单片机的软件,特点是上手快,图形化配置,自动生成代码,省去查找引脚资源查看数据手册的时间(特别是拿到一块新的型号的芯片时),cubeMX 使用的是hal库(每个单片机都有自己的库文件,用来存储寄存器等信息),hal库最大的特点是方便移植,统一性强,所以你学会了STM其中一款单片机,其他基本都会用。当然如果想要更深层次的了解单片机,还是需要学习一些标准库的知识的

32单片机选型

常用型号:

STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、M3、M4 和 M7 这几种,每个内核又大概分为主流、高性能和低功耗,F1 代表了基础型,基于 Cortex-M3 内核,主频为72MHZ,F4 代表了高性能,基于 Cortex-M4 和Cortex-A7内核,主频 180M。

最基础的是STM32f103C8T6,它的内部资源比较平衡,成本也不高。

查找方式:

1.利用cubeMX ,里面可以通过筛选找到最适合的型号,虽然每个型号的资源有所不同,但利用HAL库编程时非常方便配置和移植的。同时如果你用的标准库,cubeMX也可以通过图形化界面告诉你哪些引脚有哪些资源,非常方便。

2.进入官网查询·

STMCU中文官网

  1. 2. 单片机最小系统板的构成

1) 复位电路

复位:指使系统回到初始状态,重新开始执行程序。不同MCU的复位电平可能不同,比如51单片机为高电平复位,STM32为低电平复位。为防止系统正常执行过程中误触,复位需要一定的时间的电平持续(比如0.1S)才会被判定复位。)

图中为高电平复位,电阻可以看成下拉电阻

软件复位:32单片机可以使用看门狗或者特定的函数进行软件复位。

上电复位:由于上电时电容中电荷为零,存在电容从0V充至5V的过程,此时电阻的RST从5V降至0V。由于RST端高于1.5V视为高电平,所以实际上电容从0充至3.5的0.1S时间内会触发系统复位。

按键复位:当平时按键不动时,电容充满电,电阻没有电流所以没有压降,如图,RST引脚此时属于低电平。当按键按下时,电容瞬间放电,按键松开时其实相当于是一个上电过程,同上会触发复位(实际上,手动按键不加电容一定情况下也能正常复位,但存在不稳定性)

    • 时钟晶振

晶振振荡原理

晶振的主要部件是石英晶体,结构为石英薄片两侧涂抹导电银层。利用石英的压电效应(通电产生形变,形变又会发电),对石英晶体通交流电会产生形变,形变又产生电压,当外电路频率和晶体固有频率相同时,晶体的振幅最大,同时产生相当稳定的振荡(正弦波),利用这个正弦波为单片机提供稳定的时钟频率。

原理图

石英晶体的等效电路为:动态电容C1,动态电感L1,谐振电阻R1和静电电容C0

注意:所有单片机都是运行在一个相对稳定的时钟频率下,作为芯片工作的节拍使用。

工作时有串联和并联两种方式,但需要外部振荡电路实现,单片机常用的是串联的方式,如上图。

串联谐振时CL1,CL2 为匹配电容(32系统板上为22pf),用于和晶体形成正反馈电路。即上端的波动不断地被石英晶体筛选和放大,进而形成稳定的正弦波。这是需要一个不断振荡的过程进行起振的。

晶振的频率越高误差会越大,一般我们选择8MHz的晶振为32单片机提供时钟,32单片机(以STM 32f103为例,锁相环和分频器会将它分成72MHz),由于工艺原因一般贴片小晶振很少小于8MHz的,32单片机的低速时钟会选择32.768kHz的晶振,因为15分频后刚好是1Hz,可以为时钟提供秒节拍。

晶振布线注意事项

而晶振的布线有一个特别注意的点,就是要求晶振紧挨IC,因为快速变化的电场会产生磁场,磁场变化又会产生电场,导线越长这种效应越明显,干扰电流越大,会扰乱正常的振荡。

除了晶振外,32单片机内部还有一个RC振荡器可以产生低速时钟,没有外部晶振芯片也能正常使用,但这种时钟频率精度非常低一般不建议使用。

3)电源

对于单片机的电源讨论,原因在于单片机需要使用稳定的3.3V供电,二普通的USB供电一般为5V,所以必须将供电电压转换为需要的电压,这部分器件就是电源负责的对象

线性降压

线性降压,就是利用运算放大器通过不断调整内部“电阻”大小使输出电压稳定在设定电压上,由于这种电路内部比较复杂,一般将其集成封装在一个器件中,就是我们经常见到的三端稳压器,常用的有AMS1117和78系列稳压器。

提到线性稳压,我们用的大部分最小系统板的电源都是三端稳压,原因是它的电路非常简单,输出电压稳定(纹波小),但是三端稳压的缺点就是功耗比较大发热严重(比如压降2V,电流0.5A,功耗就是1W,已经相当大了),提供电流也相对较小,但最小系统板需要的电流也不是很大,所以刚好合适。

图 SEQ 图 \*ARABIC 1三端稳压器内部结构

注意:外部接的两个电容在这里的作用是

电源的输出端并联电容的目的是:平缓电压突变,滤除高频噪声,电源断电后维持一段反应时间。

电源的输入端并联一个电容的目的是:防止断电时,输出端电压过大回流烧毁芯片,保护芯片。

参考博客 12V转5V稳压电路详细分析(7805三端稳压,LM2596稳压)

1117系列

低压差可以驱动,也称为LDO,常见的有AMS公司生产的AMS1117(输入最大15V,输出3.3V,800mA),TI公司生产的ti1117等,这里注意由于输入电源的纹波特性,更稳定的输出效果,必须在输出输入加电容,而AMS1117官方强烈建议加胆电容(因为胆电容的寄生电阻大)。

1117系列也有可调系列,原理是下方的R2两端为稳定基准电压,R2和R1为分压,调整R1上的电阻可以得到指定电压

78系列

78/79系列为常用的一种稳压器,78为共阴极(正输出),79为共阳极(负输出),常用为78系列

命名XX X XX ,前面两位为78或79,中间的字母表示电流大小,后面的数字表示稳压值

L

M

S

H

P

0.1A

0.5A

1A

2A

5A

10A

比如常用的是7805表示稳压5V输出1A,共地(正输出)

(口诀:一进,二地,三出)

开关电源降压

学习衔接:电感式开关电源(BUCK降压电路)

原理:BUCK降压电路(电力电子技术)

原理

PWM波(一种周期性的脉冲波)的等效电压为实际输入电压乘占空比(占空比指高电平持续时间占总的“空时间”的比例),原理:冲量(窄脉冲面积)相等而形状不同的PWM波(或窄脉冲)加在具有惯性的环节上时,其效果基本相同,比如12V转5V就需要输入5/7*100%占空比的PWM波。PWM由芯片不断控制MOS管的开关实现。

实际的PWM波和5V稳定电压波形并不相同,后面会加入滤波电路使电压平稳,滤波效果会遗留纹波,即直流电和交流电的叠加(所以开关电源输出的稳定性不如线性稳压电源

电容:I=C*du/dt,电容两端的电压不能突变,一旦突变,根据公式会产生非常大的电流。

电感:U=L*di/dt,电感的电流不能突变,在这个电路中用于限制电流,同时不消耗能量,加入后会成为平和的三角波,同时加入二极管(也叫蓄流二极管,一般选用肖特基二极管或者快恢复二极管)为开关断开时给电感提供回路。

FB为分压电阻,用于设置输出电压

芯片电源引脚旁的旁路电容

参考博客芯片电源引脚为什么要加一个100nF电容

作用

1. 滤除电源上的高频噪声。

2. 储能,当负载需要瞬时电流时,电容率先为其提供电流,减小电源产生的波动

3.给高频信号提供最近的低阻抗回流路径,减少对其它芯片电源的干扰

要求:

尽量每个电源引脚都有电容

电容尽量靠近芯片

两个电容时,大的在外侧,小的在内侧

容值问题:

参考博客

4)下载电路

1.使用串口通讯一键下载

串口一键下载电路分析

启动方式配置

一键下载原理:

当烧写程序时,我们希望BOOT0=1,BOOT1=0。当烧写完成后我们希望BOOT0=0,BOOT1=0(这个模式BOOT1可以是0可以是1,这里我们让BOOT1拉低,即整个过程BOOT1都为L接地,简化电路设计)

烧写程序时, RTS#低电平,此时BOOT0=1,随后DTR#高电平,此时触发复位,程序通过串口烧录,烧录完成后系统会自动识别并执行,此时RTS恢复高电平(BOOT0为0),回到模式一,上电复位后,在SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,进入主闪存存储器,执行我们烧写的代码。

Flash锁死解决方法:

开发时,由于某种原因导致内部Flash锁死,无法连接到SWD调试器读取设备,这种情况在我们之前培训时偶尔会遇到,这时候可以通过修改BOOT来解决。修改BOOT0=1,BOOT1=0,从系统存储启动,这是ST出厂时自带的Bootloader程序,再重新烧录程序,烧录完成后调整BOOT0=0,BOOT1=X,此时就能正常启动了。(如图修改跳线帽即可)

2.使用串口Debug下载

32单片机自带串行下载方式,支持调试,下载速度非常快,通过TTL串口下载FreeRTOS程序(内存较大)差不多一分钟,而用JINK下载仅用了不到30秒,接线图如图,这里不用太在意,直接接就能正常使用。Debug下载可以用cube生态的下载器,或者直接用keil软件都是可以的。

5)单片机其他知识

32单片机IO口内部

参考博客:GPIO的推挽输出和开漏输出

推挽输出

输出控制为高电平时,通过反向器,加在G端为低电平,此时PMOS导通,由于MOS管内阻很低,此时Vout的电压几乎和VCC一至,输出高电平,反之输出低电平

推挽输出的特点

1:高电平与电源电压压差很小

2:驱动能力强,一般GPIO能输出20mA

3:电平切换速度快

4:不支持线与(&相当与乘法):将两个推挽输出连接到一起会烧坏IO口

开漏输出

当MOS管关闭时为高阻态,此时与地不导通,输出电平由VDD拉高,(可以看到相当于VDD通过上拉电阻接入负载,电流由上拉电阻提供);当MOS管打开时,DS之间近似看成导线,此时输出端为低电平,此时输出段电流由MOS管提供。

所以开漏输出的低电平驱动能力会强,高电平输出能力弱,一般LED控制段接低电平就是这个原理。像51单片机的P0端口都是开漏,都要配置上拉电阻才能正常使用。

开漏输出特点:

1.电平切换速度取决与上拉电阻

2.高电平驱动能力差,取决与上拉电阻

3.可以支持线与,即两个开漏输出连接在一起,有一个低电平,输出就是低电平

I2C配置要求

I2C是一种通讯协议,和串口一样用来传递信息。

虽然I2C在软件配置上可以用cubeMX 直接生成,但32单片机的硬件I2C是有问题的,如用I2C硬件驱动OLED时与其他片内外设同时使用时会出现不定时的卡机程序卡死,所以直接使用软件I2C问题会少一些(软件I2C是用软件模拟通讯时序进行使用)

软件I2C的硬件配置就是一个问题,I2C的SDA和SCL都是开漏输出,目的是满足线与,有一个从设备拉低SDA信号线时都会拉低整体,所以配置要求就是上拉,开漏,同时在设计电路图时,一条I2C总线上有多个设备时只需要一次上拉

上拉电阻,电阻大小一般为4.7K(详细参考IIC信号为什么要加上拉电阻)

IO口驱动大电流讲解

驱动LED灯:

LED

(注意使用LED时一定要加限流电阻)

这里简单介绍一下限流电阻的计算方法:

假设LED的正常工作电压为2V,电流为0.01A,则电阻为:(5-2)/0.01=300Ω

同时要考虑功率:0.01×3V=0.03W

此时就可以选取合适的电阻了

驱动MOS管:

MOS管的识别:箭头代表N区,箭尾表示P区域,图中左侧的位置代表沟道,是哪部分就是什么沟道,比如第一个,左侧是箭头,所以是N沟道MOS管。

基本电路结构如图中所示,限流电阻用于保护IO口,实际没有电流

这里讨论下拉电阻的作用,下拉电阻一般为10KΩ(经验值,就别问为什么了)

1.使单片机上电时MOS管的状态确定且关闭

2.断电后使GS的寄生电容能够放电,保证下次上电时不会误开

3.防止静电击穿,通电时,G级会聚集大量静电,这是可以将静电放掉

驱动三极管:

这里讨论一下限流电阻R2的选取

假设GPIO输出3.3V,LED导通电压2V,电流20mA,当三极管饱和导通时,CE段的压降看为零,BE端压降看为0.7V

此时R1 = (5-2)/0.02=150Ω

IB=0.1IC=2mA(十分之一为经验值),R2=(3.3-0.7)/2mA=1.3KΩ

  1. 磁珠

(磁珠本身用得不多)

损耗:

磁滞损耗:铁磁材料置于交变磁场中,材料被反复磁化,与此同时,磁畴相互间不停的摩擦造成损耗,这种损耗称为磁滞损耗

涡流损耗:因为铁心是导电的,通过铁心的磁通随时间交变时,根据电磁感应定律,铁心中将产生感应电动势,并引起环流。涡流在铁心中引起的损耗,称为涡流损耗

参数:

阻抗值和精度(100MHz),额定电流和直流电阻值

作用:

电源滤波,一般都和电容一起使用,RLC滤波,或者LC滤波,10,0.1uf

RM开发板上的磁珠一般是用来达到EMC标准的(EMC)

  1. 通讯线上的匹配电阻

信号线上串接电阻的作用

作用:

1.阻抗匹配,吸收反射信号

2.吸收干扰信号

3.便于调试信号

注意:

串接电阻用作阻抗匹配是一般是接到信号的发射端,不能接到信号的接收端,阻值的话一般100欧以内,阻值大了信号会畸变,可能有时序问题。

  1. 5. 附录:常用单机最小系统板

  1. 6. 附录:学习硬件的资源

学习硬件学习资源

1:B站 郭天祥,他的课程比较有体系,注重基础与常识,非常适合初学者

2:B站 唐老师讲电赛,他的课程比较全面,详细,应用性非常强,他讲解中电源部分非常详细可以试试

3:CSDN:小鱼教你模数电,他在B站上有很多视频,主要讲解硬件方面的常识,在CSDN上看文章会方便很多

4:CSDN:乙酸氧铍,他的博客有总结唐老师课程的资料,看着很方便

5:CSDN:优信电子,淘宝商家,里面模块和例程都有非常全面优信电子所有博客汇总(导航搜索)

6:硬件:硬创社,里面有非常丰富的开源项目,可以白嫖和学习使用

7:数据手册:半岛小芯,里面有非常多的数据手册,也可以用芯查查立创EDA查看

这时候有个问题,数据手册是纯英文怎么办?最直接的方式是将pdf翻译成html再用edge翻译,其中会有很多的错误需要比对鉴别,pdf转html网站:PDF转html,或者直接用百度翻译,它有个划词翻译的功能,选中就能翻译也很方便。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机原理简介 的相关文章

  • spring cloud gateway网关和链路监控

    文章目录 目录 文章目录 前言 一 网关 1 1 gateway介绍 1 2 如何使用gateway 1 3 网关优化 1 4自定义断言和过滤器 1 4 1 自定义断言 二 Sleuth 链路追踪 2 1 链路追踪介绍 2 2 Sleuth
  • sso单点登录

    文章目录 目录 文章目录 前言 一 sso结构实现 二 使用步骤 2 1 建一个spring cloud 项目 2 2 common下的core的配置 2 3 实现系统的业务微服务 2 4 sso模块的编写 总结 前言 单点登录 Singl
  • windows版 redis在同一局域网下互联

    项目场景 xff1a 同一局域网下各个主机互相连接同一个redis 问题描述 无法连接 原因分析 xff1a 没有放行对方的地址 解决方案 xff1a 修改配置文件 最重要的一步如下 然后把 redis windows conf的文件也照上
  • mysql数据库之存储过程

    文章目录 目录 文章目录 前言 一 存储引擎 1 1 InnoDB 1 2 MyISAM 二 存储过程 2 1 存储过程 2 1 1 创建存储过程 2 1 2 调用存储过程 2 1 3 查看存储过程 2 1 4 删除存储过程 2 2 语法
  • 秒杀的理解

    项目场景 xff1a 秒杀限时或者限量的处理一件商品 实现理解 xff1a 秒杀业务流程 如果使用java逻辑判断减库存的话 xff0c 会出现多个线程同时修改好库存 xff0c 然后存入相同的修改值 实际上是卖出了多个 但是数据库只扣了一
  • VUE3的setup函数

    文章目录 目录 文章目录 前言 一 setup函数是什么 xff1f 二 使用步骤 三 vue3中文文档和面向vue3的组件库 总结 前言 Vue3是一个面向数据驱动的渐进式JavaScript框架 xff0c 其的设计理念包括简洁 灵活和
  • 几种实现promise队列的方法

    第一种 xff1a 使用map实现promise队列 初始值为promise resolve 为成功状态 xff0c 每次成功都返回一个promise xff0c 依次执行 span class token keyword function
  • SD卡在烧录镜像系统之后恢复正常使用

    问题 xff1a 我们知道发现镜像系统烧录完毕以后将SD卡插入电脑 xff0c 电脑会找不到SD卡 xff0c 也无法读取SD卡显示 实际是可以的只是不能正常显示出来 xff0c 这是正常现象 如果我们的开发板 xff08 如jetson
  • 手工制作F450四旋翼无人机的工具准备以及apm调参 GPS调参等相关工作

    F450 是一款大量航模爱好者都很喜欢的一款无人机结构 xff0c 很多想动手制作无人机的同学 xff0c 都是从这一款机型开始的 xff0c 当然我也是 xff0c 在制作一款无人机 xff0c 我们需要以下部件准备 xff0c 1 xf
  • git合并分支

    前提 xff1a 所有开发在develop xff0c 最后合并到master 1 从master建立本地分支temp xff0c git checkout b temp xff0c 这个temp分支不要发布到远程仓库 xff1b 2 在t
  • Java基础笔记一

    Java基础笔记一 本文章是作者学习B站系列视频 狂神说Java 的记录笔记与心得 xff0c 创作不易 xff0c 希望能够得到您的支持 Java程序运行机制 编译型 xff1a 完整编译 Java编译器将 java 文件编译为 clas
  • 树莓派4b入门以及各种系统烧录问题分享

    文章目录 前言一 买一个树莓派二 上系统三 系统烧录故障情况1 固件问题2 验证失败3 插入主板 xff0c 报错 xff1a VFS Unable to mount root fs on unknown block 179 2 1 重新格
  • gazebo保存world时出现问题

    gazebo保存world时出现没反应 xff0c 以为卡死了 xff0c 可最小化的时候能看到保存界面弹出 可以每次最小化再放大 xff0c 以此刷新界面 xff0c 一步一步保存
  • Windows向日葵连接Ubuntu时“连接已断开”解决方案

    环境 控制端 xff1a Windows10 系统 xff0c 向日葵版本12 5 1 44969 被控端 xff1a Ubuntu20 04 系统 xff08 默认gdm3桌面 xff09 xff0c 向日葵版本11 0 0 36662
  • [调参神器]使用VOFA+上位机进行PID调参(附下位机代码)

    1 VOFA 43 是啥 简单地来说 xff0c VOFA 43 是一个超级串口助手 xff0c 除了可以实现一般串口助手的串口数据收发 xff0c 它还可以实现数据绘图 xff08 包括直方图 FFT图 xff09 xff0c 控件编辑
  • visual studio 2022 调试时如何1、打开监视窗口;2、监视窗口无法输入问题

    1 如何打开监视窗口 xff1a 注意要先点击调试 xff0c 不然没有这个窗口 2 如果窗口显灰色 xff0c 说明当前调试状态没有中断 xff0c 而只有中断的时候才可以输入或修改 3 点击调试里的 全部中断 后就可以输入了 xff01
  • 单片机学习——定时器/计数器

    单片机必学系列 单片机学习 中断系统 单片机学习 存储器详解 xff08 程序存储器 片内RAM 拓展RAM EEPROM xff09 单片机学习 定时器 计数器 单片机学习 A D转换 更新ing 单片机学习 定时器 计数器 单片机必学系
  • C++的动态多态性理解

    多态 xff1a 指允许不同类的对象对同一消息做出响应 即同一消息可以根据发送对象的不同而采用多种不同的行为方式 xff08 发送消息就是函数调用 xff09 像我们之前学的函数重载和符号重载都是多态现象 例 xff1a 使用运算符 43
  • Hadoop伪分布集群配置(我用的是VMwareWorkstation)

    1 虚拟机环境准备 xff1a 1 0 xff09 首先准备好一台已经安装好了的虚拟机 我这里用的是Centos 2 0 xff09 安装 vim 编辑器 使用 yum y install vim 也可以直接用vi 注意 xff1a 安装好
  • fork函数的用法

    1 头文件 include lt sys types h gt inlcude lt unistd h gt 2 函数原型 pid t fork void 函数参数 xff1a void 3 fork函数功能 fork xff08 xff0

随机推荐

  • gitee配置流水线实现自动打包vue

    1 任务编排 xff1a 第1步 xff1a 创建一个构建任务 xff0c 选择nodejs xff1b 第2步 xff1a 编写构建命令 设置NPM源 xff0c 提升安装速度 npm config set registry https
  • Linux操作系统:Firewalld防火墙

    Linux操作系统 xff1a Firewalld 防火墙 课堂引入 xff1a Linux防火墙是通过netfilter来处理的 xff0c 它是内核级别的框架 iptables被作为netfilter的用户态抽象层 xff0c ipta
  • 全景图拼接

    目录 一 图像拼接基本流程 二 RANSAC 随机一致性采样 2 1 RANSAC基本思想 xff1a 数据中包含正确的点和噪声点 xff0c 合理的模型应该能够在描述正确数据点的同时摒弃噪声点 2 2 RANSAC基本流程 xff1a 2
  • 11. JS操作节点续(2) + DOM 重点核心

    关于dom操作 xff0c 我们主要针对于元素的操作 主要有创建 增 删 改 查 属性操作 事件操作 DOM xff1a 我们获取过来的DOM元素是一个对象 xff08 object xff09 xff0c 所以称为 文档对象模型 创建 d
  • Docker-使用篇

    文章目录 一 Docker镜像和容器 镜像命令镜像下载 xff08 pull xff09 查看镜像 xff08 images xff09 镜像搜索 xff08 search xff09 删除镜像 xff08 rmi xff09 容器命令新建
  • Rviz上发布的点位信息机器人不执行(网络配置原因)已解决

    在调试机器人时发现Rviz上发布的点位信息机器人没有执行 xff0c 经检查是由于网络配置原因 xff0c 本文记录解决方法 使用ssh将笔记本与实物机器人连接 xff0c 机器人中控使用的工控机 xff0c 机器人作为显示器和键盘输入 p
  • gazebo小车自主路径规划导航仿真

    gazebo小车自主路径规划仿真 在之前的文章中完成了对地图的构建 xff0c 接下来使用 Ros navgition完成机器人自主导航 首先是Ros navigation的下载安装 ros功能包 xff1a Navigation ros
  • 关于结构体对齐

    首先我们先了解一下各数据类型所占的字节数 x64系统 xff08 64位 xff09 x86系统 xff08 32位 xff09 在这里有一个很有意思的点 xff0c 我使用VS在x86与x64系统下运行出来的long类型所占据的空间都是4
  • 安装docker报出的错误及解决方案

    1 错误一 xff1a 解决方案 xff1a yum erase podman buildan yum install y docker ce allowerasing 重启服务 systemtl restart docker yum源的安
  • make、makefile的使用解释(Linux项目自动化构建工具)

    本文所使用系统为Linux centos 7 makefile是一个文件 里面包含了 xff1a 1 文件与文件的依赖关系 2 文件与文件的依赖方法 为什么需要包含文件与文件的依赖方法和依赖方法呢 xff1f 一个工程中的源文件不计数 xf
  • elementUI中neditor第一次加载无法正常赋值的解决方法

    1 lt neditor v if 61 34 neditorLoad 34 v model 61 34 formFields content 34 class 61 34 wd editor 34 gt 加上v if 61 34 nedi
  • Gazebo仿真中光源的设置

    目录 写在前面官方文档链接point类型directional类型spot类型 写在前面 最近研究在Gazebo中仿真px4 xff0c 使用Apriltag ros包对Apriltag二维码检测的时候发现光源对检测影响非常大 xff0c
  • 使用Java操作Hbase

    目录 修改hosts文件 导入jar包 配置hbase信息 xff0c 连接hbase数据库 创建表 删除表 获取namespace 获取tables 添加数据 查询表中的数据 查询表中所有数据 关闭流 修改hosts文件 位置 xff1a
  • CAN协议国际标准化协议部分总结(一)

    前言 xff1a 本文主要是对CAN协议中ISO11898做一个简短的总结 ISO11898 ISO11519 ISO15765 CAN协议在OSI模型中包含三层 xff0c 物理层 数据链路层和传输层 各层中CAN定义内容可参考下图 其协
  • STM32 串口 DMA 数据读取(详细代码)

    最近重新开始学32 xff0c 搞到串口 DMA 的时候 xff0c 数据读取卡了很长一段时间 xff0c 最终 xff0c 功夫不负有心人终于搞出来了 在此以记录一下 xff0c 方便以后查询使用 在调试的过程中也遇到了很多bug xff
  • 在阿里云购买Linux服务器,配置宝塔环境,全图文,最最详细图解,保姆级教学

    在阿里云购买Linux服务器 xff08 CentOs 7 xff09 xff0c 配置宝塔环境 一 在阿里云购买CentOs服务器 Linux系统 CentOS是免费的 开源的 可以重新分发的开源操作系统 xff0c CentOS xff
  • (Linux)FreeRTOS(任务)

    任务调度器 调度器就是使用相关的调度算法来决定当前需要执行的任务 xff0c 调度器总是在所有处于就绪列表的任务中 xff0c 选择具有最高优先级的任务来执行 抢占式调度 xff1a 主要是针对优先级不同的任务 xff0c 每个任务都有一个
  • 制作一个串口助手 | python + pyqt5

    目录 一 背景 1 1 开发流程图 二 前提 2 1 关于环境 2 2 关于源码 三 步骤 3 1 使用pyqt创建一个 ui界面并生成 py文件 3 2 创建两个 py文件 xff0c 一个用来继承ui界面生成的 py类 xff0c 一个
  • FreeRTOS任务调度与任务切换 | FreeRTOS八

    目录 说明 xff1a 一 任务调度器 1 1 开启任务调度器函数 1 2 任务调度器实现步骤 1 3 xPortStartScheduler 函数 二 启动一个任务 2 1 prvStartFirstTask 函数 2 2 vPortSV
  • 单片机原理简介

    提出问题 xff1a 什么是单片机 xff1f 类似于一台性能相对较弱的微型电脑 xff0c 具有完整的计算机结构和片内外设 xff08 例如串口 xff0c I2C xff0c ADC等硬件 xff09 xff0c 将他们集成封装在一颗芯