C++ 下面的oop结构是什么?

C++ 下面的oop结构是什么?,c++,oop,embedded,var,C++,Oop,Embedded,Var,在下面的代码中,变量在哪里,变量类型在哪里?我们这里有正在更改的寄存器的属性 如果它是面向对象的,那么我们需要一个对象名来更改它的属性 在这里,我看不到类型在哪里,变量名在哪里,以及我们如何确切地更改其内部属性 #include <stm32f0xx.h> int main(void) { RCC->AHBENR|=RCC_AHBENR_GPIOCEN ; GPIOC->MODER|=GPIO_MODER_MODERG_O ; } #包括 内部主(空) { R

在下面的代码中,变量在哪里,变量类型在哪里?我们这里有正在更改的寄存器的属性

如果它是面向对象的,那么我们需要一个对象名来更改它的属性

在这里,我看不到类型在哪里,变量名在哪里,以及我们如何确切地更改其内部属性

#include <stm32f0xx.h>

int main(void)
{
  RCC->AHBENR|=RCC_AHBENR_GPIOCEN ;
  GPIOC->MODER|=GPIO_MODER_MODERG_O ;
}
#包括
内部主(空)
{
RCC->AHBENR |=RCC_AHBENR|u GPIOCEN;
GPIOC->MODER |=GPIO_MODER_Modergo;
}

这与OOP无关,它只是一个结构成员分配<代码>RCC和
GPIOC
定义如下:

其中,
RCC_BASE
GPIOC_BASE
在与绝对地址相同的头中定义,
RCC_TypeDef
GPIO_TypeDef
是结构类型,例如:

typedef struct
{
  __IO uint32_t MODER;        /*!< GPIO port mode register,                                  Address offset: 0x00 */
  __IO uint16_t OTYPER;       /*!< GPIO port output type register,                           Address offset: 0x04 */
  uint16_t RESERVED0;         /*!< Reserved,                                                                 0x06 */
  __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 uint16_t IDR;          /*!< GPIO port input data register,                            Address offset: 0x10 */
  uint16_t RESERVED1;         /*!< Reserved,                                                                 0x12 */
  __IO uint16_t ODR;          /*!< GPIO port output data register,                           Address offset: 0x14 */
  uint16_t RESERVED2;         /*!< Reserved,                                                                 0x16 */
  __IO uint32_t BSRR;         /*!< GPIO port bit set/reset registerBSRR,                     Address offset: 0x18 */
  __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 uint16_t BRR;          /*!< GPIO bit reset register,                                  Address offset: 0x28 */
  uint16_t RESERVED3;         /*!< Reserved,                                                                 0x2A */
}GPIO_TypeDef;
决心:

((RCC_TypeDef*)0x40021000)->AHBENR |= ((uint32_t)0x00080000) ;
其中,
0x40021000
是RCC的基址,
AHBENR
是指设置GPIOC启用标志的RCC寄存器


stm32f0xx.h为每个外围设备的寄存器集定义结构,然后定义将结构映射到每个外围设备所在地址的宏

这与OOP无关,它只是一个结构成员赋值<代码>RCC和
GPIOC
定义如下:

其中,
RCC_BASE
GPIOC_BASE
在与绝对地址相同的头中定义,
RCC_TypeDef
GPIO_TypeDef
是结构类型,例如:

typedef struct
{
  __IO uint32_t MODER;        /*!< GPIO port mode register,                                  Address offset: 0x00 */
  __IO uint16_t OTYPER;       /*!< GPIO port output type register,                           Address offset: 0x04 */
  uint16_t RESERVED0;         /*!< Reserved,                                                                 0x06 */
  __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 uint16_t IDR;          /*!< GPIO port input data register,                            Address offset: 0x10 */
  uint16_t RESERVED1;         /*!< Reserved,                                                                 0x12 */
  __IO uint16_t ODR;          /*!< GPIO port output data register,                           Address offset: 0x14 */
  uint16_t RESERVED2;         /*!< Reserved,                                                                 0x16 */
  __IO uint32_t BSRR;         /*!< GPIO port bit set/reset registerBSRR,                     Address offset: 0x18 */
  __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 uint16_t BRR;          /*!< GPIO bit reset register,                                  Address offset: 0x28 */
  uint16_t RESERVED3;         /*!< Reserved,                                                                 0x2A */
}GPIO_TypeDef;
决心:

((RCC_TypeDef*)0x40021000)->AHBENR |= ((uint32_t)0x00080000) ;
其中,
0x40021000
是RCC的基址,
AHBENR
是指设置GPIOC启用标志的RCC寄存器


stm32f0xx.h为每个外围设备的寄存器集定义结构,然后定义将结构映射到每个外围设备所在地址的宏

您有两个全局对象,
RCC
GPIOC
,在
stm32fox.h
中声明。您好,托马斯,RCC和GPIOC的类型是什么?它们是什么东西?我不知道。您没有发布
stm32fox.h
的内容,我知道这些对象是在stm32fox中声明的。多谢各位much@rocko445:只需打开标题并查看。但是它是stm32f0xx.h而不是stm32fox.hy您有两个全局对象,
RCC
GPIOC
,在
stm32fox.h
中声明,您好托马斯,RCC和GPIOC的类型是什么?它们是什么东西?我不知道。您没有发布
stm32fox.h
的内容,我知道这些对象是在stm32fox中声明的。多谢各位much@rocko445:只需打开标题并查看。但是,它是stm32f0xx.h而不是stm32fox.h
((RCC_TypeDef*)0x40021000)->AHBENR |= ((uint32_t)0x00080000) ;