OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6433|回复: 7

stm32寄存器偏移地址定义????

[复制链接]

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-2-27
在线时间
39 小时
发表于 2016-4-17 16:24:46 | 显示全部楼层 |阅读模式
1金钱
比如说下面的第一个SR 寄存器定义,它只是定义了SR但是没有定义SR的值,那使用时怎么知道SR的地址是哪个???

typedef struct
{
  __IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
  __IO uint32_t CR1;    /*!< ADC control register 1,                      Address offset: 0x04 */      
  __IO uint32_t CR2;    /*!< ADC control register 2,                      Address offset: 0x08 */
  __IO uint32_t SMPR1;  /*!< ADC sample time register 1,                  Address offset: 0x0C */
  __IO uint32_t SMPR2;  /*!< ADC sample time register 2,                  Address offset: 0x10 */
  __IO uint32_t JOFR1;  /*!< ADC injected channel data offset register 1, Address offset: 0x14 */
  __IO uint32_t JOFR2;  /*!< ADC injected channel data offset register 2, Address offset: 0x18 */
  __IO uint32_t JOFR3;  /*!< ADC injected channel data offset register 3, Address offset: 0x1C */
  __IO uint32_t JOFR4;  /*!< ADC injected channel data offset register 4, Address offset: 0x20 */
  __IO uint32_t HTR;    /*!< ADC watchdog higher threshold register,      Address offset: 0x24 */
  __IO uint32_t LTR;    /*!< ADC watchdog lower threshold register,       Address offset: 0x28 */
  __IO uint32_t SQR1;   /*!< ADC regular sequence register 1,             Address offset: 0x2C */
  __IO uint32_t SQR2;   /*!< ADC regular sequence register 2,             Address offset: 0x30 */
  __IO uint32_t SQR3;   /*!< ADC regular sequence register 3,             Address offset: 0x34 */
  __IO uint32_t JSQR;   /*!< ADC injected sequence register,              Address offset: 0x38*/
  __IO uint32_t JDR1;   /*!< ADC injected data register 1,                Address offset: 0x3C */
  __IO uint32_t JDR2;   /*!< ADC injected data register 2,                Address offset: 0x40 */
  __IO uint32_t JDR3;   /*!< ADC injected data register 3,                Address offset: 0x44 */
  __IO uint32_t JDR4;   /*!< ADC injected data register 4,                Address offset: 0x48 */
  __IO uint32_t DR;     /*!< ADC regular data register,                   Address offset: 0x4C */
} ADC_TypeDef;


最佳答案

查看完整内容[请看2#楼]

每个寄存器后面不是都有备注偏移地址吗,再去stm32f4xx.h查基地址,然后基地址加偏移地址就是他的地址了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2016-4-2
在线时间
66 小时
发表于 2016-4-17 16:24:47 | 显示全部楼层
每个寄存器后面不是都有备注偏移地址吗,再去stm32f4xx.h查基地址,然后基地址加偏移地址就是他的地址了。
享受学习中的乐子,做合格的程序猿
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-2-27
在线时间
39 小时
 楼主| 发表于 2016-4-17 21:29:32 | 显示全部楼层
Fighting_Tao 发表于 2016-4-17 17:11
每个寄存器后面不是都有备注偏移地址吗,再去stm32f4xx.h查基地址,然后基地址加偏移地址就是他的地址了。

__IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
就像上面这样定义,然后使用是直接就ADC->SR;  ADC定义的地址我是找到了,但是SR直接就定义,没说明SR是多少,那它怎么知道要到哪里去????它是不是应该定义为__IO uint32_t SR=0x00;?????
回复

使用道具 举报

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2016-4-2
在线时间
66 小时
发表于 2016-4-18 19:08:50 | 显示全部楼层
看个人习惯把,我是在这里查询,然后基地址加上他的
享受学习中的乐子,做合格的程序猿
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-2-27
在线时间
39 小时
 楼主| 发表于 2016-4-19 16:47:07 | 显示全部楼层
__IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
就像上面这样定义,然后使用是直接就ADC->SR;  ADC定义的地址我是找到了,但是SR直接就定义,没说明SR是多少,那它怎么知道要到哪里去????它是不是应该定义为__IO uint32_t SR=0x00;?????
  

是不是我的问题大家理解不了???
回复

使用道具 举报

6

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2016-4-2
在线时间
66 小时
发表于 2016-4-20 11:59:56 | 显示全部楼层
012 发表于 2016-4-19 16:47
__IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
就 ...

封装在一个结构体里面了啊,你要用就直接对结构体成员进行操作就好啦
享受学习中的乐子,做合格的程序猿
回复

使用道具 举报

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-2-27
在线时间
39 小时
 楼主| 发表于 2016-4-27 19:17:12 | 显示全部楼层
Fighting_Tao 发表于 2016-4-20 11:59
封装在一个结构体里面了啊,你要用就直接对结构体成员进行操作就好啦

对呀,他是封装在一个结构体里了,但是在定义的时候没有东西, 直接就这样了,__IO uint32_t SR; 是什么意思 ,说明都被注释了 /*!< ADC status register,   Address offset: 0x00 */

typedef struct
{
  __IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
  __IO uint32_t CR1;    /*!< ADC control register 1,                      Address offset: 0x04 */      
  __IO uint32_t CR2;    /*!< ADC control register 2,                      Address offset: 0x08 */
  __IO uint32_t SMPR1;  /*!< ADC sample time register 1,                  Address offset: 0x0C */
  __IO uint32_t SMPR2;  /*!< ADC sample time register 2,                  Address offset: 0x10 */
  __IO uint32_t JOFR1;  /*!< ADC injected channel data offset register 1, Address offset: 0x14 */
  __IO uint32_t JOFR2;  /*!< ADC injected channel data offset register 2, Address offset: 0x18 */
  __IO uint32_t JOFR3;  /*!< ADC injected channel data offset register 3, Address offset: 0x1C */
  __IO uint32_t JOFR4;  /*!< ADC injected channel data offset register 4, Address offset: 0x20 */
  __IO uint32_t HTR;    /*!< ADC watchdog higher threshold register,      Address offset: 0x24 */
  __IO uint32_t LTR;    /*!< ADC watchdog lower threshold register,       Address offset: 0x28 */
  __IO uint32_t SQR1;   /*!< ADC regular sequence register 1,             Address offset: 0x2C */
  __IO uint32_t SQR2;   /*!< ADC regular sequence register 2,             Address offset: 0x30 */
  __IO uint32_t SQR3;   /*!< ADC regular sequence register 3,             Address offset: 0x34 */
  __IO uint32_t JSQR;   /*!< ADC injected sequence register,              Address offset: 0x38*/
  __IO uint32_t JDR1;   /*!< ADC injected data register 1,                Address offset: 0x3C */
  __IO uint32_t JDR2;   /*!< ADC injected data register 2,                Address offset: 0x40 */
  __IO uint32_t JDR3;   /*!< ADC injected data register 3,                Address offset: 0x44 */
  __IO uint32_t JDR4;   /*!< ADC injected data register 4,                Address offset: 0x48 */
  __IO uint32_t DR;     /*!< ADC regular data register,                   Address offset: 0x4C */
} ADC_TypeDef;
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2020-12-18
在线时间
0 小时
发表于 2020-12-18 12:08:08 | 显示全部楼层
012 发表于 2016-4-27 19:17
对呀,他是封装在一个结构体里了,但是在定义的时候没有东西, 直接就这样了,__IO uint32_t SR; 是什么 ...

不知道是不是被隐藏了,毕竟ST只要客户能够用就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 08:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表