嵌软面试每日一阅----单片机知识简述(以stm32为列)

一、GPIO的八种工作模式

模式大类 具体模式 内部结构特点 电平表现 典型应用场景
输入模式 浮空输入 无上拉/下拉电阻,施密特触发器开启 完全由外部电路决定,悬空时电平不确定(易受干扰) 外部已有上下拉电阻的信号检测、中断输入
上拉输入 内部接3.3V上拉电阻 默认高电平,外部接地时读低电平 按键检测(按键接地)、默认高电平信号输入
下拉输入 内部接GND下拉电阻 默认低电平,外部接高电平时读高电平 按键检测(按键接VCC)、默认低电平信号输入
模拟输入 关闭施密特触发器,直连ADC/DAC 不输出数字电平,直接传输模拟信号 ADC电压采集(如温度传感器)、DAC输出、低功耗模式
输出模式 推挽输出 P-MOS和N-MOS互补导通 可主动输出高/低电平,驱动能力强(最大25mA) LED驱动、继电器控制、普通数字信号输出
开漏输出 仅N-MOS导通,需外接上拉电阻 只能主动输出低电平,高电平靠外部上拉实现 I2C总线(软件模拟)、电平转换(3.3V转5V)
复用模式 复用推挽输出 由片上外设(如USART/SPI)控制,推挽结构 外设自动输出高低电平,驱动能力强 串口TX、SPI MOSI/SCK、PWM输出
复用开漏输出 由片上外设(如I2C)控制,开漏结构 需外接上拉电阻,支持多主机"线与" 硬件I2C SDA/SCL、CAN总线

模式选择核心逻辑

  1. 判断信号流向
  • 外部→STM32(接收信号):优先选输入模式。若需默认电平稳定,选上拉/下拉输入;若采集模拟信号,选模拟输入。
  • STM32→外部(输出信号):优先选输出模式。驱动能力强选推挽输出;需电平转换或多设备共享总线选开漏输出。
  • 外设功能复用:根据外设类型选复用模式。高速通信(如SPI)选复用推挽;I2C等开漏总线选复用开漏。

2.关键注意事项

  • 按键检测首选上拉输入:避免悬空干扰,按下时电平明确翻转。
  • I2C必须用开漏模式:硬件I2C需外接上拉电阻,软件模拟I2C可用普通开漏输出。
  • ADC采集必选模拟输入:关闭数字电路以减少噪声干扰,确保采样精度。
  • 推挽输出勿直接并联:多个推挽输出引脚连接会导致短路,开漏输出可实现"线与"。

二. 什么是看门狗计时器?

概念:旨在检测和恢复系统故障。它是一种硬件计时器,要求系统在规定的时间内定期对其进行复位(喂狗)。如系统没有即时复位计时器将会溢出,并触发一种预定的响应,通常是系统复位或重启。

作用:

  • 防止系统卡死:如果系统由于软件错误、死锁或其他原因导致无法继续正常工作,看门狗定时器可以自动复位系统从而防止系统长时间卡死。
  • 提高系统可靠性:在任务关键的嵌入式应用中,如工业控制、汽车电子、医疗设备等,看门狗定时器是确保系统持续可靠运行的重要手段。
  • 恢复程序运行:当系统由于不可预见的故障导致异常行为时,看门狗定时器可以让系统迅速恢复到已知的初始状态,减少故障的影响。

示例:

cpp 复制代码
//主程序
int main(void) {
    wDT_Init();//初始化看门狗定时器
    while (1) {// 模拟程序正常运行
    for (volatile int i = 0; i < 1000000; i++) {
        //程序的其他部分
        }
     //喂狗操作,防止看门狗定时器复位系统
    IWDG->KR= 0xAAAA;//喂狗,重置看门狗定时器计数
    }
}

📌 一句话总结

看门狗计时器是嵌入式系统的**"自动重启保镖"** ,它通过监控程序是否按时"喂狗",在系统死机或跑飞时强制复位,确保设备能自主恢复运行而无需人工干预。

三、什么是DMA?

✨ 核心价值:解放CPU,提升效率

DMA最大的价值在于将CPU从繁琐、重复的数据搬运任务中解放出来,使其能专注于更核心的计算和逻辑处理。

  • 提升CPU效率:CPU不再需要为每个字节的传输而忙碌,可以并行处理其他任务,系统整体性能得到质的飞跃。
  • 提高数据传输速度:DMA是专为数据搬运设计的硬件,其传输效率远高于由软件(CPU)控制的逐字节传输。
  • 降低系统功耗:CPU在等待数据传输时会处于空闲状态,而DMA的高效工作可以缩短CPU的等待时间,从而降低整体功耗。

