STM32学习笔记(一)——STM32微控制器简介

目录

一、开栏背景

二、STM32发展介绍

1.1 什么是ARM Cortex-M处理器

1.1.1 ARM Cortex-M3 和ARM Cortex-M4

1.2 处理器和微处理器的区别

1.3  ARM及其处理器的发展史

三、STM32特点

四、STM32应用

1.1 ARM Cortex-M处理器的优势

1.1.1 低功耗

1.1.2 性能

1.1.3 能耗效率

1.1.4 代码密度

1.1.5 中断

1.1.6 易于使用

1.1.7 可扩展性

1.1.8 调试特性

1.1.9 OS支持

1.1.10 多种系统特性

1.1.11 软件可移植性和可重用性

1.1.12 选择(设备、工具和OS等)

1.2 ARM Cortex-M处理器应用

五、STM32资源

1.1 ARM网站上资源

1.2 微控制器供应商提供的文档

1.3 工具商资源

六、 结语


一、开栏背景

这学期为了准备比赛,特意学习的STM32,因为STM32除了外设以外,其余都差不多,所以就学习了较为经典且简单的STM32F103(ARM Cortex-M3架构处理器),具体选型就是C8T6的啦。其实我发这篇文章之前就已经通过看书的方法断断续续地学习了一段时间,在自学的过程中,经常会遇到各种问题,其中也有些困惑,我所学过的我都已经解决了,当然,考虑到还有许多初学者和我一样也会有这些困惑,所以我特意开了这个专栏(还是免费的),写出来给大家学习共享。

提前声明,作为在校学生,时间是较为松散的,所以发布时间是不定期的,后面随着STM32的深入学习,会不定期的发布相关学习笔记、学习心得。好了,废话不多说,进入正题吧!!

二、STM32发展介绍

1.1 什么是ARM Cortex-M处理器

1.1.1 ARM Cortex-M3 和ARM Cortex-M4

Cortex-M3 和 Cortex-M4 处理器为 ARM Cortex-M 处理器家族的两个产品,整个Cortex-M处理器家族如图1.1 所示。

图1.1 Cortex-M处理器家族

Cortex-M3 和 Cortex-M4 处理器基于 ARMv7-M 架构,它们都具有高性能,且是为微控制器应用设计的。由于Cortex-M4 处理器具有SIMD、快速MAC 以及饱和运算指令,其可以执行一些数字信号处理程序,之前则需要使用数字信号处理器(DSP)。

Cortex-M0、Cortex-M0+以及Cortex-M1 基于 ARMv6-M,它们的指令集较小。Cortex-M0 和Cortex-M0+的门数非常少,特别适合低成本微控制器产品。Cortex-M0+处理器具有低功耗优化,以及更多的可选特性。

Cortex-Ml 处理器是专门为 FPGA 应用设计的,它所具有的紧密耦合存储器(TCM)特性有助于 FPGA内的存储器的使用,并且根据设计,高级的FPGA可以使用更高的时钟频率。

对于普通数据处理⋯们具有良好的能耗效率。不过,若应用需要复杂的数据处理,则可能需要花费更多的指令和时钟周期。在这种情况下,Cortex-M3或Cortex-M4 处理器则可能会更适合。由于这些处理器支持的指令更多,那么同 ARMv6-M架构相比,执行处理任务可能需要更少的指令。因此,不同的任务需要使用不同的处理器。

需要注意的是,微控制器产品中使用的ARM处理器并非只有 Cortex-M。ARM7 处理器已经取得很大的成功,NXP(之前为 Philips Semiconductor)、Texas Instruments、Atmel、OKI及其他许多供应商都具有基于 ARM 的微控制器,它们使用ARM7TDMI等传统的ARM处理器,同时,还有许多微控制器是基于ARM9处理器的。ARM7 是有史以来应用最广泛的32位处理器,每年的出货量超过20亿,且用于从移动电话到汽车系统等多种电子产品。

1.2 处理器和微处理器的区别

ARM不生产微控制器,ARM设计的处理器及多种部件都是芯片制造商所需要的,ARM会对包括微控制器供应商在内的各家芯片设计公司进行授权。一般可以将这些设计称为“知识产权”(IP),这种商业模型也被称作IP 授权。

