目录
一、什么是STM32
STM32是基于ST公司基于ARM Cortex-M内核开发的32位微控制器STM32,STM32是一款32位的单片机,相对于51的8位单片机,具有更出色的性能。STM32是一个微型控制器,自带了各种从常用的通信接口,如USART,I2C,SPI等,可以连接各种传感器,控制很多的设备,在实际当中,STM32可以做许多的产品,如智能手环,平衡车,3D打印机,微型4轴控制器等。
二、STM32的分类
STM32可以按照内核的不同进行分类,常见的内核有Cortex-M0,M3,M4,M7这就几种。其中F1系列搭载了Cortex-M3内核,代表基础性型。F4搭载了Cortex-M4内核,代表高性能型,F0搭载了Cortex-M0内核,代表低功耗型。
三、STM32的命名解释
按STM32F103C8T6为例:
STM32 | 表示32位的MCU |
F103 | 代表基础型 |
C | 表示引脚数目为48 |
8 | 表示64KB的Flash |
T | 表示封装为FQFP |
6 | 表示温度等级为A:-40~85摄氏度 |
四、STM32F103C8T6的引脚解读
STM32F103C8T6中GPIO,I2C,USART,ADC都属于特殊引脚。除了这些引脚,还有电源引脚,其中STM32输入输出的供电电压是3.3V,其中5V引脚可以容忍5V的电压,把5V电压转换成3.3V的电压给STM32供电。
五、STM32的系统架构
在框图的左边的CPU,DMA1,DMA2都是属于内核。其中右边的FLASH中是我们存放我们编写的程序,CPU通过ICode总线来访问。SRAM中存放的是程序的变量和堆栈,CPU通过Dcode总线来访问。FSMC主要是用来扩展静态的内存。SYstem总线主要用来访问外设的寄存器,读写寄存器都是通过这根系统总线来完成的。DMA总线主要用来传输数据的。AHB上有复位和时钟控制,其中RCC时钟的频率是72Mhz,由8Mhz通过锁相环9倍倍频得来。所有AHB也72Mhz。SDIO是主要为SD卡提供接口。在AHB上还延伸出APB2和APB2总线,其中APB2具有72Mhz的高速时钟,存放的都是比较重要的外设资源,如GPIO,USART1,TIM1等等。APB1具有36Mhz的低速时钟。
六、存储器映射
存储器映射就是给存储器分配地址,Flash,FSMC,RAM,片上外设这些功能部件都共同排列在一个4GB的地址空间中,其中又分为8个块,每个块都有512MB的大小,但实际中并没有应用这么多的内存。
序号 | 用途 | 地址范围 |
Block0 | Code | 0x00000000~0x1FFFFFFFF |
Block1 | SRAM | 0x20000000~0x3FFFFFFFF |
Block2 | 片上外设 | 0x40000000~0x5FFFFFFFF |
Block3 | FSMC的Bank1~Bank2 | 0x60000000~0x7FFFFFFFF |
Block4 | FSMC的Bank3~Bank4 | 0x80000000~0x9FFFFFFFF |
Block5 | FSMC寄存器 | 0xA0000000~0xBFFFFFFFF |
Block6 | 没有使用 | 0xC0000000~0xDFFFFFFFF |
Block7 | Cortex-M3内部外设 | 0xE0000000~0xFFFFFFFFF |
七、寄存器映射
存储器映射后就是给特定的内存单元分配好地址,在把特定的内存单元取个别名的过程就是寄存器映射。通过对寄存器映射后就可以实现寄存器开发。在把寄存器开发封装成库函数,就是库函数开发的方式了。
八、启动配置
通过跳线帽对BOOT引脚的状态改变,可以实现不同的启动模式。
第一种模式是正常工作模式。STM32上电启动后默认将主闪存存储器作为启动区域。
第二种模式将系统存储器作为启动区域后,可以通过串口下载程序。
第三种模式将内置SRAM作为启动区域后,这种模式可以应用于调试。