黑马程序员2025嵌入式单片机入门视频理论总结

《黑马程序员嵌入式单片机全套视频教程,涵盖ARM32、STC8、ESP32多平台单片机,从C语言、单片机概念、原理、实操到智能手表、WIFI图传小车等项目一套通关》blibli理论总结(不涉及代码)

一、电流

电流的产生和原子核及其相关电子的排列紧密相关。电子的流动产生电流,电流定义是正电荷的流动方向,即正极到负极。

一个电路包括电源和负载,可以把电流定义为通过导线的电荷量。

库仑定律:同性相斥,异性相吸。

原子序数越大,最外层电子离原子核越远,导致金属离子对最外层电子束缚力越弱。自由电子阻力越小,导电性越好。

在价电子轨道上有5、6或7个电子的原子是非导体。
物质由原子构成,原子由原子核(+)和绕核旋转的电子(-)构成,电源在电路提供电位差,称为电压(电势能)。电压使自由电子定向移动,形成电流。

二、单片机分类与功能

51、251 比较老,架构几十年前东西,51很多公司用,ARM内核应用广泛,比如手机芯片。Xtensa(产品有esp32)、RISC-V内核新颖。

芯片上有许多引脚,引脚通过导线和外部设备相连。

模拟电路的网址: 

https://lushprojects.com/circuitjs/circuitjs.html

寄存器是一种超高速的小型存储器件,速度远快于内存,但容量很小,通常8位(存8个二进制).

四、输入输出

1 引脚

2 推挽输出与开漏输出


推挽输出(Push-Pull Output,PP):对外输出高低电平,由芯片对外输出电流,用于低功耗外接设备较多。LED、震动马达、蜂鸣器等,就可用推挽输出模式,由芯片驱动电流通过。

若外部不提供供电,推: 外部接地,内部供电,走出电流;若外部提供供电,挽:外部电流流入,电流走向GND。

开漏输出(Push-Pull Output,PP):对外输出高低电平,由外部电路输出电流,用于外部通信或高电压大电流场景较多。

3 浮空输入、上拉输入、下拉输入、模拟输入

斯密特触发器: 

 

施密特触发器,是一种数字信号处理器。输入电压低于阈值,提供低电平信号。输入电压高于阈值,提供高电平信号。基于施密特触发器,将外部电压值,转换为0、1 。有施密特,只能得到0或者1,没有,外部多少电压,直接连到芯片内部就是多少电压。

外部电压值输入,经过施密特触发器转换后得到0、1的数字信号,写入寄存器中,程序可以读取寄存器,得知外部电平状态,但不接外部设备,接0还是接1是不确定的。

外部引脚连接了外部电路:外部高电压,被施密特处理后存入高电平1,外部低电压,被施密特处理后存入低电平0。如果外部引脚和外部电路未连接:内部VCC提供高电压,施密特处理后存入高电平1。上拉输入可以提供:默认高电平状态。

外部引脚连接了外部电路:外部高电压,被施密特处理后存入高电平1;外部低电压,被施密特处理后存入低电平0。如果外部引脚和外部电路未连接:内部GND提供O电压,施密特处理后存入低电平0。下拉输入可以提供:默认低电平状态。

外部设备的电压直接传递到芯片内部:模拟信号处理。

浮空、上拉、下拉,均使用施密特触发器得到数字信号,非0即1。
模拟输入,得到模拟信号(电压值),用于感知外接状态,如温度、湿度等(基于电压转换得到)。 

在如下示例图中,有红色点点是连线的。行做输出,列做输入,可以判断哪个列被按下。然后瞬间反转,行做输入,列做输出 。

 五、MOS管与三极管

MOS通过电压导通,三极管通过电流导通。有电压才能有电流。控制引脚给出高/低电平,则形成电压差,电流通过。

六、串口

从通讯方式上看,主要分为:串行通信和并行通信。

串行通信,就是串口通信所用方式,数据位依次发送。

Universal Asynchronous Receiver Transmitter 即通用异步收发器是一种通用的串行、异步通信总线。
Universal Synchronous Asynchronous Receiver Transmitter即通用同步异步收发器,是一种串行、同步、异步通信总线。

同步:会使用时钟线。
异步:不使用时钟线。

异步模式下串口通信,本质上是:在特定时间间隔下,拉高、拉低电平值,发送接收0、1数字信号。下图为发送n位。

通讯双方约定好时间间隔,如T。每一次拉高或拉低,持续时间T。第九位校验位,事先协商好是否发送。
 

二进制数据的发送是:从右向左发送,每次发送8个位。

波特率是串口通讯最重要的设置,比如发送11110011,波特率需要双方一致。波特率即为每秒钟传输二进制的位数。
 

串口通讯需要2根线,即:TXD(发送)和RXD(接收)。

串口接收数据的一个最主要的机制就是:中断(Interrupt/INT)。

