嵌入式学习前要了解的基础知识
一、电压和电流
在嵌入式开发中,电压和电流是两个基本的电气概念,对于理解和设计电子电路至关重要。它们直接影响到嵌入式系统的性能、功耗、可靠性和安全性。
电压(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 版本 差别是否过大!!࿰…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
