
GPIO(通用输入输出口)输出模式信号从芯片内部流向外部通用推挽、通用开漏、复用推挽、复用开漏推挽输出引脚电平高电平接VDD低电平接VSS开漏输出引脚电平高电平为高阻态低电平接VSS通用CPU直接控制IO引脚复用通过其他片上外设控制IO引脚输入模式信号从芯片外部流向内部上拉、下拉、浮空、模拟上拉读取引脚电平内部连接上拉电阻悬空时默认高电平下拉读取引脚电平内部连接下拉电阻悬空时默认低电平浮空(读取引脚电平悬空时电平不确定)模拟(GPIO无效引脚直接接入内部ADC)GPIO最大输出速度选取满足要求的最小值向I/O交替写0和1且输出不失真的最快速度NVIC(中断总控制器可决定中断优先级)EXTI(外部中断和事件控制器)可以监测指定GPIO口的电平信号当其指定的GPIO口产生电平变化时EXTI将立即向NVIC发出中断申请经过NVIC裁决后即可中断CPU主程序使CPU执行EXTI对应的中断程序支持的触发方式上升沿/下降沿/双边沿/软件触发支持的GPIO口所有GPIO口但相同的Pin不能同时触发中断通道数16个GPIO_Pin外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒触发响应方式中断响应/事件响应(触发别的外设操作)AFIO(复用IO口)用于引脚复用功能的选择和重定义在STM32中AFIO主要完成两个任务复用功能引脚重映射、中断引脚选择TIM(定时器)TIM定时中断定时器可以对输入的时钟进行计数并在计数值达到设定值时触发中断还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能基本结构计数器计数频率CK_CNT CK_PSC / (PSC 1)计数器溢出频率CK_CNT_OV CK_PSC / (PSC 1) / (ARR 1)TIM输出比较输出比较可以通过比较CNT与CCR寄存器值的关系来对输出电平进行置1、置0或翻转的操作用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出的功能PWM(脉冲宽度调制)在具有惯性的系统中可以通过对一系列脉冲的宽度进行调制来等效地获得所需要的模拟参量常应用于电机控速等领域PWM参数频率 1 / TS占空比 TON / TS 分辨率 占空比变化步距PWM频率Freq CK_PSC / (PSC 1) / (ARR 1)PWM占空比Duty CCR / (ARR 1)PWM分辨率Reso 1 / (ARR 1)TIM输入捕获输入捕获模式下当通道输入引脚出现指定电平跳变时当前CNT的值将被锁存到CCR中可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数每个高级定时器和通用定时器都拥有4个输入捕获通道可配置为PWMI模式同时测量频率和占空比可配合主从触发模式实现硬件全自动测量主从触发模式编码器接口编码器接口可接收增量正交编码器的信号根据编码器旋转产生的正交信号脉冲自动控制CNT自增或自减从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2正交编码器工作模式ADC模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量建立模拟电路到数字电路的桥梁转换时间对采样点进行转换所消耗的时间12.5cycle1us采样时间开关闭合的时间长度ADC输入时钟不能超过14MHz输入电压范围0~3.3V转换结果范围0~409518个输入通道可测量16个外部和2个内部信号源规则组和注入组两个转换单元ADC基本结构输入通道转换序列数据对齐转换模式校准ADC有一个内置自校准模式校准可大幅减小因内部电容器组的变化而造成的准精度误差校准期间在每个电容器上都会计算出一个误差修正码(数字值)这个码用于消除在随后的转换中每个电容器上产生的误差建议在每次上电后执行一次校准启动校准前 ADC必须处于关电状态超过至少两个ADC时钟周期编程接口DMA直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输无须CPU干预节省了CPU的资源12个独立可配置的通道DMA17个通道DMA25个通道每个通道都支持软件触发和特定的硬件触发存储器映像基本结构数据转运通信接口通信的目的将一个设备的数据传送到另一个设备扩展硬件系统通信协议制定通信的规则通信双方按照协议规则进行数据收发简单双向串口通信有两根通信线发送端TX和接收端RXTX与RX要交叉连接当只需单向的数据传输时可以只接一根通信线当电平标准不一致时需要加电平转换芯片电平标准电平标准是数据1和数据0的表达方式是传输线缆中人为规定的电压与数据的对应关系TTL电平3.3V或5V表示10V表示0RS232电平-3~-15V表示13~15V表示0RS485电平两线压差2~6V表示1-2~-6V表示0差分信号串口参数波特率串口通信的速率起始位标志一个数据帧的开始固定为低电平数据位数据帧的有效载荷1为高电平0为低电平低位先行校验位用于数据验证根据数据位计算得来停止位用于数据帧间隔固定为高电平USART通用同步/异步收发器STM32内部集成的硬件外设可根据数据寄存器的一个字节数据自动生成数据帧时序从TX引脚发送出去也可自动接收RX引脚的数据帧时序拼接为一个字节数据存放在数据寄存器里自带波特率发生器最高达4.5Mbits/s 可配置数据位长度8/9、停止位长度0.5/1/1.5/2 可选校验位无校验/奇校验/偶校验支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN基本结构波特率波特率 外设时钟 / (16 * DIV)DIV是分频系数数据模式HEX模式/十六进制模式/二进制模式以原始数据的形式显示文本模式/字符模式以原始数据编码后的形式显示I2CI2C由Philips公司开发的一种通用数据总线两根通信线SCLSerial Clock、SDASerial Data同步半双工带数据应答支持总线挂载多设备一主多从、多主多从硬件电路所有I2C设备的SCL连在一起SDA连在一起设备的SCL和SDA均要配置成开漏输出模式SCL和SDA各添加一个上拉电阻阻值一般为4.7KΩ左右基本单元时序指定地址写对于指定设备在指定地址下写入指定数据当前地址读对于指定设备在当前地址指针指示的地址下读取从机数据指定地址读对于指定设备在指定地址下读取从机数据MPU60506轴姿态传感器可以测量芯片自身X、Y、Z轴的加速度、角速度参数通过数据融合可进一步得到姿态角常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计测量X、Y、Z轴的加速度3轴陀螺仪传感器测量X、Y、Z轴的角速度I2C外设STM32内部集成了硬件I2C收发电路可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能减轻CPU的负担I2C基本结构SPISPI是由Motorola公司开发的一种通用数据总线四根通信线SCKSerial Clock、MOSIMaster Output Slave Input、MISOMaster Input Slave Output、SSSlave Select同步全双工支持总线挂载多设备一主多从硬件电路所有SPI设备的SCK、MOSI、MISO分别连在一起 主机另外引出多条SS控制线分别接到各从机的SS引脚输出引脚配置为推挽输出输入引脚配置为浮空或上拉输入移位示意图时序基本单元起始条件SS从高电平切换到低电平终止条件SS从低电平切换到高电平CPOL:决定时钟的起点为高/低电平CPHA:决定数据是在时钟的第一/二个边沿采样CAN控制器局域网总线CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线广泛应用于汽车、嵌入式、工业控制等领域CAN总线特征 两根通信线CAN_H、CAN_L线路少 差分信号通信抗干扰能力强高速CANISO11898125k~1Mbps, 40m 低速CANISO1151910k~125kbps, 1km 异步无需时钟线通信速率由设备各自约定半双工可挂载多设备多设备同时发送数据时通过仲裁判断先后顺序11位/29位报文ID用于区分消息功能同时决定优先级可配置1~8字节的有效载荷 可实现广播式和请求式两种传输方式应答、CRC校验、位填充、位同步、错误处理等特性硬件电路电平标准帧格式STM32内置bxCAN外设CAN控制器支持CAN2.0A和2.0B可以自动发送CAN报文和按照过滤器自动接收指定CAN报文程序只需处理报文数据而无需关注总线的电平细节波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接收FIFO14个过滤器组互联型28个时间触发通信、自动离线恢复、自动唤醒、禁止自动重传、接收FIFO溢出处理方式可配置、发送优先级可配置、双CAN模式CAN网拓扑结构基本结构USBSTM32芯片内置的USB外设模块使其能直接通过USB接口与电脑、手机等设备通信无需外接协议芯片三种主要工作模式设备模式作为从机如U盘、鼠标最常用主机模式作为主机可连接U盘等OTG模式可在主机和设备间切换需支持OTG的型号两种速度等级全速12 Mbps绝大部分STM32支持只需简单外围电路。高速480 Mbps高性能型号支持通常需外接PHY芯片。四大核心应用虚拟串口最常用的调试/通信方式大容量存储实现U盘功能HID设备制作自定义键盘、鼠标、控制器DFU升级通过USB更新单片机固件时序发送指令 向SS指定的设备发送指令0x06指定地址写 向SS指定的设备发送写指令0x02随后在指定地址Address[23:0]下写入指定数据Data指定地址读 向SS指定的设备发送读指令0x03随后在指定地址Address[23:0]下读取从机数据DataW25Q64W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器常应用于数据存储、字库存储、固件程序存储等场景存储介质Nor Flash闪存时钟频率80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)存储容量24位地址W25Q404Mbit / 512KByteW25Q808Mbit / 1MByteW25Q1616Mbit / 2MByteW25Q3232Mbit / 4MByteW25Q6464Mbit / 8MByteW25Q128128Mbit / 16MByteW25Q256256Mbit / 32MByteFlash操作事项SPI外设STM32内部集成了硬件SPI收发电路可以由硬件自动执行时钟生成、数据收发等功能减轻CPU的负担可配置8位/16位数据帧、高位先行/低位先行时钟频率 fPCLK / (2, 4, 8, 16, 32, 64, 128, 256)支持多主机模型、主或从操作可精简为半双工/单工通信 支持DMA基本结构RTC实时时钟RTC是一个独立的定时器可为系统提供时钟和日历的功能RTC和时钟配置系统处于后备区域系统复位时数据不清零VDD2.0~3.6V断电后可借助VBAT1.8~3.6V供电继续走时32位的可编程计数器可对应Unix时间戳的秒计数器20位的可编程预分频器可适配不同频率的输入时钟可选择三种RTC时钟源HSE时钟除以128通常为8MHz/128LSE振荡器时钟通常为32.768KHzLSI振荡器时钟40KHzUnix时间戳Unix 时间戳Unix Timestamp定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数不考虑闰秒时间戳存储在一个秒计数器中秒计数器为32位/64位的整型变量世界上所有时区的秒计数器相同不同时区通过添加偏移来得到当地时间GMTGreenwich Mean Time格林尼治标准时间是一种以地球自转为基础的时间计量系统UTCUniversal Time Coordinated协调世界时是一种以原子钟为基础的时间计量系统BKP备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~3.6V)电源被切断他们仍然由VBAT(1.8~3.6V)维持供电。当系统在待机模式下被唤醒或系统复位或电源复位时他们也不会被复位TAMPER引脚产生的侵入事件将所有备份寄存器内容清除RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲存储RTC时钟校准寄存器用户数据存储容量20字节中容量和小容量/ 84字节大容量和互联型RTC基本结构PWR电源控制PWR负责管理STM32内部的电源供电部分可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器PVD可以监控VDD电源电压当VDD下降到PVD阀值以下或上升到PVD阀值之上时PVD会触发中断用于执行紧急关闭任务低功耗模式包括睡眠模式Sleep、停机模式Stop和待机模式Standby可在系统空闲时降低STM32的功耗延长设备使用时间WDG(看门狗)看门狗可以监控程序的运行状态当程序因为设计漏洞、硬件故障、电磁干扰等原因出现卡死或跑飞现象时看门狗能及时复位程序避免程序陷入长时间的罢工状态保证系统的可靠性和安全性看门狗本质上是一个定时器当指定时间范围内程序没有执行喂狗重置计数器操作时看门狗硬件电路就自动产生复位信号STM32内置两个看门狗独立看门狗IWDG独立工作对时间精度要求较低窗口看门狗WWDG要求看门狗在精确计时窗口起作用FLASHSTM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分通过闪存存储器接口外设可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途利用程序存储器的剩余空间来保存掉电不丢失的用户数据通过在程序中编程IAP实现程序的自我更新 在线编程In-Circuit Programming – ICP用于更新程序存储器的全部内容它通过JTAG、SWD协议或系统加载程序Bootloader下载程序在程序中编程In-Application Programming – IAP可以使用微控制器支持的任一种通信接口下载程序基本结构总结1. GPIO • 基础物理接口支持输入/输出/复用模式直接控制LED、按键等外围设备2. NVIC • 动态分配中断优先级如抢占式/子优先级确保紧急事件如EXTI触发优先响应3. EXTI • 实时监测GPIO边沿信号上升沿/下降沿触发中断唤醒CPU适用于低功耗场景下的快速事件响应4. TIM • 基础模式定时中断、计时高级应用PWM驱动电机、编码器接口捕获转速触发ADC/DMA定时采样闭环系统5. ADC • 模拟世界与数字世界的“翻译官”12位/16位高精度采样配合DMA实现传感器数据温度/光照的无CPU干预采集6. DMA • 数据搬运的“隐形助手”在内存与外设如ADC、USART间建立高速通道显著降低CPU负载提升系统吞吐量7. USART • 异步串行通信“老将”支持波特率自适应常用于调试日志输出、GPS模块通信硬件流控制CTS/RTS增强稳定性8. I2C • 双线制“节能通信专家”通过地址寻址连接多设备如OLED屏、EEPROM时钟同步机制确保多主机协调9. SPI • 全双工“高速数据通道”4线制SCK/MISO/MOSI/CS实现Flash存储、TFT屏驱动的毫秒级数据传输10. CAN • 工业级“抗干扰通信网”差分信号CAN_H/CAN_L支持多节点通信汽车ECU、工业PLC自带错误检测与重发机制11. USB • 即插即用“通用接口”支持主机/设备模式如USB转串口、HID设备OTG功能实现双角色切换12. RTC • 永不掉电的“电子钟”独立供电域下记录年月日时分秒闹钟功能触发唤醒事件如定时启动设备13. WDG • 系统“看门护卫” 独立看门狗IWDG硬件级防死锁需定期“喂狗” 。窗口看门狗WWDG精确监控程序运行时间窗口14. Flash • 非易失性“记忆仓库”存储固件代码只读与用户数据可擦写支持扇区保护与硬件加密