在一个典型的微控制器设计中,处理器只会占芯片中的一小块区域。其他部分则为存储器、时钟生成(如 PLL)和分配逻辑、系统总线以及外设等(I/()接口单元、通信接口、定时器、ADC、DAC等硬件单元),如图1.2 所示。

                                                          图1.2 微控制器包含多个不同模块

尽管许多微控制器供应商选择 ARM Cortex-M 处理器作为它们的CPU,存储器系统、存储器映射、外设及操作特性(如时钟频率和电压)可能会各不相同。微控制器生产商可以在他们的产品中添加其他特性,这样市场上的微控制器产品也呈现出多样化的特点。

1.3  ARM及其处理器的发展史

这些年以来,ARM已经设计了多款处理器, Cortex-M3 和Cortex-M4处理器的许多特性都基于一些成功的技术,它们是从之前设计的一些处理器进化而来。为方便理解 ARM处理器和架构版本间的差异,下面看一下ARM的历史。

ARM.也就是 Advanced RISC Machines Ltd。于 1990年成立,是由 Apple Computers、Acorn Computer Group以及 VLSI Technology 共同组建。 1991 年,ARM发布了 ARM6 处理器(用于 Apple Newton.如图 1.4 所示). VLSI 获得了最初的许可。接下来。 TexasInstruments、NEC、Sharp以及 ST Microelectronics 等公司获得了 ARM 处理器的许可,将ARM处理器的应用扩展到了移动电话、计算机硬盘、个人数字助理、家庭娱乐系统以及其他的许多消费产品。

如今ARM的合作伙伴每年对基于ARM处理器的芯片的出货量超过50亿(2011 年为79亿)。与许多半导体公司不同.ARM不直接生产和销售处理器,而是将处理器设计授权给合作伙伴,其中包括许多世界领先的半导体公司。基于 ARM的低成本、高能效的处理器设计,这些合作伙伴设计了他们自己的处理器、微控制器以及片上系统方案。这种商业模型一般被称作 IP 授权。

除了处理器设计,ARM还提供外设和存储器控制器等系统级IP 的授权。为了给使用ARM产品的用户提供更好的支持.ARM开发了开发工具、硬件以及软件产品,以便用户可以开发他们自己的产品,软件开发人员也可以编写基于ARM平台的软件。

Cortex-M3处理器发布之前,ARM处理器已经有了许多种,有些已经用在微控制器中。ARM最成功的处理器之一为ARM7TDMJ处理器,其用在许多微控制器中。与许多传统的32位处理器不同,ARM7TDMI支持两套指令集,一个为32位的ARM指令集,另一个为16位的Thumb指令集。由于处理器可以同时使用这两种指令集,代码密度就得到了极大的提高,因此,也就减小了应用程序代码的体积,同时,关键任务也能以较快的速度执行。这样ARM处理器就可以用在许多可移动设备中了,它们都需要低功耗和小的存储器。因此.ARM处理器为移动电话等移动设备的首选。

从那时起,为了应对不同的应用,ARM继续开发新的处理器。例如,ARM9系列处理器用于高性能微控制器,而 ARM11 系列处理器则用在多种移动电话中。

在ARM11 发布之后,ARM决定将优化的Thumb-2指令集等新的技术应用在微控制器和汽车部件等低成本市场上。而且还确定了另外一点,尽管架构需要从最低端的 MCU 到高性能的应用处理器保持一致,处理器架构还是要最贴近应用,对于成本敏感的市场使用高确定性和低门数的处理器,而高端应用则使用具有多种特性和高性能的处理器。

在过去的几年里. ARM通过开发多样化的CPU.从而扩展了自己的产品线. Cortex这一新的处理器名也是因此而来。Cortex处理器系列包括三类(如图1.3所示):

· A类用于高性能的开放应用平台。

· R类用于需要实时性能的高端嵌入式系统。

· M类用于深度嵌入式微控制器系统。

                                                图1.3 Cortex-M处理器家族的三种处理器产品

下面来看一下细节内容。

(1) Cortex-A: 需要处理高端嵌入式系统(OS,如iOS、Android、Linux以及 Windows)等复杂应用的应用处理器,这些应用需要强大的处理能力、支持存储器管理单元(MMU)等虚拟存储器系统、可选的增强Java支持和安全的程序执行环境。实际产品包括高端智能手机、平板电脑、电视以及服务器等。

