历史上的今天
返回首页

历史上的今天

今天是:2025年12月20日(星期六)

2022年12月20日 | STM32的这些经典功能,你真的掌握了吗?

2022-12-20 来源:zhihu

首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。

创客学院整理如下:

AMBA:先进单片机总线架构 ADK:AMBA设计c9200446619921FFCa4b252220c1fe2a

AHB:先进高性能总线 AHB-AP:AHB访问端口

APB:先进外设总线ARMARM:ARM架构参考手册

ASIC:行业领域专用集成电路ATB :先进跟踪总线

BE8:字节不变式大端模式 CPI:每条指令的周期数

DAP:调试访问端口 DSP:数字信号处理(器)

DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元

FPB:闪存地址重载及断点 FSR:fault状态寄存器

HTM:Core Sight AHB跟踪宏单元

ICE:在线仿真器IDE:集成开发环境

IRQ:中断请求(通常是外中断请求)

ISA:指令系统架构 ISR:中断服务例程

ITM:仪器化跟踪宏单元

JTAG:连接点测试行动组(一个关于测试和调试接口的标准)

LR:连接寄存器

LSB:最低有效位

MSB:最高有效位

LSU:加载存储单元

MCU:微控制器单元

MPU:存储器保护单元

MMU:存储器管理单元

MSP:主堆栈指针

NMI:不可屏蔽中断

NVIC:嵌套向量中断控制器

PC:程序计数器

PPB:私有外设总线

同时,还要如下规定:

数值

1. 4''hC , 0x123 都表示16进制数

2. #3表示数字3 (e.g., IRQ #3 就是指3号中断)

3. #immed_12表示一个12位的立即数

4. 寄存器位。通常是表示一个位段的数值,例如

bit[15:12] 表示位序号从15往下数到12,这一段的数值。

寄存器访问类型

1. R 表示只读

2. W表示只写

3. RW 表示可读可写(前3条好像地球人都知道)

4. R/Wc 表示可读,但是写访问将使之清 0

Cortex-M3芯片简介

1、芯片的基本结构如下图


2、关于ARMv7的知识了解
在这个版本中,内核架构首次从单一款式变成3种款式。
款式A:设计用于高性能的“开放应用平台”——越来越接近电脑了 。
款式R:用于高端的嵌入式系统,尤其是那些带有实时要求的——又要快又要实时。
款式M:用于深度嵌入的,单片机风格的系统中。
介绍A:用于高性能的“开放应用平台”,应用在那些需要运行复杂应用程序的处理器。支持大型嵌入式操作系统。
R:用于高端的嵌入式系统,要求实时性的。
M:用于深度嵌入的、单片机风格的系统中。
3、Cortex-M3处理器的舞台
高性能+高代码密度+小硅片面积,使得CM3大面积地成为理想的处理平台,主要应用在以下领域:
(1)低成本单片机
(2)汽车电子
(3)数据通信
(4)工业控制
(5)消费类电子产品
4、Cortex-M3概览
(1)简介
Cortex-M3是一个 32位处理器内核。内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。
比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的 cache。另外在CM3中,Both小端模式和大端模式都是支持的。
(2)Cortex-M3的简化图



(3)寄存器组

处理器拥有R0-R15的寄存器组,其中R13最为堆栈指针SP,SP有两个,但是同一时刻只能有一个可以看到,这就是所谓的“banked”寄存器。


a、R0-R12都是 32位通用寄存器,用于数据操作。但是注意:绝大多数 16位Thumb指令只能访问R0-R7,而 32位 Thumb-2指令可以访问所有寄存器。
b、Cortex-M3拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。
主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)
进程堆栈指针(PSP):由用户的应用程序代码使用。
---堆栈指针的最低两位永远是0,这意味着堆栈总是4字节对齐的。---
c、R14:连接寄存器--当呼叫一个子程序时,由R14存储返回地址
d、R15:程序计数寄存器--指向当前的程序地址,如果修改它的值,就能改变程序的执行流(这里有很多高级技巧)


推荐阅读

史海拾趣

Azoteq公司的发展小趣事

近年来,Azoteq在传感技术方面取得了重大突破。其最新产品系列——ProxFusion®,是世界上第一个单芯片集成多传感器功能的解决方案。这一创新产品将多种传感功能集成在一个芯片上,为客户提供了更加便捷、高效的解决方案。ProxFusion®的推出,再次展现了Azoteq在传感技术领域的领先地位。

高博(GBG)公司的发展小趣事

谷峰电子有限公司的故事始于1995年,当时公司在香港成立,标志着其半导体元器件研发与销售的起点。初期,面对激烈的市场竞争和技术挑战,谷峰团队凭借对半导体技术的深刻理解和对市场需求的敏锐洞察,逐步确立了以功率MOSFET为核心产品的战略方向。2000年,谷峰在深圳设立分公司,进一步扩大了其研发和销售网络,为公司的快速发展奠定了坚实基础。

