嵌入式学习前要了解的基础知识
一、电压和电流
在嵌入式开发中,电压和电流是两个基本的电气概念,对于理解和设计电子电路至关重要。它们直接影响到嵌入式系统的性能、功耗、可靠性和安全性。
电压(Voltage)
电压是电场力推动电荷移动的能力,通常以伏特(V)为单位。在嵌入式系统中,电压的概念涉及到以下几个方面:
-
供电电压:嵌入式设备需要一个稳定的供电电压来保证其正常工作。例如,一个微控制器(MCU)可能需要3.3V或5V的供电电压。
-
逻辑电平:数字电路中,电压用来表示二进制逻辑电平。例如,高电平(High)可能表示逻辑1,低电平(Low)表示逻辑0。
-
模拟信号:在模拟电路中,不同的电压值代表不同的信号强度,如声音、光线或温度等。
-
电压转换:嵌入式系统中可能需要不同电压级别的组件,因此需要电压转换器(如稳压器、升压器或降压器)来适应不同的电压需求。
-
电压调节:为了保护敏感的电子元件,可能需要对电压进行调节,防止电压过高或过低。
电流(Current)
电流是电荷流动的速率,通常以安培(A)为单位。在嵌入式系统中,电流的概念涉及到以下几个方面:
-
供电电流:嵌入式设备工作时会消耗一定的电流。例如,一个微控制器在运行时可能消耗几毫安培(mA)到几十毫安培的电流,一般都不会超过25mA。
-
功耗:电流与电压的乘积等于功耗(功率)。功耗是衡量嵌入式系统能源效率的重要指标。
-
限流保护:为了防止电路过载或损坏,可能需要限制通过电路的电流。
-
信号传输:在模拟信号传输中,电流的大小可以表示信号的强度。
-
电磁兼容性:电流的变化可能产生电磁干扰,影响系统的电磁兼容性(EMC)。
电压和电流的关系
在嵌入式开发中,电压和电流之间存在密切的关系:
-
欧姆定律:电压(V)、电流(I)和电阻(R)之间的关系由欧姆定律描述:V=I×R。这意味着通过改变电阻,可以控制电流或电压。
-
功率计算:功耗(P)可以通过电压和电流计算得出:P=V×I。
-
信号完整性:在高速信号传输中,电压摆幅和电流能力需要满足一定的要求,以保证信号的完整性。
应用场景
在嵌入式开发中,电压和电流的概念广泛应用于:
-
电源管理:设计电源电路,确保系统各部分获得合适的电压和电流。
-
电路设计:选择合适的电压和电流规格,以满足电路的性能和功耗要求。
-
故障诊断:通过测量电压和电流,诊断电路中的故障。
-
安全保护:设计过压、过流保护电路,防止系统损坏。
总之,在嵌入式开发中,电压和电流是设计和分析电路的基础,对于确保系统的稳定性和可靠性至关重要。
二、单片机概述
单片机(Single Chip Microcomputer)
单片机是一种集成电路,它集成了处理器核心CPU、内存、输入/输出(I/O)端口、串行通讯接口、定时器、模拟/数字转换器(ADC/DAC)等多种功能。单片机通常用于控制应用,能够执行简单的程序来管理设备的操作。它们可以是通用的,也可以是为特定应用定制的。也叫(Micro Controller Unit )MCU。
嵌入式系统(Embedded System)
嵌入式系统是一种专用计算机系统,它作为更大的设备或系统的一个组成部分,通常用于控制设备的操作。嵌入式系统可能包含一个或多个微处理器或微控制器,以及为特定任务设计的硬件和软件。嵌入式系统的关键特性包括:
-
专用性:为特定的控制功能或应用而设计。
-
实时性:能够保证在严格定义的时间范围内响应。
-
资源受限:在处理能力、内存和能源方面有限制。
-
可靠性和稳定性:需要在恶劣环境下可靠运行。
-
体积小:通常嵌入在所控制的设备内部。
单片机和嵌入式系统的区别
虽然所有的单片机都可以被认为是嵌入式系统,但并非所有的嵌入式系统都是单片机。区别主要体现在:
-
复杂性:嵌入式系统可能比单片机更复杂,因为它们可能包含多个处理器和复杂的外围设备。
-
集成度:单片机具有高度集成的特性,而嵌入式系统可能由多个组件构成,这些组件之间通过各种接口(如I2C、SPI等)连接。
-
应用范围:嵌入式系统的应用范围更广,它们可以用于汽车、家用电器、工业控制等多种场合,而单片机通常用于较为简单的控制应用。
-
软件和硬件:嵌入式系统的软件和硬件通常更定制化,以适应特定的应用需求,而单片机可能运行更通用的程序。
-
开发环境:嵌入式系统的开发可能需要考虑更多的因素,如功耗、散热、实时性能等,而单片机开发可能更侧重于程序设计和逻辑控制。
总结来说,STM32作为一种单片机,可以视为一种特殊的嵌入式系统,它集成了多种功能,适用于广泛的嵌入式应用。在实际使用中,选择STM32还是其他类型的嵌入式系统,取决于具体的应用需求、性能要求和成本考虑。
常见MCU
三、单片机控制原理
单片机(通常称为微控制器或微处理器)控制原理涉及到硬件和软件的协同工作,以实现对电子设备的控制。单片机控制原理可以概括为以下几个关键步骤:
-
输入信号采集:
-
单片机通过其输入/输出(I/O)端口采集外部信号,如传感器数据、按钮状态、开关信号等。
-
-
信号处理:
-
采集到的信号可能需要通过模拟/数字转换器(ADC)转换为数字信号,以便单片机处理。
-
单片机内部的处理器对数字信号进行处理,如计算、逻辑判断、数据转换等。
-
-
决策制定:
-
根据处理后的信号,单片机运行预先编写的程序(固件)来制定控制策略。
-
程序中可能包含一系列的条件判断、循环和分支,以实现复杂的控制逻辑。
-
-
输出控制:
-
单片机根据决策结果通过I/O端口控制外部设备,如驱动电机、点亮LED、发送通信信号等。
-
输出控制可能涉及到数字信号的直接输出,或者通过驱动电路来控制更高功率的设备。
-
-
通信与协调:
-
单片机可能需要与其他设备进行通信,如通过串行通信(UART)、I2C、SPI等协议与其他单片机或模块交换数据。
-
在多设备系统中,单片机还可能需要协调不同设备之间的工作,实现同步控制。
-
-
中断处理:
-
单片机通常具有中断机制,能够响应外部或内部事件(如定时器溢出),快速改变程序执行流程以处理紧急任务。
-
中断可以使单片机及时响应外部变化,提高系统的实时性。
-
-
电源管理:
-
单片机可能需要管理其电源使用,包括节能模式的切换、电源故障检测等,以提高系统的可靠性和效率。
-
-
程序存储与执行:
-
控制程序通常存储在单片机的只读存储器(ROM)、闪存(Flash Memory)或其他非易失性存储器中。
-
单片机的处理器从存储器中取出指令,解码后执行,实现对系统的控制。
-
单片机控制系统的设计和实现需要考虑系统的整体需求,包括处理能力、内存大小、I/O端口数量和类型、通信接口、电源要求等。开发者需要根据应用场景选择合适的单片机型号,并编写相应的控制程序来实现所需功能。
高低电平
在电子学和数字电路中,高电平和低电平是用来表示二进制数的两种状态。它们是数字信号的两个基本电位(bit)状态,通常对应于逻辑“1”和逻辑“0”。
高电平(High Level)
-
高电平通常是指电路或系统中的正逻辑电平,它表示逻辑“1”。
-
在不同的电路系统中,高电平的具体电压值可能不同。例如,在TTL(晶体管-晶体管逻辑)电路中,高电平可能定义为+5V,而在CMOS(互补金属氧化物半导体)电路中,高电平可能接近电源电压,如+3.3V或+5V。
-
高电平可以用于表示设备开启、激活或“真”状态。
低电平(Low Level)
-
低电平通常是指电路或系统中的负逻辑电平,它表示逻辑“0”。
-
同样,低电平的具体电压值取决于电路类型和设计。在TTL电路中,低电平可能定义为0V,而在CMOS电路中,低电平可能接近地线电压,如0V或-0.3V。
-
低电平可以用于表示设备关闭、停用或“假”状态。
应用
高低电平在数字电路设计中非常重要,它们用于:
-
数据表示:在数字系统中,高低电平用来表示数据位。
-
逻辑运算:在逻辑门电路中,高低电平通过逻辑运算产生新的输出电平。
-
信号传输:在通信系统中,高低电平用于数据传输,如RS-232、RS-485等接口。
-
控制信号:在控制系统中,高低电平用作控制信号,如启动、停止等。
注意事项
-
噪声抗扰:在实际应用中,高低电平的选择需要考虑噪声抗扰能力,以确保信号的准确性。
-
电平转换:在模拟信号和数字信号之间转换时,需要使用电平转换器(如ADC和DAC)。
-
电压兼容性:不同设备或模块之间连接时,需要注意高低电平的电压兼容性,以避免损坏设备。
理解高低电平的概念对于设计和分析电子电路至关重要,它们是数字电子学的基础。
相关文章:

