文章目录
一、STM32微控制器概述
STM32系列32位闪存微控制器使用ARM公司的Cortex-M3内核,按内核架构分为不同产品,其中STM32F系列有:STM32F103“增强型”系列;STM32F101“基本型”系列;STM32F105、STM32F107“互联型”系列。
1、控制器主要参数:
2、内部资源情况:
3、STM32总线系统
其中STM32的Cortex-M3内核通过指令总线与Flash存储器连接;数据总线和系统总线和先进高速总线(Advanced High Speed Buses,简称AHB)相连。
4、存储器映射
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进行系统配置。
5、STM32启动模式
各种启动设置,启动后执行第一条指令的位置不同,会造成不同的结果。
6、程序下载调试电路
STM32F10xxx使用Cortex-M3内核,该内核内含硬件调试模块,支持复杂的调试操作。
硬件调试模块允许内核在取值或访问数据时停止,内核停止时,内核的内部状态和系统外部状态都可以查询,完成查询后,内核和外设可被复原,程序继续执行。
STM32F10xxx当连接到调试器并开始调试时,调试器将使用内核的硬件调试模块进行调试操作,支持两种调试接口:
(1) JTAG调试接口;(2) 串行接口(Serial Wire, SW)
7、STM32最小系统
使用最少的硬件就可以使得我们的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上电将引发备份区域复位。
时钟源
最小化系统硬件需求
8、低功耗模式
当处理器不需继续运行时,可以利用多种低功耗模式来节省功耗。
- 睡眠模式:电压调节器工作正常,Cortex-M3处理器停止运行,但外设仍然正常运行,所有的SRAM和寄存器内容将被保留,所有I/O引脚都保持在运行模式时状态,功耗相对于正常模式得到降低。(处理器不工作,CPU不工作,外设正常运行,寄存器内容保留)
- 停止模式:也称为“深度睡眠模式”,电压调节器工作在停止模式,选择性地为某些模块提供1.8V电源,Cortex-M3停止运行,内部外设停止运行,所有的SRAM和寄存器内容被保留。(CPU不工作,内部外设不工作,电压调节器不工作,寄存器内容保留)
- 待机模式:整个1.8V区域断电,Cortex-M3处理器停止运行,内部外设停止运行,SRAM和寄存器内容丢失,备份寄存器内容保留,待机电路维持供电。(只有备份寄存器内容保留,其他全部停止或丢失内容)
从低功耗模式恢复后的处理如下:
- 睡眠模式时,只有处理器停止工作,SRAM、寄存器的值仍保留,程序当前执行状态信息并未丢失,因此从睡眠状态恢复后,回到进入睡眠状态指令的后一条指令开始执行。
- 停止模式时,SRAM、寄存器的值仍然保留,因此从停止状态恢复后,回到进入停止状态指令的后一条指令开始执行。但不同于睡眠模式,进入停止 模式,STM32时钟关断(与睡眠模式不同),因此恢复后,STM32将使用内部高速振荡器作为系统时钟。
- 待机模式时,所有SRAM和寄存器的值丢失,因此从待机模式恢复后,程序重新从复位初始位置开始执行(最惨烈),相当于一次软件复位效果。
二、STM32库函数及程序开发
1、STM32固件库
传统的单片机例如51微控制器,程序开发直接配置微控制器,通过查询寄存器表,看要用到哪些配置位,这些都是很琐碎和机械的工作,相对于简单微控制器例如51等寄存器数量少又很简单,可以通过直接配置寄存器的方式来开发。
但STM32单片机功能强大灵活,例如有关GPIO的配置寄存器就有十几个,如果去查询寄存器手册开发就很不方便。因此ST公司针对STM32提供函数接口,即API(Application Program Interface),开发者可通过调用这些函数接口来配置STM32的寄存器,使得开发人员可以脱离最底层的寄存器操作,有开发快速、易于阅读和维护成本低等优点。
2、搭建开发环境及如何开发
- ARM公司的MDK
- Embedded Workbench公司的IAR开发环境
- ARM gcc编译器,选择合适的编辑器搭建开发平台