AMI [American Megatrends Inc]公司的发展小趣事

在巩固功率MOSFET市场地位的同时,谷峰公司还积极拓展其他应用领域。公司的半导体产品广泛应用于PD快充、机器人、电动工具、LED照明、5G基站、充电桩等多个领域,满足了不同客户的多样化需求。此外,谷峰还紧跟行业发展趋势,不断推出新产品和技术解决方案,以应对市场的快速变化。这种多元化的发展策略不仅为公司带来了新的增长点,还增强了其抵御市场风险的能力。

Deltron公司的发展小趣事

随着国内市场的不断饱和,Deltron公司开始积极拓展国际市场。通过参加国际展览、与国外企业建立合作关系、设立海外分支机构等方式,Deltron逐渐打开了国际市场的大门。其优质的产品和服务得到了国际客户的认可,为公司的发展注入了新的活力。

ACCRETECH公司的发展小趣事

在追求经济效益的同时,Deltron公司始终关注环境保护和可持续发展。公司大力推行绿色生产理念,引进环保设备和技术,减少生产过程中的污染物排放。同时,公司还积极参与环保公益活动,提高员工和公众的环保意识。这些举措不仅提升了Deltron的品牌形象,也为公司的长期发展奠定了坚实基础。

Electrolube公司的发展小趣事

在电子行业中,电池管理系统(BMS)的可靠性和耐用性一直是制造商关注的焦点。Electrolube公司凭借其在材料科学领域的深厚积累,成功推出了一款名为UVCL的新型UV固化涂层。这款涂层以其独特的特性迅速在市场中脱颖而出。

UVCL涂层采用先进的UV固化技术,能够在几秒钟内完成固化过程,大大提高了生产效率。同时,它还具有高效的湿气引发的二次固化机制,确保即使在阴影区域也能实现完全固化。这一特性对于BMS等复杂电子电路的保护至关重要。

为了将UVCL涂层推向市场,Electrolube公司的研发团队与客户紧密合作,克服了客户内部没有UV固化设施的难题。他们与信誉良好的供应商合作,提供了完整的解决方案,并成功为客户提供了原型样品单元进行现场测试。测试结果显示,UVCL涂层能够为电子电路提供最高水平的保护,且操作过程简单、应用速度快。

UVCL涂层的成功推出不仅提升了Electrolube公司在电子材料领域的地位,也为公司赢得了众多客户的信赖和好评。

问答坊 | AI 解惑

FMR245能用于方形无顶(敞口)的水池吗(不加导波管)

现在安装FMR245(E+H)液位计,安装的地点是一个方形无顶(即敞口)水池,看了使用手册安装的图例都是密封罐,而且在仪表的基本设定中,功能组选择罐体形状时。只有一个平顶罐和现场沾的上一点边,在设计时没有设计和购买导波管,如果不安装导波管, ...…

查看全部问答>

c# 通过USB接口传送数据给单片机

    大家好,我现在正在做一个电子产品,这个电子产品有一个128*128的小屏幕, 碰到一个问题,就是怎么把C#中的数据通过USB接口传送到这个屏幕上? 比如我C#程序输出一字符串\"123456\",在电子产品的屏幕上就显示\"123456\", 请问怎么实现? 问 ...…

查看全部问答>

什么情况下用户任务全部被删除

请教一个问题:   vxworks在什么情况下会将用户所创建任务全部删除,系统重新回到用户程序未加载状态…

查看全部问答>

关于硬盘选购

缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速 ...…

查看全部问答>

如何获取字模偏移量???

int GetGBKCode_from_sd(unsigned char* pBuffer,unsigned char * c) {     unsigned char High8bit,Low8bit;      unsigned int pos;      High8bit=*c;     /* 取 ...…

查看全部问答>

2013年国内电子元器件分销展望 

本帖最后由 jameswangsynnex 于 2015-3-3 20:05 编辑 2012年国内整个电子元器件分销行业整体行情不景气。很多日系芯片原厂亏损裁员,很多美系芯片不断调整业务重点,台湾芯片原厂也是不断合并,电子元器件授权代理商整体业绩一般化。大家普遍认为 ...…

查看全部问答>

最近在学lm3s系列

完全不知道肿么入手啊,求书,求经验,求大神赐教啊…

查看全部问答>

ST-LINK USB WINDOES驱动

ST-LINK USB  WINDOES驱动…

查看全部问答>

点对点对等网络实验中遇到的问题

今天拿来TI的例程simple_Peer_to_Peer.做点对点对等网络实验,将LinkTo.c和LinkListen.c程序分别下载给两个ED后。 talker上电后,红绿LED同时点亮,按下按键s1\\s2中任意一个,红绿LED同时闪烁,进入发送link广播帧 状态; listener上电 ...…

查看全部问答>

红色部分是我的问题,为什么加那句话

内容:多位数码管分别显示不同数字,这种扫描显示方式成为动态扫描,并不停变化赋值 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #define DataPort P0 // ...…

查看全部问答>