嵌入式学习前要了解的基础知识
一、电压和电流 在嵌入式开发中,电压和电流是两个基本的电气概念,对于理解和设计电子电路至关重要。它们直接影响到嵌入式系统的性能、功耗、可靠性和安全性。 电压(Voltage) 电压是电场力推动电荷移动的能力,通常以…...
RTC、直播、点播技术对比|腾讯云/即构/声网如何选型 — 2025 版
前言 作为一个有多年实战经验的开发者,在音视频技术领域我深刻体会到 RTC(实时通信)、直播和点播三者的不同。虽然它们的核心都涉及音视频内容的传输,但在实际应用中,它们的技术实现、使用场景以及所面临的挑战各不相…...

《白帽子讲 Web 安全》之文件操作安全
目录 引言 (一)文件上传与下载漏洞概述 1.文件上传的常见安全隐患 1.1前端校验的脆弱性与服务端脚本执行危机在文件上传流程中,部分开发者可能会在前端使用 JavaScript 代码对文件后缀名进行简单校验,试图以此阻止非法文件上传…...
yolov8训练模型、测试视频
yolov8先训练生成best.pt文件,用这个生成的模型进行视频的测试 因为本来用的代码生成的测试视频打不开,格式应该是损坏了,或者部分帧没有正常保存吧。 修改了一下代码,现状可以正常打开生成的视频了。 1、训练代码train.py im…...
03.网络编程套接字(二)
文章目录 简单的TCP网络程序 服务端创建套接字 服务端绑定 服务端监听 服务端获取连接 服务端处理请求 客户端创建套接字 客户端发起请求 服务器测试 单执行流服务器的弊端 多进程版的TCP网络程序 线程池版的TCP网络程序 简单的TCP网络程序 服务端创建套接字 我…...