(2)Cortex-R:实时、高性能的处理器,面向较高端的实时市场,其应用包括硬盘控制器、移动通信的基带控制器以及汽车系统。在这些应用中,强大的处理能力和高可靠性非常关键,低中断等待和确定性也非常重要。

(3)Cortex-M:面向微控制器和混合信号设计等小型应用,注重低成本、低功耗、能耗效率高和低中断等待等。同时,处理器设计必须方便使用,并且可以在许多实时控制系统中提供确定的行为。

通过上面的这种产品分类,每个市场领域的需求都得到了满足,这样 ARM架构的应用领域比以前就更多了。

Cortex 处理器为 ARMv7架构开发最早的产品, Cortex-M3 处理器就是基于 ARMv7 的,其架构也被称作 ARMv7-M.这也是专门用于微控制器产品的架构。

三、STM32特点

Cortex-M3 和 Cortex-M4 为 ARM 设计的处理器, Cortex-M3 为第一个 Cortex处理器,于2005年由ARM发布(2006年有芯片产品出现), Cortex-M4则于2010年发布(产品也是始于2010年)。

Cortex-M3 和Cortex-M4 处理器使用32位架构,寄存器组中的内部寄存器、数据通路以及总线接口都是32位的, Cortex-M 处理器使用的指令集架构(ISA)为 Thumb ISA,其基于Thumb-2技术并同时支持16位和32 位指令。

Cortex-M3 和Cortex-M4 处理器具有以下特点:

· 三级流水线设计。

· 哈佛总线架构,且具有统一的存储器空间:指令和地址总线使用相同的地址空间。

· 32位寻址,支持4GB存储器空间。

· 基于 ARM AMBA(高级微控制器总线架构)技术的片上接口,支持高吞吐量的流水线总线操作。

· 名为NVIC(嵌套向量中断控制器)的中断控制器,支持最多240个中断请求和8~256个中断优先级(取决于实际的芯片设计)。

· 支持多种OS(操作系统)特性,如节拍定时器以及影子栈指针等。

· 休眠模式和多种低功耗特性。

· 支持可选的MPU(存储器保护单元),提供了可编程存储器或访问权限控制等存储器保护特性。

· 通过位段特性支持两个特定存储器区域中的位数据访问。

· 可以选择使用单个或多个处理器。

Cortex-M3 和Cortex-M4 处理器提供了多种指令:

· 普通数据处理,包括硬件除法指令。

· 存储器访问指令,支持8位、16位、32位和64位数据,以及其他可以传输多个32位数据的指令。

· 位域处理指令。

· 乘累加(MAC)以及饱和指令。

· 用于跳转、条件跳转以及函数调用的指令。

· 用于系统控制、支持OS等的指令。

另外, Cortex-M4 处理器还支持:

· 单指令多数据(SIMD)操作。

· 其他快速 MAC 和乘法指令。

· 饱和运算指令。

· 可选的浮点指令(单精度)。

Cortex-M3 和Cortex-M4 被广泛应用于现代微控制器产品,以及片上系统(SoC)和专用标准产品(ASSP)等特殊的芯片设计。

一般来说,ARM Cortex-M 可以被归为RISC(精简指令集)处理器,有些人可能会认为Cortex-M3 和Cortex-M4 的某些特性同CISC(复杂指令集)相近,如丰富的指令集和多种指令宽度等。不过随着处理器技术的发展,多数 RISC 处理器的指令集同样越来越复杂,因此,RISC 和 CISC 处理器定义间的界限也变得模糊了。

Cortex-M3和Cortex-M4 处理器有很多类似的地方,两个处理器的多数指令都一样,而且NVIC、MPU 等的编程模型也相同。不过,它们的内部设计存在一些不同,这样就使得Cortex-M4 处理器在DSP应用方面具有更高性能,并且支持浮点运算。因此,有些在两个处理器上都适用的指令可能在Cortex-M4 上的执行周期更短。

四、STM32应用

1.1 ARM Cortex-M处理器的优势

与其他架构相比.ARM Cortex-M处理器具有多种技术和非技术方面的优势。

1.1.1 低功耗

