历史上的今天
返回首页

历史上的今天

今天是:2024年11月24日(星期日)

正在发生

2021年11月24日 | STM32 对外设基地址,总线外设基地址和寄存器基地址的理解

2021-11-24 来源:eefocus

前言

本博文基于STM32F103ZET6和MDK以及V3.5.0库函数;

本博文从Cortex-M3内核的寻址空间映射一直聊到库函数是怎样配置具体的某一个寄存器;

如有不足之处,多多指教;

Cortex-M3存储器映射

由于STM32系列芯片为32位处理器,所谓32位处理器,也即是地址总线有32根,可寻址空间为2^32=4GB;如下图

在这里插入图片描述

从图片上可以看出,ARM公司已经为芯片生产厂商们划分好了存储映射空间;并且,0x40000000~0x5FFFFFFF这段地址,映射片上外设的寄存器地址;STM32F10x.h这个头文件正是吧STM32的所有寄存器进行地址映射,此文件通过宏定义的方式,将各个寄存器的地址转换为相应的符号名称,如下图;图片中第一个方框为外设基地址,第二个方框是总线外设基地址,第三个方框是寄存器组基地址;

在这里插入图片描述

外设基地址: PERIPH_BASE ,且值为0x40000000,可以看出是整个外部设备地址的开始,所以叫外设基地址;


#define PERIPH_BASE           ((uint32_t)0x40000000)


总线外设基地址:


#define APB1PERIPH_BASE       PERIPH_BASE

#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)

#define AHBPERIPH_BASE        (PERIPH_BASE + 0x20000)  //不同芯片AHB总线外设基地址可能不同;


显然,APB1的总线起始地址与外设基地址相同;APB1,APB2和AHB总线上分别挂在这很多外设;


寄存器组基地址: (每一个外设有一个寄存器组,下面以挂在在APB2上的GPIOA寄存器组举例)


#define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)


寄存器偏移地址:(以GPIOA_CRH为例)

在这里插入图片描述

图片中的偏移地址为此寄存器相对于此外设寄存器组基地址的相对偏移地址; 即此地址为:

GPIOA_BASE + 0x04

= APB2PERIPH_BASE + 0x0800 + 0x04

= PERIPH_BASE + 0x10000 + 0x0800 + 0x04

= 0x40000000 + 0x10000 + 0x0800 + 0x04

= 0x40010804;

即0x40010804就是GPIOA_CRH的寄存器地址,在对此寄存器进行配置的时候,就是对此地址进行操作;

推荐阅读

史海拾趣

Galil Motion Control Inc公司的发展小趣事

Galil Motion Control Inc. 的五个发展故事

故事一:技术创新引领者

Galil Motion Control Inc.,成立于1983年,位于美国加州硅谷中心,是电子行业中运动控制技术的先驱。公司成立初期,便致力于研发基于微处理器的精密运动控制器。据《DESIGNNEWS》杂志报道,Galil是全球第一家推出数字运动控制器的公司,这一技术创新在业界引起了巨大反响。此后,Galil不断推陈出新,其产品已发展到第五代,采用RISC结构的DSP技术,结合最新控制理论及网络技术,使得伺服更新速率和指令执行周期显著提升,引领了运动控制领域的技术潮流。

故事二:全球市场的扩展

随着技术的不断成熟,Galil的产品逐渐在全球市场上占据了一席之地。目前,全球有超过500,000台Galil的运动控制器在稳定运行,应用领域覆盖了医疗、半导体、纺织、物料搬运、食品加工、机床、产业机械、航天、测试测量等多个行业。这一广泛的应用不仅证明了Galil产品的可靠性和稳定性,也为其在全球市场的扩展奠定了坚实的基础。

故事三:分布式运动控制器的诞生

在进入21世纪之初,Galil公司又开发出了DMC3425分布式运动控制器。这款控制器不仅提供了API函数支持高级应用开发,还引入了极其简单易学的2字符命令集,使得应用编程变得如同书写英文字母般简单。这一创新不仅降低了用户的学习成本,也极大地提高了系统的开发效率,进一步巩固了Galil在运动控制领域的领先地位。