一周学会Flask3 Python Web开发-Flask3之表单处理WTForms安装与定义WTForms表单类
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们平时开发项目,都会用到表单,编写表单,提交表单,验证表单,如果…...
Git基本命令索引
GIT基本命令索引 创建代码库修改和提交代码日志管理远程操作操作分支 创建代码库 操作指令初始化仓库git init克隆远程仓库git clone 修改和提交代码 操作指令查看文件状态git status文件暂存git add文件比较git diff文件提交git commit回滚版本git reset重命名或者移动工作…...

【论文阅读笔记】SL-YOLO(2025/1/13) | 小目标检测 | HEPAN、C2fDCB轻量化模块
目录 摘要 1 引言 2 相关工作 3 方法 3.1 为小目标检测增加一个头 3.2 优化网络结构 3.3 改进轻量化模块 3.3.1 C2fDCB 3.3.2 SCDown 4 实验 4.1 数据集 4.2 实验环境 4.3 与其他模型的比较 4.4 消融研究 ▲不同网络结构的分析 ▲不同模块的分析 ▲不同降采样…...

MySQL SQL 优化专题
MySQL SQL 优化专题 1. 插入数据优化 -- 普通插入(不推荐) INSERT INTO tb_user VALUES(1,tom); INSERT INTO tb_user VALUES(2,cat); INSERT INTO tb_user VALUES(3,jerry);-- 优化方案1:批量插入(推荐,不建议超过1…...

Mac上安装Pycharm
说明:仅供参考,是自己的安装流程,以免以后自己想不起来来看看的笔记 官网地址:https://www.jetbrains.com/pycharm/ 1、点击Download,跳转到下一个页面 2、MAC,选择Mac OS,在Pycharm Professio…...
flask框架基础入门学习教程
文章目录 前言1. 环境搭建1.1Python安装1.2选择Python开发环境1.3 创建虚拟环境(可选但推荐)1.4 安装 Flask 2. 第一个 Flask 应用3. 路由和视图函数3.1 基本路由3.2 动态路由3.3 路由参数类型 4. 请求和响应4.1 获取请求数据4.2 响应对象 5. 模板渲染6.…...

Qt显示一个hello world
一、显示思路 思路一:通过图形化方式,界面上创建出一个控件显示。 思路二:通过编写C代码在界面上创建控件显示。 二、思路一实现 点开 Froms 的 widget.ui,拖拽 label 控件,显示 hello world 即可。 qmake 基于 .…...
MySQL快速搭建主从复制
一、基于位点的主从复制部署流程 确定主库Binlog是否开启修改主从server_id主库导出数据从库导入数据确定主库备份时的位点在从库配置主库信息查看复制状态并测试数据是否同步 二、准备阶段(主库和从库配置都需要修改) 1、确定主库Binlog是否开启 2、修改主从se…...
力扣-动态规划-674 最长连续递增序列
思路 dp数组定义:以i为结尾的最长连续递增序列递推公式: if(nums[i-1] < nums[i]) dp[i] dp[i-1] 1; dp数组初始化:都为1遍历顺序:顺序时间复杂度: 代码 class Solution { public:int findLengthOfLCIS(v…...

在笔记本电脑上用DeepSeek搭建个人知识库
最近DeepSeek爆火,试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下,在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库,实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…...

leetcode 94. 二叉树的中序遍历
题目如下 做了那么多道难题,给自己放放松。通过代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int …...
YOLOv12:目标检测新时代的破局者
目录 一、YOLOv12 横空出世二、YOLOv12 的性能飞跃2.1 多规模优势2.2 对比超越 三、技术创新与原理剖析3.1 区域注意力模块(Area Attention,A2)3.2 残差高效层聚合网络(R-ELAN)3.3 架构优化细节 四、实验验证与结果分析…...

基于OFDR的层压陆相页岩油储层中非对称裂缝群传播的分布式光纤监测
关键词:OFDR、分布式光纤传感、裂缝传播 一. 概述 四川盆地凉高山组优质页岩油储层存在复杂的垂直重叠岩性,大陆页岩油储层存在发育层理,薄层和天然裂缝,对水平井多级压裂技术的裂缝网络形态控制和监测构成挑战。本研究提出了一…...

Linux虚拟机网络配置-桥接网络配置
简介 本文档旨在指导用户如何在虚拟环境中配置Linux系统的桥接网络,以实现虚拟机与物理主机以及外部网络的直接通信。桥接网络允许虚拟机如同一台独立的物理机一样直接连接到物理网络,从而可以被分配一个独立的IP地址,并能够与网络中的其他设…...

软开经验总结
文章目录 软开经验总结一、二次开发时候操作步骤二、logger的作用!!!三、git使用 软开经验总结 一、二次开发时候操作步骤 改 SDK 和 language level改 maven 配置改数据库 注意Mysql 版本 差别是否过大!!࿰…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...