嵌入式系统(四):STM32微控制器及最小系统(1)

一、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):用于扩展外部存储器

0xA00000000xDFFFFFFF
用于片外外设扩展

0xE00000000xFFFFFFFF
私有外设区:用于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编译器,选择合适的编辑器搭建开发平台
    在这里插入图片描述
  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值