STM32F1系列简单介绍及入门学习

本文详细介绍了STM32F103C8T6这一32位微控制器,包括其命名规则、应用场景、基本参数、寄存器映射和GPIO端口初始化。通过实例展示了如何仿真点亮LED灯,是STM32初学者的实用教程。
摘要由CSDN通过智能技术生成

一、初识STM32

1.什么是STM32

STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示32 位,合起来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今的 32 位控制器当中,STM32 可以说是最璀璨的新星。

STM32F103 采用的是 Cortex-M3 内核,内核即 CPU,由 ARM 公司设计。ARM 公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如 ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如 GPIO、USART(串口)、I2C、SPI 等都叫做片上外设。具体下图。
在这里插入图片描述

2.STM32的应用场景

STM32系列基于专门要求高性能,低成本,低功耗的嵌入式应用专门设计的ARM Cortex-M0,Cortex-M1,Cortex-M3,Cortex-M4,Cortex-M7等。其中Cortex-M0主打的是低功耗和混合信号的处理,M3主要用来替代ARM7,重点侧重能耗和性能的均衡,而M7则重点放在高性能控制运算领域。

STM32 属于一个微控制器,自带了各种常用通信接口,比如 USART、I2C、SPI 等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有 STM32 的身影,比如智能手环,微型四轴飞行器,平衡车、移动 POST 机,智能电饭锅,3D 打印机等等。

在这里插入图片描述

3.STM32产品命名规则

在这里插入图片描述
STM32F103C8T6为例:
(1) STM32:表示32位MCU;
(2) F103:表示基础型;
(3) C:表示芯片上含48个引脚;
(4) 8:表示闪存容量为64K字节;
(5) T:表示QFP封装;
(6) 6:表示工作温度范围在-40°C到85°C;

二、STM32F103C8T6介绍

1.简要说明

STM32F103C8T6是一款基于ARM Cortex-M内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。

其中, Cortex-M3摒弃了冯· 诺依曼结构(普林斯顿结构),采用了将指令存储和数据存储分开的 的哈佛结构(Harvard Architecture ),这样一来Cortex-M3同时拥有了独立的32-bit指令总线和32-bit数据总线,数据访问将不再占用指令总线,同时读取指令和数据后提升了MCU运行速度。冯诺依曼和哈弗结构的宏观对比如下图所示:
在这里插入图片描述

2.基本参数

参数名 参数详情
类别 集成电路(IC)
家族 嵌入式-微控制器
总线宽度 32-位
速度 72MHz
外围设备 DMA,电机控制PWM,PWM,温度传感器
输入/输出数 37
程序存储器容量 64KB (64K x 8)
程序存储器类型 FLASH
RAM容量 20K x 8
电压-电源(Vcc/Vdd) 2 V ~ 3.6 V
模数转换器 A/D 10x12b
振荡器型 内部
工作温度 -40°C ~ 85°C
封装/外壳 48-LQFP

3.最小系统板

【产品介绍】
该系统板是基于STM32F103C8T6为主芯片的ARM核心板,有如下特点:

1、板载了基于MCU的最基本电路,如晶振电路、USB电源管理电路和USB接口等。

2、核心板引出了所有的I/O口资源。

3、带有SWD仿真调试下载接口,该接口最少需要3根线就可以完成调试下载任务,相比传统的JTAG调试有不少的好处

4、外形尺寸只有传统的DIP40封装(例如AT89S52)的大小,目前还未在淘宝上发现比我们更小的同规格的核心板。

5、使用了目前智能手机所使用的Mirco USB接口,使用方便,可做USB通讯和供电。

6、针对STM32 RTC不起振的问题,我们采用了官方建议的低负载RTC晶振方案,并使用了爱普生品牌的晶振,而没有使用廉价的圆柱晶振。

7、配有优质的1*40/2.54mm间距的单排排针,确保导电接触优良,方便用户将核心板放置到标准的的万用板或者面包板上。排针默认不焊接,用户可以根据自己的需要选择焊接方向。
在这里插入图片描述

三、STM32F103系列芯片寄存器映射

1.什么是寄存器

寄存器是中央处理器内的组成部分,是有限容量的高速存贮部件,可用来暂存指令、数据、地址等。

简单来说,寄存器用来存放东西的地方,类似于行李寄存,只不过,寄存器存放的不是行李,而是指令、数据、地址等。不同的·数据会存放在不同的寄存器中,通过地址区分不同的寄存器

2.什么是存储器映射

存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射,如下图所示。如果给存储器再分配一个地址就叫存储器重映射。
寄存器映射(摘自参考手册-存储器映射章节)

在存储器 Block2 这块区域,设计的是片上外设,它们以四个字节为一个单元,共 32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。

我们可以找到每个单元的起始地址,然后通过 C 语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射

3.确定寄存器地址的方法

片上外设区分为三条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB1挂载低速外设,APB2 和 AHB 挂载高速外设。

相应总线的最低地址我们称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址。其中 APB1 总线的地址最低,片上外设从这里开始,也叫外设基地址。

(1)确定GPIOx总线基地址

总线名称 总线基地址 相对外设基地址的偏移
APB1 0x4000 0000 0x0
APB2 0x4001 0000 0x0001 0000
APB 0x4001 8000 0x0001 8000

上述表格的“相对外设基地址偏移”即该总线地址与“片上外设”基地址 0x4000 0000的差值。

(2)找到GPIOx外设基地址

总线上挂载着各种外设,这些外设也有自己的地址范围,特定外设的首个地址称为“XX 外设基地址”,也叫 XX 外设的边界地址。

在此,以 GPIO 外设来讲解外设的基地址,GPIO 属于高速的外设 ,挂载到APB2 总线上:

外设名称 外设基地址 相对APB2总线地址的偏移
GPIOA 0x0000 0800 0x0
GPIOB 0x4001 0C00 0x0000 C000
GPIOC 0x4001 0000 0x0001 0000
GPIOD 0x4001 1400 0x0001 4000
GPIOE 0x4001 1800 0x0001 8000
GPIOF 0x4001 C000 0x0001 C000
G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值