历史上的今天
返回首页

历史上的今天

今天是:2025年03月09日(星期日)

正在发生

2019年03月09日 | STM32 地址偏移问题及怎么运用

2019-03-09 来源:eefocus

就举一个例子哦 其他类推

我就举STM32  里面一个结构体吧!


//以下函数或者定义不是在一起的,我只是把他们拉出来,也说明是相关联的!

 

#define     __I     volatile const      /*!< defines 'read only' permissions只读      */

#define     __O     volatile            /*!< defines 'write only' permissions 只写    */

#define     __IO    volatile            /*!< defines 'read / write' permissions可读写 */

typedef unsigned           int uint32_t;

#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region片1基地址 */

#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)//片1地址+偏移地址

#define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)//桥2地址+偏移地址 每个GPIOx偏移地址不一样

 

//然后定义结构体

typedef struct

{

  __IO uint32_t CRL; //地址偏移0x00//注意是32位 占用4个字节  因此每次+4

  __IO uint32_t CRH; //地址偏移0x04

  __IO uint32_t IDR; //地址偏移0x08

  __IO uint32_t ODR; //地址偏移0x0C

  __IO uint32_t BSRR;//地址偏移0x10

  __IO uint32_t BRR; //地址偏移0x14

  __IO uint32_t LCKR;//地址偏移0x18

} GPIO_TypeDef;

 

 

 

//注意一下 此时GPIOB是一个指针并初始化了,初始化为GPIOB_BASE,指针类型为(GPIO_TypeDef *)

//并不是GPIOB_BASE的地址 ,是把GPIOB_BASE强制转换为指针 此时GPIOB指向的地址为GPIOB_BASE

#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)

 值得注意的是 CRL CRH IDR ...这7个变量,在库文件没有具体的值!说白了没有明显的初始化!其实已经初始化了。


具体怎么初始化的呢?以我的理解,如果有疑问请大佬指正!


//经过查技术资料

 

//GPIOB  的指向地址为:             0x40010C00 

 

//库文件是这样调取 结构体GPIO_TypeDef 的变量的

//调取之前我先说明一件事情

//就是结构体GPIO_TypeDef 里面的变量CRL CRH IDR...具体值是什么?

//首先上面已经说明GPIOB是一个指针,也就是说GPIOB是一个指针,不信可以看具体例程

 

GPIOB->BRR = (((uint32_t)0x01) << pinpos);//随便找的,也只有指针才能这样调取->

 

//说完这个,由于GPIOB是指针 并且指向0x40010C00 

//其中CRL CRH IDR...都是定义的是  __IO uint32_t 类型的

//由于结构体定义变量,变量是连续的(但不和数组像)

 

typedef struct

{

  __IO uint32_t CRL; //地址偏移0x00//注意是32位 占用4个字节  因此每次+4

  __IO uint32_t CRH; //地址偏移0x04

  __IO uint32_t IDR; //地址偏移0x08

  __IO uint32_t ODR; //地址偏移0x0C

  __IO uint32_t BSRR;//地址偏移0x10

  __IO uint32_t BRR; //地址偏移0x14

  __IO uint32_t LCKR;//地址偏移0x18

} GPIO_TypeDef;

 

//这样GPIOB->CLR 指向的地址0x40010C00

//然后GPIOB->CRH 偏移是0x04  指向的地址为(0x40010C00+0x04)0x40010C04

//以此类推....

//这样CRL CRH IDR... 指向的地址已经确定。

//只要GPIO_TypeDef* 确定 地址也就确定了。

 

推荐阅读

史海拾趣

CITIZEN公司的发展小趣事

随着技术的不断进步和产品的不断创新,西铁城公司开始积极拓展全球市场。公司的产品以其高品质、精确度和创新技术而闻名,逐渐赢得了全球消费者的青睐。同时,公司也积极参与国际性的钟表展会和活动,通过展示最新产品和技术成果,进一步提升品牌知名度和影响力。这一系列的举措使得西铁城在全球市场上的地位日益稳固。

Connector City公司的发展小趣事

Connector City公司成立于XX世纪初,当时电子连接器市场正处于快速发展的阶段。作为初创企业,Connector City面临着资金短缺、技术落后和市场竞争激烈的挑战。然而,公司创始人凭借对行业的深刻理解和敏锐的市场洞察力,成功捕捉到了市场机遇。他们积极寻求投资,加强与科研机构的合作,不断提升产品性能和质量。同时,公司还注重市场营销和品牌建设,通过参加行业展会、举办产品发布会等方式,提高了品牌知名度和市场占有率。

Anatech Electronics Inc公司的发展小趣事

随着全球环保意识的不断提高,电子行业对绿色环保的要求也越来越高。Connector City公司积极响应国家环保政策,加强了对生产过程的环保管理。公司引进了先进的环保设备和技术,减少了生产过程中的废弃物排放和能源消耗。同时,公司还注重产品的环保性能设计,推出了多款符合环保标准的新型连接器产品。通过坚持绿色环保和可持续发展理念,公司赢得了社会的广泛赞誉和支持。

