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) ;