STM32概述
1.1 什么是STM32
新的基于ARM内核的32位MCU系列
内核为ARM公司为要求高性能、低成本、低功耗的嵌入式应用专门设计的Cortex-M内核
标准的ARM架构
超前的体系结构
- 高性能
- 低电压
- 低功耗
- 创新的内核以及外设
简单易用/自由/低风险
1.2 Cortex内核
Cortex-M3系列属于ARMv7架构
ARMv7架构定义了三大分工明确的系列:
“A”系列:ARM Cortex-A为应用型处理器,适用于需要复杂软件操作系统平台和复杂应用程序的设备,例如智能手机、移动计算平台、数字电视和机顶盒、打印机和服务器等。ARM Cortex-A系列具有完全的应用兼容性,支持传统的ARM、Thumb指令集和新增的高新能紧凑型Thumb-2指令集。
“R”系列:ARM Cortex-R针对需要运行实时操作系统来进行控制应用的系统,包括汽车电子、网络和影像系统设计的;
“M"系列:ARM Cortex-M系列针对成本和功耗敏感的MCU和终端应用,如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、医疗器械等领域。主要就是微控制器,也就是单片机。
STM32F1属于Cortex-M系列中的Cortex-M3内核,采用ARMV7-M架构。
STM32F4属于Cortex-M4系列,采用ARM7-ME架构。
Cortex-A5/A8采用ARMV7-A架构。
传统的ARM7系列采用的是ARMv4T架构(逐渐被淘汰)。
1.3 Cortex-M3芯片结构
Cortex-M3内核由ARM公司设计,芯片的其他外设功能由芯片制造厂商设计开发,比如ST公司就是根据这个M3内核,设计出不同的STM32芯片
STM32 命名规则
芯片内部资源描述(STM32F103ZET6、STM32F103RCT6)
内核
32位 高性能ARM CortexAM3处理器
时钟:高达72M,实际还可以超频一点点,但不推荐这样使用
单周期乘法和硬件除法
IO口
STM32F103ZET6:144个引脚,112个IO
STM32F103RCT6:64个引脚,51个IO
大部分IO口都耐5V(模拟通道除外)
支持调试:SWD和JTAG,SWD只要2根数据线
存储器容量
STM32F103ZET6:512K FLASH,64K SRAM
STM32F103RCT6:256K FLASH,48K SRAM
PIN to PIN兼容
比如说ZET6和ZDT6是PIN to PIN兼容的,主要是看第一个字母,代表的是芯片的引脚, 都是Z表示都是144个引脚,那么开发的时候就可以选择容量比较大的来开发,到最后发现用不到这么大的容量,就可以使用PIN to PIN兼容的芯片替换;第二个字母是闪存容量的区分,需要注意的是,就算芯片是PIN to PIN兼容的,也有一些其他功能是不同的,使用时要区别开来
时钟,复位和电源管理
2.0~3.6V电源和IO电压,一般使用3.3V供电
上电复位,掉电复位和可编程的电压监控
强大的时钟系统
4~16M的外部高速晶振(开发板上一般使用8M的晶振)
内部8MHZ的高速RC振荡器(当外部晶振不起作用时,切换到内部晶振继续工作)
内部40KHz低速RC振荡器,看门狗时钟
内部锁相环(PLL,倍频),一般系统时钟都是外部或者内部高速时钟经过PLL倍频后得到(比如上面说的开发板使用8M晶振,作为输入经过这里的PPL,倍频到72M,给到系统时钟使用)
外部低速32.768K的晶振,主要做RTC时钟源
低功耗
睡眠,停止和待机三种低功耗模式
可用电池为RTC和备份寄存器供电
AD
3个12位AD(多达21个外部测量通道)
转换范围:0~3.6(电源电压)
内部通道可以用于内部温度测量(用内部温度传感器)
内置参考电压
DA
2个12位DA
DMA(直接存储器访问)
(作用:主要为CPU减负,在高速数据采集时一般会用到DMA)
12个DMA通道(7+5=12;7通道DMA1 ,5通道DMA2)
支持外设:定时器,ADC,DAC,SDIO,I2S,SPL,I2C和USART
定时器,多达11个定时器
4个通用定时器
2个基本定时器
2个高级定时器
1个系统定时器
2个看门狗定时器
通信接口,多达13个通信接口
2个I2C接口
5个串口
3个SPI接口
1个CAN2.0
1个USB FS
1个SDIO