故事四:与光纤激光切割技术的结合

近年来,随着激光切割技术的快速发展,Galil公司也紧跟这一趋势,将运动控制技术与光纤激光切割技术相结合。通过设计以Galil控制卡为核心的四轴联动伺服控制系统,实现了激光切割设备的高精度控制。这一结合不仅提升了激光切割设备的性能,也拓展了Galil运动控制技术的应用领域,为工业制造带来了更多的可能性。

故事五:全球销售与服务网络的建立

为了更好地服务全球客户,Galil公司在全球范围内建立了完善的销售和服务网络。目前,Galil拥有众多销售代理商,遍布世界各地。这些代理商不仅负责产品的销售工作,还为客户提供专业的技术支持和售后服务。通过这一网络,Galil能够迅速响应客户的需求,确保每位客户都能获得最佳的产品体验和服务保障。这种以客户为中心的服务理念,也为Galil赢得了良好的市场口碑和广泛的客户认可。

Fine Products Microelectronics Corp公司的发展小趣事

Fine Products Microelectronics Corp公司发展故事(虚构)

故事一:技术创新引领市场

Fine Products Microelectronics Corp(简称FPMC)自创立之初便致力于半导体技术的创新。在上世纪90年代,当半导体行业还普遍使用传统光刻技术时,FPMC的研发团队率先提出了步进式光刻机(Wafer Stepper)的概念。这一创新极大地提高了芯片制造的精度和效率,使得芯片特征尺寸得以大幅缩小。尽管初期面临技术难度大、市场接受度低等挑战,但FPMC凭借坚持不懈的努力,最终成功研发出并量产了步进式光刻机,迅速在半导体制造领域占据了领先地位。

故事二:与巨头的合作与竞争

在FPMC的成长过程中,与行业内巨头的合作与竞争是不可或缺的一部分。特别是在21世纪初,FPMC与IBM、TI等知名企业建立了合作关系,共同推进半导体技术的研发和应用。然而,这种合作并非一帆风顺,FPMC在某些关键技术上坚持自主研发,与IBM的电子束光刻(e-beam)技术产生了竞争。尽管这种竞争给FPMC带来了一定的压力,但也促使公司不断加大研发投入,提升技术实力,最终形成了自己独特的竞争优势。

故事三:石墨烯电极技术的突破

近年来,随着二维材料研究的兴起,FPMC紧跟科技前沿,成功研发出了石墨烯辅助金属电极转印技术。这一技术利用石墨烯与金属间较弱的范德华作用力,实现了金属电极阵列在二维沟道材料上的无损转移。该技术不仅提高了电极的制备精度和效率,还降低了制造成本,为二维芯片的应用开辟了新的路径。FPMC的这一创新成果迅速获得了业界的关注和认可,进一步巩固了公司在半导体材料领域的领先地位。

故事四:物联网时代的布局

随着物联网技术的快速发展,FPMC敏锐地捕捉到了这一市场机遇。公司及时调整战略方向,加大了对物联网相关产品的研发力度。通过与多家物联网企业和研究机构的合作,FPMC成功推出了一系列高性能、低功耗的物联网芯片和解决方案。这些产品广泛应用于智能家居、智慧城市、工业控制等领域,为物联网的普及和发展提供了强有力的支持。

故事五:绿色可持续发展

在追求技术创新和市场拓展的同时,FPMC始终不忘企业的社会责任。公司积极响应全球绿色可持续发展的号召,致力于研发环保型半导体产品和制造工艺。通过采用先进的节能减排技术和循环利用材料等手段,FPMC不仅降低了自身的生产成本和能耗水平,还为推动半导体行业的绿色可持续发展做出了积极贡献。此外,公司还积极参与社会公益活动,为构建和谐社会贡献自己的一份力量。

H&D Wireless公司的发展小趣事

2017年,高创被美的集团全资收购,成为美的工业技术事业群的重要业务板块之一。这一转变标志着高创进入了一个全新的发展阶段。借助美的集团的平台力量,高创在技术研发、生产制造、供应链管理等方面得到了显著提升。同时,与美的集团旗下其他业务板块如库卡机器人等的协同合作,进一步拓宽了高创的市场应用领域。