与其他 32位微控制器设计相比,Cortex-M处理器相对较小。Cortex-M处理器也进行了低功耗的优化,目前,许多Cortex-M 微控制器的功耗都低于 200μA/MHz,有些还低于100μA/MHz。另外,Cortex-M处理器还支持休眠模式特性,可以同许多先进的超低功耗设计技术配合使用。综上所述,Cortex-M可以用于各种超低功耗微控制器产品中。

1.1.2 性能

Cortex-M3 和 Cortex-M4 处理器的性能可以达到3 CoreMark/MHz、1.25DMIPS/MHz(基于Dhrystone 2.1 平台),这样Cortex-M3 和 Cortex-M4 就可以处理许多复杂的应用。或者也可以使用更低的时钟频率以降低功耗。

1.1.3 能耗效率

结合低功耗和高性能的特点,Cortex-M3 和Cortex-M4 处理器具有非常优秀的能耗效率。这就意味着,在有限的能量下,仍然可以进行大量的处理工作,或者让任务更快完成,以便让系统可以在休眠模式下待更长时间,这样,就能够提高可移动产品的电池寿命。

1.1.4 代码密度

Thumb ISA 提供了良好的代码密度,这就意味着要完成相同的任务,所需的程序代码更少。因此,可以通过使用具有较小 Flash存储器的微控制器以降低成本和功耗,而且芯片生产商也可以生产具有较小封装的微控制器芯片。

1.1.5 中断

Cortex-M3 和 Cortex-M4 处理器具有可配置的中断控制器设计,支持多达240个向量中断和多个中断优先等级(从8到256个等级)。中断嵌套由硬件自动处理,具有零等待状态存储器的系统的中断等待仅为12个周期。Cortex-M处理器的中断处理能力也使得其非常适合实时控制应用。

1.1.6 易于使用

Cortex-M处理器非常易于使用,事实上,由于 Cortex-M处理器具有简单、线性的存储器映射,它们比许多8位处理器还容易使用。架构上没有8位微控制器所具有的许多限制(例如,存储器分组、有限的栈等级以及不可重入代码等)。几乎所有的代码都可以用C实现,其中包括中断处理。

1.1.7 可扩展性

Cortex-M处理器家族可以很容易地从低成本、简单的、低于 l 美元的微控制器扩展至运行在200MHz的高端微控制器,可以发现有些Cortex-M微控制器具有多个处理器。尽管如此,由于处理器架构间的一致性,只需使用一种工具链就可以很容易地重用软件。

1.1.8 调试特性

Cortex-M处理器具有许多调试特性,它们有助于分析设计问题。除了标准的调试特性,如多数微控制器都具有的暂停和单步调试等,还可以生成捕获程序流、数据变动以及概况信息等的跟踪数据。对于多处理器设计,每个 Cortex-M处理器的调试系统可以连在一起,并共享调试连接。

1.1.9 OS支持

Cortex-M处理器在设计之初就考虑了()S应用,其多个特性确保了OS的实现和OS的高效运行。当前Cortex-M处理器可用的嵌入式OS超过了30种。

1.1.10 多种系统特性

Cortex-M3 和 Cortex-M4 处理器支持多种系统特性,如可位寻址存储器区域(位段特性)和 MPU(存储器保护单元)等。

1.1.11 软件可移植性和可重用性

由于架构为C 友好的,儿乎所有代码都可以用标准的ANSI C 进行编程。CMSIS(Cortex微控制器软件接口标准)是ARM提出的,它通过提供标准头文件以及标准Cortex-M处理器功能的 API.使得基于Cortex-M处理器的编程更加简单。这样也就提高了软件的可重用性及应用程序代码的可移植性。

1.1.12 选择(设备、工具和OS等)

使用Cortex-M微控制器的优势之一在于其选择众多,除了数以千计的微控制器设备以外,还可以选择多种软件开发/调试工具、嵌入式()S以及中间件等。

1.2 ARM Cortex-M处理器应用

由于 ARM Cortex-M3 和Cortex-M4 处理器具有许多强大的特性,它们非常适合多种应用:

