资讯专栏INFORMATION COLUMN

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

ruicbAndroid / 2531人阅读

摘要:处理器拥有的寄存器组。主堆栈指针复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程包括中断服务例程。进程堆栈指针由用户的应用程序代码使用。堆栈指针的最低两位永远是,这意味着堆栈总是字节对齐的。

第一章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 语言来操作。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121069.html

相关文章

  • 【沁恒CH32学习】——RISC-V架构学习笔记

    摘要:我首先百度简单了解了架构和架构的区别,以我个人的理解是架构代表之前的复杂指令集,而架构代表着精简指令集。而我这次的学习的重点并不是围绕着指令集,而是基于架构的开发板的应用上。以上就是我本次学习架构的笔记和心路历程。 作为新手第一次接触RISC-V架构时。我首先百度简单了解了ARM架构和RIS...

    nihao 评论0 收藏0
  • 基于STM32Cube MX开发的TencentOS-Tiny软件包

    摘要:基于开发的软件包导师汪礼超学员崔林威摘要腾讯物联网操作系统是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,可裁剪等特性。图中断函数处理进行生成工程配置,按如下界面进行配置,最后点击,并点击。 ...

    shiyang6017 评论0 收藏0
  • STM32入门学习经验总结

    摘要:严格地说,应该是模仿实验。为什么觉得无从下手,看资料没有头绪经验总结看资料需要计划耐心和速度这里所谓的资料包括书籍文档。建议有报销条件的同学自己设计一块板子学习。无法报销的同学,可以选购一款开发板学习。 STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex...

    biaoxiaoduan 评论0 收藏0
  • 树莓派学习笔记(六)交叉编译概念及安装使用

    摘要:一交叉编译概念什么是交叉编译交叉编译是在一个平台上生成另一个平台上的可执行代码。也要树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。 ...

    songze 评论0 收藏0
  • TPYBoard开发板带你轻松玩转MicroPython

    摘要:实践证明,加上稳定可靠的外围电路和抗干扰电源,以为核心的产品能成功应用于苛刻的工业环境,使开源硬件和开发平台得到更广泛的应用,产品多样性远远高于官方开发板,是学习的首选。 说到MicroPython,也许有人会感到陌生。而说到和它密切相关的Python,是否会恍然大悟呢?Python属于解释型语言,1989年才开发完成的Python显然非常年轻。然而经过数十年的磨砺,如今Python已...

    z2xy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<