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

2019-07-20 20:31发布

比如说下面的第一个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;


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
Fighting_Tao
1楼-- · 2019-07-21 01:56
每个寄存器后面不是都有备注偏移地址吗,再去stm32f4xx.h查基地址,然后基地址加偏移地址就是他的地址了。
012
2楼-- · 2019-07-21 04:33
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;?????
Fighting_Tao
3楼-- · 2019-07-21 09:30
 精彩回答 2  元偷偷看……
012
4楼-- · 2019-07-21 14:22
__IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
就像上面这样定义,然后使用是直接就ADC->SR;  ADC定义的地址我是找到了,但是SR直接就定义,没说明SR是多少,那它怎么知道要到哪里去????它是不是应该定义为__IO uint32_t SR=0x00;?????
  

是不是我的问题大家理解不了???
Fighting_Tao
5楼-- · 2019-07-21 14:31
012 发表于 2016-4-19 16:47
__IO uint32_t SR;     /*!< ADC status register,                         Address offset: 0x00 */
就 ...

封装在一个结构体里面了啊,你要用就直接对结构体成员进行操作就好啦
012
6楼-- · 2019-07-21 16:34
 精彩回答 2  元偷偷看……

一周热门 更多>