
一、引言 STM32 是一款基于 ARM Cortex-M 内核的 32 位微控制器,是由ST公司使用ARM公司设计的内核在通过完善外围电路,整个封装起来就做成了STM32,现在STM32广泛应用于嵌入式领域。本文将详细介绍 STM32 的特点、内核、系列、外设、命名规则、系统结构、引脚定义、启动配置和最小系统电路等内容。 二、STM32 简介
STM32 常应用于嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制和娱乐产品等。
目前 STM32 主要有四个系列:高性能系列、主流系列、超低功耗系列和无线系列。
![]() 补充:图片中的CoreMark是内核跑分,一般数字越大,性能越高五、ARM 内核介绍
![]() 六、STM32F103C8T6的相关介绍
STM32F103C8T6 的片上资源丰富,又称为外设(peripheral),可通过程序配置外设来完成各种功能。以下是对其片上资源的详细介绍: 位于 Cortex-M3 内核里面的外设 NVC(嵌套向量中断控制器):用于管理中断,比如配置中断优先级等。 CS(系统定时器):主要给操作系统提供定时服务,STM32 可以加入操作系统如 FreeRTOS、UCOS等,若使用这些操作系统,需要此定时器提供定时来进行任务切换功能。在本课程不使用操作系统的情况下,也可以用这个定时器完成类似 delay 函数的功能。 位于 Cortex-M3 内核以外的外设 RCC(复位和时钟控制):可以对系统的时钟进行配置,并且使能各模块的时钟。在 STM32 中,其他外设在上电的情况下默认是没有时钟的,不给时钟的情况下操作外设是无效的,外设也不会工作,这样的目的是降低功耗。所以在操作外设之前,必须要用 RCC 来完成时钟的使能。 GPIO(通用 I/O 口):可以用 GPIO 来点灯、读取按键等,这是单片机最基本的功能之一。 AFIO(复用 I/O 口):可以完成复用功能端口的重定义,还有中断端口的配置。 EXTI(外部中断):配置好外部中断后,当引脚有电平变化时,可以触发中断,让 CPU 来处理任务。 TIM(定时器):这是整个 STM32 最常用、功能最多的外设。TIM 分为高级定时器、通用定时器、基本定时器三种类型。其中高级定时器最为复杂,常用的是通用定时器。这个定时器不仅可以完成定时中断的任务,还可以完成测频率、生成 PWM 波形、配置成专用的编码器接口等功能。PWM 波形是电机驱动、舵机驱动最基本的要求。 ADC(模数转换器):STM32 内置了 12 位的 ADC 转换器,可以直接读取 IO 口的模拟电压值,无需外部连接 ADC 芯片,使用非常方便。 DMA(直接内存访问):可以帮助 CPU 完成搬运大量数据这样的繁杂任务。 USART(同步或异步串口):平时用的 USART 是异步串口的意思,这里的 USART 既支持异步串口,也支持同步串口,实际还是用异步串口比较多。 I2C 和 SPI(通信协议):STM32 也内置了它们的控制器,可以用硬件来输出时序波形,使用起来更高效。当然用通用 IO 口来模拟时序波形也是没有问题的。 CAN:一般由于汽车领域的通信。 USB:利用 STM32 的 USB 外设,可以做一个模拟鼠标、模拟 U 盘等设备。 RTC(实时时钟):在 STM32 内部完成年月日时分秒的计时功能,而且可以接外部备用电池,即使掉电也能正常运行。 CRC(校验):是一种数据的校验方式,用于判断数据的正确性,有了这个外设的支持,进行 CRC 校验就会更加方便一些。 PWR(电源控制):可以让芯片进入睡眠模式等状态,来达到省电的目的。 BKP(备份寄存器):这是一段存储器,当系统掉电时,仍可有备用电池保持数据,根据需要可以完成一些特殊功能。 IWDG(独立看门狗)\ WWDG(窗口看门狗):当单片机因为电池干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定。 DAC(数模转换器):可以在 IO 口直接输出模拟电压,是 ADC 模数转换的逆过程。 SDIO(SD 卡接口):可以用来读取 SD 卡。 FSMC(可变静态存储控制器):可以用于扩展内存或者配置成其他总线协议,用于某些硬件的操作。 USB OTG(USB 主机接口):用 OTG 功能,可以让 STM32 作为 USB 主机,去读取其他 USB 设备。 需要注意的是,这是 STM32F1 整个系列的所有外设,并不是所有型号都拥有全部外设,比如 STM32F103C8T6 就没有后面四个外设(SDIO、FSMC、USB OTG、DAC)。
![]() 八、STM32 F103 C8T6 的命名规则和系统结构
![]() 九、STM32F103C8T6的系统结构1.整体结构划分 可以将 STM32 的系统结构分为四个部分: 左上角:Cortex-M3 内核。内核引出三条总线,分别是 ICode 的指令总线、DCode 的数据总线和 System 系统总线。 ICode 总线主要用于加载程序指令,连接到 Flash 闪存,Flash 中存储着编写的程序。 DCode 总线用于加载数据,如常量和调试参数等。 左下角:DMA(直接内存访问)部分。DMA 可以看作是内核 CPU 的小秘书,主要负责一些简单且反复的数据搬运工作。DMA 通过 DMA 总线连接到总线矩阵上,它可以拥有和 CPU 一样的总线控制权,用于访问外设。当需要 DMA 搬运数据时,外设会通过请求线发送 DMA 请求,然后 DMA 获得总线控制权,访问并转运数据,整个过程不需要 CPU 的参与,节省了 CPU 的时间。 右下角:主要介绍外设种类和分布。 中间部分:包括连接内核与外设的各种总线和桥接。 2.总线系统 AHB(先进高性能总线):用于挂载主要的外设,一般是最基本的或者性能比较高的外设,比如复位和时钟控制等最基本的电路,以及 SD 卡控制器(SDIO)也挂载在 AHB 上。两个桥接:连接到 APB2 和 APB1 两个外设总线上。由于 APB2 和 APB1 的总线协议、总线速度以及数据传送格式存在差异,所以需要这两个桥接来完成数据的转换和缓存。 APB2(先进外设总线 2):性能比 APB1 高一些,一般和 AHB 同频率,都是 72 兆赫兹。连接的都是一些外设中稍微重要的部分,比如 GPIO 端口,还有一些外设的 1 号选手,如 USART、SPI、TIM(高级定时器 TIM8 和其他通用定时器等)、ADC、EXTI、AFIO 等也接在 APB2 上面。 APB1(先进外设总线 1):一般是 36 兆赫兹。连接的是一些相对次要一点的外设,如 DAC、PWR、BKP 等。 ![]() 十、STM32 F103 C8T6 的引脚定义和启动配置
![]() 十一、STM32 最小系统电路 一般来说,单片机只有一个芯片是没有办法工作的,需要为它连接最基本的电路,这些最基本的电路就叫做最小系统电路。STM32 最小系统电路包括供电部分、晶振部分、复位电路和启动配置部分、下载端口。 1.供电部分:芯片四周有多个供电引脚,采用分区供电。主电源和模拟部分电源连接供电引脚,VSS 接地,VDD 接 3.3 伏,之间可连接滤波电容保证供电稳定。VBAT 可接备用电池,为 RTC 和备份寄存器服务,若不需要此功能可悬空或接 3.3 伏。晶振部分:主时钟晶振一般为 8 兆赫兹,经过内部锁相环倍频得到 72 兆赫兹主频。晶振引脚通过网络标号连接到 STM32 的特定引脚,并接两个 20pF 的电容作为起振电容,另一端接地。若需要 RTC 功能,还需接一个 32.768 千赫兹的晶振。 2.复位电路:由 10k 电阻和 0.1 微法电容组成,为单片机提供复位信号。上电瞬间电容短路,NIST 引脚产生低电平,电容充满电后相当于断路,NIST 被上拉为高电平,完成上电复位。电容左边并联按键可实现手动复位。 启动配置:使用跳线帽或拨码开关配置 BOOT 引脚的高低电平,选择启动模式。 下载端口:使用 ST-Link 下载程序时,需引出 SWDIO 和 SWCLK 引脚,以及 3.3 伏和接地引脚。 ![]() 十二、总结 本文详细介绍了 STM32 的基本情况、ARM 内核参数、外设命名规则、系统结构、引脚定义、启动配置和最小系统电路等内容。STM32 功能强大、性能优异、片上资源丰富,是一款经典的嵌入式微控制器。要深入了解 STM32,可查看官方提供的文档资料。 |