鑫雁公司的发展小趣事

为了更快地拓展市场,聚洵半导体积极寻求与国内外知名企业的合作。公司与世界领先的芯片制造公司台积电建立了晶圆代工合作关系,并在长电科技和华天科技进行封装测试,确保了产品的一流工艺和品质。此外,聚洵还与国内多家电子元器件电商平台如立创商城、华强芯城等建立了紧密的合作关系,通过线上线下双管齐下的分销渠道,将产品迅速推向市场。这些合作不仅提升了聚洵的品牌知名度,还极大地促进了其市场份额的增长。

Displaytech公司的发展小趣事

2008年,Displaytech推出了HDP Power,这是一项创新的电力解决方案,旨在支持公司客户的电力需求。这一举措不仅体现了Displaytech对客户需求的深刻洞察,也展示了公司在电源领域的技术实力。

强盛电子(AEC)公司的发展小趣事

强盛电子(AEC)自成立以来,一直致力于电子技术的研发与创新。公司研发团队经过数年的努力,成功开发出一款具有颠覆性的新型芯片,这款芯片在性能上远超当时的同类产品,引起了市场的广泛关注。随着这款芯片的量产和上市,AEC的市场份额迅速扩大,成为行业内的佼佼者。

问答坊 | AI 解惑

单片机下载不了程序

Chinese:正在尝试与 MCU/单片机 握手连接 ... Chinese:连接失败,请尝试以下操作: 1.在单片机停电状态下,点下载按钮,再给单片机上电 2.停止下载,重新选择 RS-232 串口, 接好电缆 3.可能需要先将 P1.0/P1.1 短接到地 4.可能 ...…

查看全部问答>

ActiveSync问题

为什么我每次用ActiveSync与wince设备建立同步之后都会建立一个新的同步文件夹,能否用以前建立好的同步文件夹…

查看全部问答>

求系统时间差值的问题,大家帮忙啊

        CTimeSpan span = SysStopTime - SysStartTime;         CString s = span.Format( \"Total days: %D, hours: %H, mins: %M, secs: %S\" );               ...…

查看全部问答>

外资急聘高级硬件工程师!!!

硬件工程师 职责: 1.        负责与客户、营销团队、研发团队、供应商或联盟伙伴共同设计和研制工程产品或产品模块的全过程. 2.        制定和建立设计规范和技术要求。 3.      &nbs ...…

查看全部问答>

如何利用51芯片实现以下功能

我是刚开始学习51芯片,老师让我设计一个电路图,我需要实现的功能为数模转换和模数转换,另外接一个4×4键盘,留四个io口,一个用于连接LCD.我想知道我该用什么软件画图,我该从什么地方着手实现.…

查看全部问答>

关于msp430F169DCO的问题

我想请教一下,430F169内的DCO震荡的最大能跑到多大?如果P2.5接电阻应接多大?如果P2.5了接电阻还可以用做一般的I/O吗?…

查看全部问答>

msp430F149+PT2313怎么没有声音啊?

如题!!都说PT2313很简单,我都是按照PDF说明写程序的,怎么一点声音都没有呢!跪求各位大侠的...程序如下:我用的是MSP430F149做MCU_______ void delay() {     unsigned char q0;     for(q0=0;q0 0; Count -- ) &n ...…

查看全部问答>

请高手帮忙

这是个采样检测220V交流电压的电路。市电通过互感器转换成小信号,经过U1D的精密半波整流,在正半周经R3对E1充电,在零半周E1经R3和VR1放电。不知我分析得对不对。很大的疑问是E1的充放电时间常数虽然都很大,但E1电压仍是锯齿波,其波动幅度、均值 ...…

查看全部问答>

朋友们,CCS V5 编程时怎么使用asin() 函数啊, 包含头文件“math.h”不好使啊

朋友们,CCS V5 编程时怎么使用asin() 函数啊,  包含头文件“math.h”不好使啊…

查看全部问答>

有没有人学过zigbee啊

这个学起来是不是有点难,听说有人学了很久都没有学会,现在想学习这个试一试,有人知道这方面吗…

查看全部问答>