这五个故事仅是对Connector City公司可能发展路径的一种虚构描述,实际情况可能因市场变化、公司策略调整等多种因素而有所不同。在实际发展中,公司需要根据自身情况和市场环境做出灵活的调整和决策。

EAO公司的发展小趣事

在电子制造行业日益重视环保和可持续发展的背景下,EAO公司积极响应号召,致力于研发和生产环保型电子产品。公司投入大量资源研发新型环保材料,优化生产工艺,减少生产过程中的废弃物排放。同时,EAO公司还建立了完善的电子垃圾回收体系,对废弃电子产品进行专业处理,确保资源得到合理利用,减少对环境的负面影响。

Global Mixed-Mode Technology Inc公司的发展小趣事
三相缺相报警灯电路在需要稳定三相电源供电的场合下非常重要。例如,在工业生产中,三相电动机、变压器等设备对电源的稳定性要求很高,一旦发生缺相,可能会导致设备损坏或生产事故。因此,在这些场合下需要安装三相缺相报警灯电路来及时监测并报警缺相情况。
乔光电子(FTR)公司的发展小趣事
三相缺相报警灯电路可以与其他电气保护设备配合使用,共同保障电气系统的安全稳定运行。例如,当三相缺相报警灯电路检测到缺相情况时,可以发出警报信号给操作人员或监控系统;同时,断路器或过载保护器等设备也可以根据设定的保护参数来切断故障电路或降低负载功率等措施来防止设备损坏或生产事故的发生。这些设备之间通过电气信号或控制逻辑相互关联和配合工作。

问答坊 | AI 解惑

基于DSP的上网方案的软硬件设计与实现

随着现代网络技术的发展,嵌入式系统如单片机、DSP等系统对接入网络的需求日益增加,例如具有远程抄表功能的电表系统、可以进行远程控制的信息家电系统等。本文采用TI公司的TMS320VC33 DSP芯片设计与Realtek公司的RTL8019网卡的硬件接口电路,并在DSP ...…

查看全部问答>

巧妙利用数字锁相环测量汽车转速

1 前言         锁相环路诞生于20世纪30年代。近年来,锁相技术在通信、航天、测量、电视、原子能、电机控制等领域,能够高性能地完成信号的提取、信号的跟踪与同步,模 拟和数字通信的调制与解调、频率合成、滤波 ...…

查看全部问答>

感激中领悟生活——我的工作感悟

从参加工作到现在也将近两年时间了,工作中的感悟就像夜空中的繁星,虽然发出的光强弱不同,但每一种感受都是与众不同的。 现在有机会提笔写感悟,却顿生“最熟悉的陌生人”之感。难道是时间的穿梭遮挡了记忆的星光吗?我迷惑不解。 于是,终于有 ...…

查看全部问答>

关于dsp的资料怎么搜索啊

rt  我在搜索里直接键入dsp  结果显示没有相关资源  咋回事啊? 记得以前是有的啊?各位指教啊…

查看全部问答>

请教板卡开发的过程

公司是做显示这块的,鼓捣液晶等离子这些的,原来都是买别人家的驱动控制板卡,然后自己组装一下,现在想自己做了。从别人家买来的板卡,我还比较熟悉,经过了解,其实就是一个C51的芯片,然后周边加上电容电阻等,还有就是跟视频有关的接口,就像 ...…

查看全部问答>

关于串口驱动,串口接收软FIFO的实现问题。

串口驱动中定义了以下结构,实现串口接收数据的读取。          typedef struct __RX_BUFFER_INFO {         ULONG        Read;          &nb ...…

查看全部问答>

嵌入式方向硕士关于学习规划的问题!!

  大家好,我是某校软件工程硕士,现在刚研一,我选择了嵌入式这个方向,因为本科时坐过2年的单片机开发,对底层的东西有点基础。由于我英语比较好,所以基本上现在我的目标是毕业后进个大的外企,慢慢学习,以后再谋求自己创业的机会。 ...…

查看全部问答>

I2C通信问题

我使用合泰单片机作为从机,使用另一个单片机作为主机,主机可以从从机那里读出数据,但是当我改变为主机写数据到从机的时候(读和写的地址是一样的,只是最后一位改变,当为1时是读取从机数据,为0时写数据到从机中),也就是只改变8位地址字节的 ...…

查看全部问答>

使用73xExternalInterrupt遇到的一个问题

程序中间用到External Interrupt INT6设置成 下降沿触发中断以前遇到的都是发生中断后都要清除中断标志位但是这里好像在库里面没有有这个中断的标志的说明就没有处理这里但是运行的过程中没有达到效果一串信号发送过去,应该一 ...…

查看全部问答>

Zhaojun, cortex-m0书中8.3节按键外中断问题

如题.由于按键抖动,会不会出现多次发生中断?若检测按键可以延时消抖,但中断是只要有下降延和低电平就中断,影响可靠性.…

查看全部问答>