STM32学习笔记 第一章 ARM处理器

Posted 我的世界PLA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32学习笔记 第一章 ARM处理器相关的知识,希望对你有一定的参考价值。

第一章ARM处理器

1.1ARM处理器简介

1.1.1 ARM概念

ARM(Advanced RISC Machine),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,是一款高级RISC(精简指令集)微处理器,还可以认为是一种技术的名字。ARM 公司并不生产芯片也不销售芯片,它只出售芯片技术授权。其合作公司针对不同需求搭配各类硬件部件,比如 UART、SDI、I2C等,从而设计出不同的 SoC 芯片。

1.1.2 ARM应用场景

基于 ARM 的处理器具有高速度、低功耗、价格低等优点被广泛应用于以下领域:
为通信、消费电子、成像设备等产品,提供可运行复杂操作系统的开放应用平台;
在海量存储、汽车电子、工业控制和网络应用等领域,提供实时嵌入式应用;
安全系统,比如信用卡、SIM 卡等。

1.1.3 ARM的技术特征

ARM 架构支持32位的ARM指令集和16位的Thumb指令集(大大减小了代码的存储空间)。
处理器系列产品:
ARM Cortex-A系列:顶级主控,手机平板AP应用处理器
ARM Cortex-R系列:实时高性能处理器,硬盘控制器,车载控制产品
ARM Cortex-M系列:通用低端,工业,消费电子领域微控制器

1.2基于Cortex - M3的MCU

1.2.1Cortex-M3处理器内核与基于Cortex-M3的MCU关系

Cortex - M3内核定义:单片机的中央处理单元CPU。
Cortex-M3是ARM公司设计的ARMv7架构下Cortex系列的首秀,其目的是为了让32位处理器加入单片机市场,Cortex-M3的特点有:性能强劲、功耗低、实时性好、代码密度得到很大改善、使用更加方便、低成本的整体解决方案、开发工具众多:keil、Cube…
二者的关系:
如图1-1是基于Cortex-M3内核的MCU,Cortex-M3相当于一个小CPU(中央处理器)。MCU就是我们看到的芯片,不同芯片生产厂家在得到Cortex-M3内核的使用授权之后,就可以将Cortex-M3内核用在自己的硅片设计中,然后每个厂家加入不同容量或者不同类型的存储器和一些其他的外设就变成了不同型号的MCU。

图1-1

1.2.2ARM指令集

ARM处理器一直支持两种形式上相对独立的指令集,它们分别是:
32位的ARM指令集对应处理器状态: ARM状态
16位的Thumb指令集对应处理器状态:Thumb状态

1.2.3Cortex-M3—寄存器组

Cortex-M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。CM3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。
Cortex-M3处理器拥有R0-R15的寄存器组。其中R13作为堆栈指针SP。SP有两个,但在同一时刻只能有一个可以看到,这也就是所谓的“banked”寄存器。

图1-2
R0-R12都是32位通用寄存器,用于数据操作。大多数16位 Thumb指令只能访问R0-R7。32位 Thumb-2 指令可以访问所有寄存器。R13: 两个堆栈指针,Cortex-M3拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)。进程堆栈指针(PSP):由用户的应用程序代码使用。堆栈指针的最低两位永远是 0,这意味着堆栈总是4 字节对齐的。
R14:连接寄存器,当呼叫一个子程序时,由 R14 存储返回地址。
R15:程序计数寄存器,指向当前的程序地址。
Cortex-M3 还在内核水平上搭载了若干特殊功能寄存器,包括:
程序状态字寄存器组(PSRs)
中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI)
控制寄存器(CONTROL)

图1-3

Cortex-M3 预先定义好了“粗线条的”存储器映射。通过把片上外设的寄存器映射到外设区,就可以简单地以访问内存的方式来访问这些外设的寄存器,从而控制外设的工作。结果,片上外设可以使用 C 语言来操作。

以上是关于STM32学习笔记 第一章 ARM处理器的主要内容,如果未能解决你的问题,请参考以下文章

STM32CubeMX学习笔记(27)——FatFs文件系统使用(操作SD卡)

STM32CubeMX学习笔记(27)——FatFs文件系统使用(操作SD卡)

stm32学习笔记-第一天

stm32学习笔记-第一天

stm32学习笔记-第一天

STM32学习笔记①:环境配置及室内温湿度检测