打印
[技术讨论]

寄存器的基地址都要加上偏移地址 那偏移的地址有何意义呢

[复制链接]
666|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
GavinZ| | 2021-1-9 08:04 | 只看该作者
每个寄存器都有一个地址,base+offset
这么描述就是为了分类。

使用特权

评论回复
板凳
chongdongchen| | 2021-1-9 08:53 | 只看该作者
看看GPIO的结构体的定义自然就明白了:

typedef struct
{
  __IO uint32_t MODER;        /*!< GPIO port mode register,                     Address offset: 0x00      */
  __IO uint32_t OTYPER;       /*!< GPIO port output type register,              Address offset: 0x04      */
  __IO uint32_t OSPEEDR;      /*!< GPIO port output speed register,             Address offset: 0x08      */
  __IO uint32_t PUPDR;        /*!< GPIO port pull-up/pull-down register,        Address offset: 0x0C      */
  __IO uint32_t IDR;          /*!< GPIO port input data register,               Address offset: 0x10      */
  __IO uint32_t ODR;          /*!< GPIO port output data register,              Address offset: 0x14      */
  __IO uint32_t BSRR;         /*!< GPIO port bit set/reset register,      Address offset: 0x1A */
  __IO uint32_t LCKR;         /*!< GPIO port configuration lock register,       Address offset: 0x1C      */
  __IO uint32_t AFR[2];       /*!< GPIO alternate function low register,  Address offset: 0x20-0x24 */
  __IO uint32_t BRR;          /*!< GPIO bit reset register,                     Address offset: 0x28      */
} GPIO_TypeDef;


#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)


使用时:GPIOx->IDR (GPIOx 可以是 GPIOA、GPIOB。。

使用特权

评论回复
地板
QWE4562009|  楼主 | 2021-1-9 11:38 | 只看该作者
netjob 发表于 2021-1-8 19:57
同层楼有多个房啊    基础地址如一个楼层,然后这个楼层有多个房号,就是偏移, 1号房,2号房。。。。。。 ...

关键是偏移地址是一样的啊!也就是3楼 然后加上001号  那岂不是都是同一个房间吗

使用特权

评论回复
5
雪山飞狐D| | 2021-1-9 20:03 | 只看该作者
给结构体打包用得,方便识别

使用特权

评论回复
6
QWE4562009|  楼主 | 2021-1-11 15:41 | 只看该作者
雪山飞狐D 发表于 2021-1-9 20:03
给结构体打包用得,方便识别

关键是层楼有多个房间  结果房间号是一样的  那有何意义呢?连区分的功能都没有啊  

使用特权

评论回复
7
雪山飞狐D| | 2021-1-11 18:50 | 只看该作者
QWE4562009 发表于 2021-1-11 15:41
关键是层楼有多个房间  结果房间号是一样的  那有何意义呢?连区分的功能都没有啊   ...

   你不分组,你让固件库HAL库开发人员怎么写?

使用特权

评论回复
8
madboy21| | 2021-1-11 19:55 | 只看该作者
看地板,偏移地址清清楚楚楚

使用特权

评论回复
9
zchong| | 2021-1-15 06:35 | 只看该作者
QWE4562009 发表于 2021-1-11 15:41
关键是层楼有多个房间  结果房间号是一样的  那有何意义呢?连区分的功能都没有啊   ...

理解有问题吧,如果楼层是基地址,那么房间号是偏移地址,虽然房间号都是1、2…5,但楼层不一样,你去5楼的第3个房间,和去6楼的第三个房间能一样吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

926

主题

2828

帖子

22

粉丝