STM32系列32位闪存微控制器使用ARM公司的Cortex-M3内核,按内核架构分为不同产品,其中STM32F系列有:STM32F103“增强型”系列;STM32F101“基本型”系列;STM32F105、STM32F107“互联型”系列。
其中STM32的Cortex-M3内核通过指令总线与Flash存储器连接;数据总线和系统总线和先进高速总线(Advanced High Speed Buses,简称AHB)相连。
0x00000000~0x1FFFFFFF
代码区:该区用来存放程序
0x20000000~0x3FFFFFFF
该区用于片内SRAM
0x40000000~0x5FFFFFFF
片上外设区,其中分配给各个外设的地址空间分为三类:APB1总线外设存储地址;
APB2总线外设存储地址;AHB总线外设存储地址
0x60000000~0x9FFFFFFF
静态存储器控制区(FSMC):用于扩展外部存储器
0xA0000000~0xDFFFFFFF
用于片外外设扩展
0xE0000000~0xFFFFFFFF
私有外设区:用于NVIC、MPU及调试组件等使用
代码区起始地址从0x00000000
开始;片上SRAM从0x20000000
开始;用户设备的存储映射从0x40000000
开始,其中设备寄存器地址位于外设位带区;Cortex-M3内核寄存器地址从0xE0000000
处开始。
Flash存储区由三部分组成,首先用户Flash区从0x08000000
开始;其次系统存储区是一个4KB的Flash存储空间,存储出厂启动引导(Bootloader);最后一部分从0x1FFFF800
开始,含有一组可配置字节,允许用户对STM32进行系统配置。
各种启动设置,启动后执行第一条指令的位置不同,会造成不同的结果。
STM32F10xxx使用Cortex-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。
硬件调试模块允许内核在取值或访问数据时停止,内核停止时,内核的内部状态和系统外部状态都可以查询,完成查询后,内核和外设可被复原,程序继续执行。
STM32F10xxx当连接到调试器并开始调试时,调试器将使用内核的硬件调试模块进行调试操作,支持两种调试接口:
(1) JTAG调试接口;(2) 串行接口(Serial Wire, SW)
使用最少的硬件就可以使得我们的STM32系统进行正常的工作。
电源是一个控制器运行的最必要的条件。
STM32F103系列微控制器采用的电源工作范围是2.0~3.6V,常规设计一般选用3.3V电源。
STM32F103支持3种复位形式,即系统复位、电源复位和备份区域复位。
系统复位:
将复位除时钟控制器CSR中的复位标志和备用域寄存器外的所有寄存器
①NRST引脚上出现低电平(如外部按钮复位)。其复位效果与需要的时间、微控制器供电电压、复位阈值等相关。为了使其充分复位,在工作电压3.3V时,复位时间200ms。复位入口地址为0x00000004。
②窗口看门狗计数终止(WWDG复位) ;
③独立看门狗计数终止(IWDG复位);
④软件复位(SW复位),通过设置相应的控制寄存器位来实现;
⑤低功耗管理复位,进入待机模式或停止模式时引起的复位。
电源复位
电源复位能复位除备份域寄存器外的所有寄存器。(比系统复位还强,时钟控制器也可以通过这里复位。)
(1)利用上电瞬时通过电容短路的特点以及常态断路的特点,产生一个脉冲信号,并连接到芯片NRST引脚从而产生RESET。
(2)STM32单片机集成了一个上电复位(POR)和掉电复位(PDR)电路,当供电电压达到2V时,系统就能正常工作。只要Vdd低于特定的阈值,不需要外部复位电路,STM32就能处于复位模式。
备份域复位
当以下事件中之一发生时,产生备份区域复位:
①软件复位后,备份区域复位可由设置备份区域控制寄存器RCC_BDCR中的BDRST位产生。
②在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。
当处理器不需继续运行时,可以利用多种低功耗模式来节省功耗。
从低功耗模式恢复后的处理如下:
传统的单片机例如51微控制器,程序开发直接配置微控制器,通过查询寄存器表,看要用到哪些配置位,这些都是很琐碎和机械的工作,相对于简单微控制器例如51等寄存器数量少又很简单,可以通过直接配置寄存器的方式来开发。
但STM32单片机功能强大灵活,例如有关GPIO的配置寄存器就有十几个,如果去查询寄存器手册开发就很不方便。因此ST公司针对STM32提供函数接口,即API(Application Program Interface),开发者可通过调用这些函数接口来配置STM32的寄存器,使得开发人员可以脱离最底层的寄存器操作,有开发快速、易于阅读和维护成本低等优点。