STM32简介
- STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器
- STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等
eg.寻迹小车:STM32读取光电传感器或者摄像头的数据,驱动电机前进或者转弯
eg.无人机:STM32读取陀螺仪加速度计的姿态数据,再根据算法控制电机速度,从而保证飞机飞行稳定
eg.机器人:STM32驱动舵机,控制机器人的关节,让机器人运动
eg.无线通信:给STM32连接上一些2.4G无线模块或者蓝牙、WIFI模块
eg.物联网:借助无线模块来通信(蓝牙、WIFI、ZigBee、……),再通过STM32驱动继电器控制220V电路的通断
eg.工业控制:PLC主控
eg.娱乐电子产品:爱心流水灯
- STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器
- STM32家族系列图
ARM
• ARM既指ARM公司,也指ARM处理器内核
• ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构
• ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片
模块图 ARM内核的型号
CortexA(高端应用型领域):Application ARM内核中性能最高、发展最快的系列,主要用于手机领域
Cortex-R(嵌入式领域):RealTime 主要面向实时性很高的场景 eg.硬盘控制器
Cortex-M(嵌入式领域):Microcontroller 主要应用再单片机领域
STM32F103C8T6
• 系列:主流系列STM32F1
• 内核:ARM Cortex-M3
• 主频:72MHz
• 运行内存RAM:20K(SRAM)
• 程序存储器ROM:64K(Flash)
• 供电电压:2.0~3.6V(标准3.3V) 【如果供电电压是5,需要加一个稳压芯片,把电压降到3.3V,再给STM32供电】
• 封装:LQFP48
STM32F1系列的片上资源/外设
命名规则
系统结构
Flash:存储编写的程序
ICode指令总线:加载程序指令
DCode数据总线:加载数据 eg.常量和调试数据
System系统总线:
SRAM:存储程序运行时的变量数据
AHB系统总线;用于挂载主要的外设
APB先进外设总线:用于连接一般的外设
DMA:做数据搬运等简单需要反复干的事情,节省CPU的时间
引脚定义
颜色标记
红色——电源相关引脚
蓝色——最小系统相关引脚
绿色——IO口、功能口相关引脚
推荐优先使用加粗的!!
引脚名称
- VBAT:备用电池供电引脚,其可接一个3V的电池,当系统电源断电时,备用电池可以给内部的RTC时钟和备份寄存器提供电源。
- 2号引脚:IO口或者侵入检测或RTC
IO口可根据程序输出或读取高低电平,是最基本也是最常用功能
侵入检测可以用来做安全保障的功能
RTC可用来输出RTC校准时钟、RTC闹钟脉冲或秒脉冲
- 3、4号引脚是IO口或者接32.768KHz的RTC晶振。
- 5、6号引脚接系统主晶振,一般是8MHz。芯片内有锁相环电路,可以对8MHz的频率进行倍频,最终产生72MHz频率,作为系统的主时钟。
- 7号NRST为系统复位引脚,N表示它是低电平复位。
- 8、9号引脚是内部模拟部分的电源,如ADC、RC振荡器等。VSS为负极,接GND,VDD是正极,接3.3V。
- 10~19号引脚都为IO口,PA0兼具Wake-up功能,用于唤醒处于待机模式的STM32.
- 20号引脚为IO口或者BOOT1引脚,BOOT引脚是用来配置启动模式的。
- 23、24号的VSS_1(负极)和VDD_1(正极)是系统的主电源口。后面的VSS_2和VDD_2、VSS_3和VDD_3都是系统的主电源口,STM32内部采用分区供电的模式,把VSS都接GND,VDD都接3.3V即可。
- 25~33都为IO口。
- 34号+37~40号,都是IO口或者调试端口;默认的主功能是调试端口,调试端口就是用来调试程序和下载程序的,次STM32支持SWD和JTAG两种调试方式。SWD需要两根线,分别是SWDIO和SWCLK;JTAG需要5根线,分别JTMS、JTCK、JTDI、JTDO、NJTRST。此处介绍用STLINK下载调试程序,在SWD调试方式时,PA15、PB3、PB4可以切换回普通的IO使用,但是要在程序中进行配置,不配置的话默认是不会为IO口的。
- 41-43及45~46都是IO口,44号BOOT0做启动配置。
类型
S:电源
I:输入
O:输出
I/O:输入输出
I/O电平:所能容忍的电压
___:3.3V
FT:5V
主功能:上电后默认的功能,一般和引脚名称相同。若不同,引脚的实际功能是主功能而不是引脚名称的功能。
默认复用功能:I/O口上同时连接的外设功能引脚,在配置IO时可以选择是通用IO口还是复用功能。
重定义功能:如果有2个功能同时同在了一个I/O口上,可以把其中一个功能映射到其他端口上(前提:重定义功能的表中有对应的端口)
启动配置
启动配置的作用就是指定程序开始运行的位置,一般情况下,程序都是在Flash程序存储器开始执行;当然在某些情况下,需要程序在别的地方开始执行,用来完成特殊的功能。
在所述STM32系列中可以通过配置BOOT0和BOOT1引脚,来选择三种启动模式。
• BOOT0接0(即接地),此时BOOT1无论接什么,启动模式都为主闪存存储器模式。
• BOOT1接地,BOOT接1(即接3.3V电源),系统模式被选为启动区域(此模式用来做串口下载用)。BOOTLoader程序,其作用就是接收串口的数据,然后刷新到主闪存中,就可以使用串口下载程序。
• BOOT0接1,BOOT1接1,配置内置SRAM启动,主要用来进行程序调试。
最后一句话的意思为,BOOT引脚的值是在上电复位后的一瞬间是有效的,之后就随意了。
最小系统电路
右侧为STM32及供电部分
滤波电容可保证供电电压的稳定,遇到供电都会习惯的加上几个滤波电容
OSC32为32.768KHz晶振的意思,32768(2的15次方),内部RTC电路经过2^15分屏,就可生成1s的时间信号