1、PCBPCBPrinted Circuit Board印刷电路板是电子元器件的支撑体和电气连接载体。简单说它是一块绝缘板上面有铜箔线路用来连接和固定电阻、电容、芯片等元件让电流按设计路径流动。没有PCB现代电子设备就无法存在。核心四要素基板绝缘层 铜箔导电层 阻焊层保护层 丝印层标记层类型层数特点典型应用单面板1层铜最便宜只有一面有线路遥控器、电源适配器双面板2层铜两面布线通过过孔连通简单家电、Arduino开发板多层板≥4层内部还有电源/地层抗干扰好电脑主板、工业控制HDI板多层盲埋孔高密度互连线宽极细手机主板、高端数码2、PCBAPCBA Printed Circuit Board Assembly印刷电路板组装简单说PCBA 就是在 PCB 裸板上把电阻、电容、芯片等所有电子元件焊接上去之后形成的“成品电路板”。PCBA包含三大部分PCB裸板、电子元件、焊接材料3、电荷电荷分为正电荷和负电荷、同种电荷相互排斥、异种电荷相互吸引物体带电的实质是得失电子4、电阻定义电阻是导体对电流的阻碍作用。电阻越大导体对电流的阻碍作用越强。电阻通常用R表示。单位基本单位欧姆 Ω定义式RU / I;导线的电阻与导线的形状有关导线的长度增加一倍导线的电阻也相应增加一倍相同材料横截面越大的导线电流越大导线长度越长电流越小决定式Rρ L/Aρ:电阻率 L导体的长度 A导体的横截面积主要应用1、限制电流原理电压一定时电阻越大电流越小U I × R。电阻用于将电流控制在合适的范围内防止电流过大损坏电路原件。场景LED必须串联电阻否则电流过大直接烧坏。2、分压原理串联电路中电压按电阻值比例分配。可以通过合理选择电阻值来获取所需电压。场景你要测的电压超过ADC量程比如测12V但ADC只能测3.3V用两个电阻分压降到安全范围。5、电容电容器的基本结构两片金属导体极板中间夹着一层绝缘材料介质。就这么简单。介质可以是空气、陶瓷、塑料薄膜或电解液不同的介质决定了电容的性能和用途。工作原理储存电荷以电场能的形式储存能量并且两端的电压不能突变。那么它是怎么存储的充电时电源把电子从A极板“抽”走A板带正电推到B极板B板带负电。两极板一个带正电、一个带负电中间隔着绝缘体正负电荷互相吸引在极板之间的空间中建立起一个静电场。这个电场就像被“压缩”的弹簧把能量储存在电场中。:主要应用去耦是对整个系统的“垃圾”进行清理目的是让输入的电源变得干净。滤波是对单个芯片的“瞬时需求”进行补给目的是防止这个芯片干扰别的芯片。6、电感电感的结构一根导线绕成线圈可以空心也可以绕在磁芯上。当电流流过线圈时根据安培定律电流周围会产生磁场磁力线穿过线圈内部。电流越大产生的磁场越强磁力线越多。这个磁场本身就携带能量——能量就“存”在磁场中。主要作用DCDC开关电源、电磁干扰抑制7、电子学中的三个基本原件电阻将电能转化为我们的热能。它是一个消耗我们能量的一个器件。电容把电能以“电场能”的形式储存在两极板之间的绝缘介质中。电感把电能以“磁场能”的形式储存在线圈周围的磁场中。8、STM32启动过程分析1、通电----芯片工作起来当给STM32通上电芯片内部的硬件电路立刻开始工作不需要任何软件指令。2、CPU会自动去“固定地点”取两份重要信息Cortex-M4内核在设计时就被规定好了上电后必须去地址0x00000000和0x00000004取数据。地址0x00000000存放的是栈顶指针MSP的初始值给局部变量和函数调用临时规划的地址0x00000004存放的是复位向量的地址启动函数CPU把PC赋值为复位向量地址比如0x08000100后立刻跳转到那里开始执行指令。从0x00取MSP设置为栈指针。3、STM32特有的“选择门”机制BOOT引脚这时候STM32芯片会看一眼BOOT0和BOOT1这两个引脚的电平高电压还是低电压然后决定从哪个门走进芯片内部。BOOT0BOOT1结果通俗点0随便从Flash启动正常模式——执行程序10从系统存储器启动维修模式——当你芯片里没有程序或者串口下载失败需要重新通过串口烧录程序时。11从SRAM启动调试模式——把程序放在内存里运行当你频繁修改程序不想反复擦写Flash只想把程序临时加载到内存里快速跑一下看看效果。4、启动文件干活 → 准备C语言环境CPU跳到复位处理函数后启动文件一个.s汇编文件开始执行复位函数Reset_Handler要做的事情1、设置堆栈SP指针给局部变量和函数调用准备好临时存储空间为什么需要堆栈因为单片机的RAM有限只有调用时才占空间不调用就不占极大节省内存。2、调用SystemInit()配置时钟比如把主频从默认的8MHz提高到72MHz或168MHz通俗点来说它就是把单片机从“出厂默认的慢速省电模式”切换到“你需要的全速工作模式”。专业点来说单片机出厂时为了确保任何电压、任何环境下都能稳定启动内部硬件强制使用内部RC振荡器约8MHz作为时钟源。SystemInit()要做的就是把时钟源从内部的8MHz RC振荡器切换到外部的高精度晶振然后通过内部的PLL锁相环进行倍频最终把系统主频提升到72MHzSTM32F1或168MHzSTM32F4甚至更高。3、搬运 .data段把Flash里有初始值的全局变量复制到SRM里为什么不能再Flash里面直接用呢因为Flash是只读的运行时无法写入需要特殊操作你必须 放在可读可写的SRAM里。4、清零 .bss段把未初始化的全局变量所在的内存区域清零.bss段在Flash里根本不存在初始值模板。5、开始执行我们的代码了。9、GPIO什么是GPIOGPIO代表通用输入、输出是一种用于与外部设备通信的接口通俗点讲就是单片机身上伸出来的“金属腿”可以通过写代码随意决定这条腿是“对外供电”还是“读取外面的信号”。GPIO控制器用来干什么的就是控制stm32的引脚向外发出高电平和低电平同时GPIO控制器也可以感知引脚上面电平的变化它当前引脚上输入进来的是高电平还是低电平。输入模式就是靠我们的这个TTL施密特触发器然后将这个信号转化为数字信号然后通过读取这个输入数据寄存器就可以知道我们引脚外围的这个状态。例子读取按键Key当用户按下板子上的按键时电路导通引脚踩到 0V。单片机读取到低电平就知道“按键了该去执行对应程序”。输出模式主要由P-MOS管和N-MOS管组成结构单元当P-MOS管和N-MOS管同时工作可组成推挽输出模式当只有P-MOS管工作时可组成开漏输出模式例子控制 LED 灯引脚输出 3.3V灯亮输出 0V灯灭嵌入式点灯大师的起点。控制蜂鸣器输出高电平蜂鸣器开始疯狂报警。推挽输出在该结构体单元输入一个低电平时P-MOS管导通N-MOS管截止对外输出高电平在该结构体单元输入一个高电平时P-MOS管截止N-MOS管导通对外输出低电平开漏输出开漏输出模式时不论输入是高电平还是低电平P-MOS管总处于关闭状态。当输入高电平时N-MOS管导通输出即为低电平当输入低电平时N-MOS管截止这个时候引脚状态既不是高电平也不是低电平我们称 之为高阻态。如果想让引脚输出高电平那么引脚必须外接一个上拉电阻由上拉电阻提供高电平。