中断也分为两种类型:内部中断、外部中断。
内部中断是由处理器内部产生的中断请求信号(串口、DMA、定时器、系统时钟等),串口接收的RNBE、IDLE等中断,就是内部中断。
外部中断是由外部设备(如按键、传感器、通信接口等)产生的中断请求信号,需要通过中断控制器进行处理。


同时,系统内可以产生许多中断,不同中断之间是有优先级的,优先级分为:
抢占优先级(Preemptive Priority):抢占CPU执行时间的优先级,全周期不变,数字越小越高。
响应优先级(Responsive Priority):在抢占优先级相同时,基于响应优先级决定优先权。

七、时钟周期

时钟周期:高低电平变换的时间。
.
时钟周期也称:震荡周期、震荡频率。每一次周期的震荡,CPU可以完成一个独立的动作。因为一个时钟周期(震荡信号)会产生电平的变化,电平的变化会让电路产生电压的变化,电压的变化会导致电流的变化,电流的通过与否决定了某些器件是否工作,时钟周期的电平信号是标准的高低变换,也称为:方波。

脉冲宽度调制(PWM):输出特定占空比的电平脉冲信号。
定时器,本质上就是一个计数器,以计数决定时间。 CPU在计数有特定频率,每属一次的时间是固定的,计数=时间。

GD32的定时器类型:

内核定时器是ARMCorteX-M芯片(GD32F407VET6是CorteX-M4)在CMSIS标准中所定义的。
所有ARM芯片,都支持内核定时器(SysTick)。

内核定时器为24位宽度(0~16777215),主要作用是,在0~16777215之间,设定CAR(重装载值)。
·基于设定的CAR实现:计数从O开始,每当计数到CAR,产生一次中断,并归零计数值
计数基于时钟信号(CPU主频),每一个时钟周期计数+1。

CPU在工作中需要稳定的时钟信号,稳定的时钟信号来自于:晶振
晶振,全称晶体振荡器,石英晶体的压电效应制成的谐振器件,它通过机械共振产生具有精确频率的电信号。

开发板(芯片外部)焊接了一个8M的晶振,可产生稳定8MHz的时钟信号:

晶振提供基础稳定频率之后经过PLL锁相环进行倍频(加倍频率)提升至168MHz。

鉴相器:比较2个信号的差异,输出差异部分。
低通滤波器:平滑信号。
压控振荡器:基于电压输出振荡信号,电压越高频率越高。

锁相环:输入和输出频率达到一致。

VCO是电压驱动的元件,用变化非常快的波形驱动它,不太合适。

下图表示下面的线是经过低通滤波器之后:

有些电容也可以充当 低通滤波器的作用:

鉴相器:L1==L2,无相位差(波形无变化)
鉴相器:L1>L2,输出相位差,低电平下限逐步增高,直到和高电平一致,平均输出电压值在增高
鉴相器:L1<L2,输出相位差,高电平上限逐步降低,直到和低电平一致,平均输出电压值在降低
低通滤波器:将鉴相器的输出相位差电压变化波形变得平滑

VCO:电压高输出高频率方波,电压低输出低频率方波 。

此时L2是100Hz,出来的是200Hz。 

总线是不同硬件中传输数据、控制信号的通信线路,可以在总线上挂载所需外围设备。
AHB总线(高速总线),引出168MHz的总线时钟频率。
APB1总线(低速总线),分频后得到42MHz时钟频率,供给其上的外设(如定时器5和6等)。

CAR为22,23为惯性值不用管(虽然中断但自动+1了) 。

CK_TIMER:时钟信号。
CEN:时钟使能,置为1(高电平)开 始计数。
UPG:准备重载的信号。
Reload Pulse:重载信号。
UPE:更新信号(中断)。
CNT_REG:计数值。

CAR范围,基于定时器位数决定(16位),即范围:0~65535。

问:基于此,如果需要基本定时器完成每隔1秒的稳定中断:CAR(重装载值)设定为:42,000,000。但是,定时器计数器仅16位(范围0~65535),宽度不足,怎么办?

答:将主频做1000分频(降低1000倍),即1秒:42000个周期。则计数从0计数到42000-1,即可确定1秒时间。

计数模式的分类:

如果计数器16位:0~65535,那分频器16位:0~65535(可供分频的范围)。 

### IntelliJ IDEA 中通义灵码 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义灵码 AI 相关的功能。这些功能可以帮助开发者更高效地编写代码并提高生产力。 #### 安装通义灵码插件 为了使用通义灵码的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义灵码" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义灵码服务 成功安装插件之后,还需要配置通义灵码的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义灵码辅助编程 一旦完成上述准备工作,就可以利用通义灵码来进行智能编码支持了。具体操作如下所示: ##### 自动补全代码片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代码含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义灵码解析这段代码的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义灵码能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值