不说废话,直接来说:
首先,STM32的通用设备单元包括了以下个部分,分别是通用输入/输出口(GPIO或者I/O)、外部中断单元、ADC转换模块、通用/高级定时器、实时时钟RTC、备份寄存器、入侵检测引脚。
通用输入/输出口
GPIO(总共有80个),分布在5个端口中,其中每个端口有16个GPIO,分别以A~E来命名这16个GPIO口。最大耐压值为5V。大部分的外部引脚都可以从通用的GPIO切换为用户设备的专用I/O口。STM32还有一个外部中断控制单元,允许将每个端口上的16个GPIO通过映射成为外部中断输入口。
外部中断单元
外部中断单元(共19个外部中断(EXTI)通道),通过内嵌向量中断控制器(NVIC)与中断向量进行映射。其中外部中断中的0~15通道与GPIO引脚连接,通过高低电平来触发中断,剩下的3个通道分别被RTC警报中断、USB唤醒中断和电源检测单元所占据。
STM32的NVIC为0~4号EXTI通道提供单独的中断向量而5~9通道与10~15通道则各自共用一个中断向量。
ADC转换模块
STM32拥有1~3个ADC,根据型号的不同,其含有的ADC模块不同。这些ADC可以独立使用,也可以使用双重模式(提高采样率),其是12位逐次逼近型的模拟数字转换器。共有18个通道,其中16个可以用作测试外部信号,而剩下的两个通道与内部信号源(温度传感器、内部参考电压)相连。
详细介绍可以参考链接https://blog.csdn.net/qq_43743762/article/details/100067558
通用/高级定时器
总共含有4个定时器单元。共8个定时器。定时器1和定时器8为高级定时器,专用于电机控制,剩下的定时器为通用定时器。
RTC、备份寄存器与入侵检测引脚
我们如果要介绍备份寄存器,首先就要先来说说STM32中关于电源的输入。在STM32中,其电源输入有两类,分别是系统主电源和备份电源。备份电源常使用的是外部电池来提供电源,只要供给10个16位(总共160位即20字节)的备份寄存器、RTC时钟单元和独立看门狗使用。
备份寄存器实际上就是所谓的存储空间,可以用来备份保存关键数据。在备份电源的支持下,即使STM32进入待机模式或者主电源关闭的情况下,备份寄存器仍能保持数据不丢失。同样由于备份电源的存在,低功耗模式下RTC时钟和独立看门狗都能够保持正常运行状态,因此它们同样能够唤醒或复位STM32。
在STM32的内部有含有一个32位的实时时钟(RTC)模块。在32.768KHz时钟频率的驱动下,RTC可以产生精确的秒间隔定时。RTC的时钟来源:低速内部振荡器(LSI)、低速外部振荡(LSE)器和高速外部振荡器经过128分频(HSE/128)后所获得的时钟。RTC将会提供3个中断源∶秒中断、溢出中断和警报中断。警报中断会在RTC计数与警报匹配寄存器中的值一致时产生。RTC的内部组成如图所示。
RTC也使用备份电源工作,工作电压供应来自VBAT(内部RTC备用电源引脚)引脚,这就是RTC在STM32进入低功耗模式后仍能保持正常运行的主要原因。RTC的警报中断使用第17号外部中断通道(EXTI17),通过该中断通道,RTC可以产生一个中断事件来将 STM32唤醒(因为外部中断的检测并不需要CPU的介入)。STM32微控制器低功耗的工作模式里,CPU常常处于停止运转状态,则 RTC在 STM32实现定时唤醒的应用中无疑扮演着关键的角色。
备份电源还支援10个16位的备份寄存器作为电源备份SRAM。通过对RCC备份控制寄存器(RCC Backup Control Register,RCC_BCR)进行写操作可以清除备份寄存器的内容。对应这部分SRAM区。STM32有一个外部人侵检测引脚,STM32开始运行之后,该引脚出现的任何电平边沿都会触发入侵事件,随即备份寄存器的内容会被自动清除。用户可以在RCC_BCR寄存器设置人侵检测引脚的初始电平状态。入侵事件可以申请人侵中断服务,用户可以在入侵中断服务程序中采取相应的软件措施来应对入侵事件。