(1)微控制器。Cortex-M处理器家族非常适合微控制器产品。其中包括具有小的存储器容量的微控制器及具有高运行速度的高性能微控制器。这些微控制器可用于消费类产品,从玩具到电子产品,甚至信息科技(IT)用的特殊产品,以及工业和医疗系统。

(2) 汽车。 Cortex-M3 和Cortex-M4 处理器的另外一个应用为汽车工业,由于这些处理器可以提供高性能、非常高的能耗效率以及低中断等待,它们非常适合实时控制系统。另外,由于处理器设计得非常灵活(例如,支持最多240个中断源,可选的MPU),它们也可用于汽车工业中高度集成的ASSP(专用标准产品)。MPU特性还提供了健壮的存储器保护,这也是这些应用中所需要的。

(3)数据通信。由于处理器的低功耗和高效率,并且 Thumb-2 中还有位域操作的指令,因此Cortex-M3 和Cortex-M4 处理器适合于多种通信应用,如 Bluetooth 和ZigBee。

(4)工业控制。在工业控制应用中,简单、响应快以及可靠性为最重要的因素,Cortex-M3和 Cortex-M4 处理器中的中断支持特性,包括确定的中断行为、自动嵌套处理、MPU 以及增强的错误处理等,都使得它们成为这一领域的强力候选。

(5)消费产品。许多消费产品中都有一个(或多个)高性能微控制器,Cortex-M3 和Cortex-M4 处理器尽管非常小,却非常高效和节能,而且其性能足以处理I.CD面板上显示的复杂的GUI和各种通信协议。

(6)片上系统(SoC)。在有些高端处理器设计中.Cortex-M处理器可用于多种子系统中,如音频处理、电源控制系统、FSM(有限状态机)置换及I/()控制任务等。

(7)混合信号设计。在 IC设计领域,数字和模拟设计是混在一起的。当微控制器中的模拟部件(如 ADC 和DAC)越来越多时,传感器、PMIC(电源管理IC)和 MEMS(微机电系统)等模拟IC也需要提供一些其他功能,Cortex-M处理器的低功耗以及低门数特点使得其可以被集成在混合信号IC系统中。

目前市场上已经有许多基于 Cortex-M3 和 Cortex-M4 处理器的产品,其中包括价格低于0.5美元的低端微控制器,这样ARM微控制器的价格就同许多8位微控制器相当,甚至更低。

五、STM32资源

1.1 ARM网站上资源

尽管ARM不制造或出售Cortex-M3 或Cortex-M4 微控制器,ARM 网站上的很多文档还是很有用的。ARM网站的文档部分(名为 Inforcenter.http://infocenter.arm.com/)包含多种说明、应用笔记以及知识文章等。

1.2 微控制器供应商提供的文档

微控制器供应商提供的文档和资源对嵌入式软件开发很关键,一般可以找到:

·微控制器芯片的参考手册,其中包括外设的编程模型、存储器映射以及软件开发所需的其他信息。

·所用微控制器的数据手册,其中包括封装信息、引脚排列、运行条件(如温度)、电压和电流特性以及设计PCB时所需的其他信息。

·应用笔记,其中包括微控制器外设及特性的使用示例或者特定的任务处理方面的信息(如 Flash 编程)。

可能还可以在开发套件中找到其他资源或者其他的固件库。

1.3 工具商资源

软件开发工具供应商也会提供一些有用的信息,除了工具链手册(如编译器和链接器),还可以找到应用笔记。例如,在 Keil 网站上(http://www.keil.com/appnotes/list/arm.h),可以找到使用Keil MDK-ARM Cortex-M开发工具的多种文档,以及涉及一般编程信息的应用笔记。

不要忘了微控制器芯片的分销商也可能会提供很多有用的信息。

六、 结语

以上内容来自清华大学的ARM Cortext-M3权威指南,STM32虽然听起来和ARM Cortex-M处理器不搭边,但事实上它就是ARM Cortex-M3处理器,因此,ARM Cortex-M3具备的特点它同样也具备。现如今我们能够通过C语言灵活方便地对STM32处理器进行编程控制是因为芯片供应商(如:意法半导体ST)的帮助封装好固件库。未来,STM32的应用愈发广泛,学习32的应用以及原理对我们竞赛、嵌入式入职、生活应用都有巨大的帮助。最后,祝阅读的码友前程似锦、心想事成^_^

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值