📊 应用场景对比

场景 无DMA (CPU搬运) 有DMA (DMA搬运)
串口接收数据 CPU需不断查询或等待中断,再逐个字节存入数组,占用大量时间。 DMA自动将串口收到的每个字节存入数组,CPU可处理其他逻辑,仅在接收完成后处理整包数据。
ADC数据采集 每次转换完成都触发中断,CPU需读取数据并存入内存,高频采样时CPU不堪重负。 DMA自动将ADC转换结果连续存入内存数组,实现高效、不间断的数据流采集。
内存数据拷贝 CPU通过循环指令,一个字一个字地复制,效率低下。 DMA可以极快的速度完成大块内存数据的复制,CPU几乎零开销。

📌 一句话总结

DMA是嵌入式系统中的"数据搬运工",它通过硬件自动完成数据在内存与外设间的传输,将CPU从繁琐的搬运任务中解放出来,是实现系统高效、实时运行的关键技术。

四、什么是PWM?

核心价值:用数字世界控制模拟世界

单片机的IO口只能输出高电平(如5V)和低电平(0V)两种数字信号。现实中很多设备(如电机、LED灯)需要连续变化的模拟电压来控制。PWM完美地解决了这个问题,它就像一座桥梁,让数字系统能够精确、高效地控制模拟设备。

PWM的工作原理基于面积等效原理 (也叫冲量等效原理)。简单来说,就是通过控制一个周期内"开"的时间比例,来等效出一个变化的平均电压

它的工作由两个核心参数决定:

  1. 频率 (Frequency)
    • 指开关每秒钟"开-关"循环的次数。频率越高,切换越快。
  2. 占空比 (Duty Cycle)
    • 指在一个循环周期内,"开"的时间所占的百分比。
    • 占空比 = (高电平时间 / 总周期时间) × 100%

举个例子:

假设你用一个5V的电源,通过一个高速开关给一个灯泡供电。

  • 50% 占空比 :开关一半时间开,一半时间关。灯泡得到的平均电压就是 2.5V,亮度为中等。
  • 80% 占空比 :开关大部分时间都开着。灯泡得到的平均电压就是 4V,亮度更亮。
  • 20% 占空比 :开关大部分时间都关着。灯泡得到的平均电压就是 1V,亮度很暗。

📊 典型应用场景

应用领域 工作原理 典型例子
电机调速 通过改变占空比来调节施加在电机两端的平均电压,从而控制转速。占空比越大,转速越快。 无人机螺旋桨、电风扇、电动玩具车
LED调光 利用人眼的视觉暂留效应,当PWM频率足够高时(>80Hz),人眼感知到的是平均亮度。 LED呼吸灯、台灯亮度调节、屏幕背光
电源管理 在开关电源中,通过PWM控制功率管的开关,实现高效的电压转换。 手机充电器、DC-DC降压模块
音频生成 通过快速变化的PWM占空比来模拟声波波形,驱动蜂鸣器或扬声器。 电子琴、报警器

📌一句话总结

PWM是一种通过高速开关调节占空比 ,用数字信号来等效模拟电压的技术,它让单片机能够高效、精确地控制电机速度、灯光亮度等模拟设备。

注:文章随手记录,如有错误,评论区交流

相关推荐
v先v关v住v获v取2 小时前
高空作业平台调平机构结构设计7张cad+设计说明书
科技·单片机·51单片机
cch89182 小时前
PHP与C语言:从网页到内核的编程对决
c语言·开发语言·php
鹏程十八少2 小时前
10. Android Shadow是如何实现像tinker热修复动态修复so(源码解析)
android·前端·面试
恒森宇电子有限公司2 小时前
芯晞微CSM2221 低压差线性LDO稳压器芯片 多种封装形式
单片机
三万棵雪松2 小时前
【Linux 物联网网关主控系统-感知层部分(一)】
linux·单片机·物联网·嵌入式linux
少司府3 小时前
C++基础入门:类和对象(上)
c语言·开发语言·c++·类和对象·访问限定符
篮子里的玫瑰3 小时前
智能天气时钟项目(一):ESP32 AT指令集详解与STM32驱动开发
驱动开发·stm32·嵌入式硬件
老师用之于民3 小时前
【DAY35】ARM开发:UART 异步串行通信原理、通信标准及模块配置详解
c语言·汇编·arm开发·vscode
DA022111 小时前
系统移植-STM32MP1_TF-A移植
stm32·单片机·系统移植