Ошибка компиляции конфликтующих типов в структуре - PullRequest
0 голосов
/ 13 февраля 2020

Я сейчас пишу свои собственные драйверы для микроконтроллера, который я хочу изучить (stm32f4). С моим кодом все шло хорошо, без ошибок компилятора, пока я не добавил заголовок драйвера в main. c

Ошибка: enter image description here

код где ошибка:

    typedef struct
{
    __vo uint32_t MODER;                    //GPIO port mode register offset: 0x00
    __vo uint32_t OTYPER;               //GPIO port output type register offset : 0x04
    __vo uint32_t OSPEEDR;              //GPIO port output speed register offset: 0x08
    __vo uint32_t PUPDR;                    //GPIO port pull-up/pull-down register offset: 0x0C
    __vo uint32_t IDR;                  //GPIO port input data register offset: 0x10
    __vo uint32_t ODR;                  //GPIO port output data register offset: 0x14
    __vo uint32_t BSRR;                 //GPIO port bit set/reset register offset: 0x18
    __vo uint32_t LCKR;                 //GPIO port configuration lock register offset: 0x1C
    __vo uint32_t AFR[2];               //GPIO alternate function low/high register offset: AF[0] low register 0x20 AF[1] high register 0x24

}GPIO_RegDef_t;

//GPIO_RegDef_t *pGPIOA = (GPIO_RegDef_t*)0x40020000U;


/***************************************************************************************
**************Reset and Clock Control RCC Register Definition Structure*****************
***************************************************************************************/

typedef struct
{
    __vo uint32_t CR;               //clock control register offset : 0x00
    __vo uint32_t PLLCFGR;          //PLL configuration register offset: 0x04
    __vo uint32_t CFGR;             //clock configuration register  offset: 0x08
    __vo uint32_t CIR;              //clock interrupt register offset: 0x0C
    __vo uint32_t AHB1RSTR;         // AHB1 peripheral reset register offset: 0x10
    __vo uint32_t AHB2RSTR;         //AHB2 peripheral reset register offset: 0x14
    __vo uint32_t RESERVED0[2];
    __vo uint32_t APB1RSTR;         //APB1 peripheral reset register offset: 0x20
    __vo uint32_t APB2RSTR;         //APB2 peripheral reset register offset: 0x24
    __vo uint32_t RESERVED1[2];
    __vo uint32_t AHB1ENR;          //AHB1 peripheral clock enable register offset: 0x30
    __vo uint32_t AHB2ENR;          //AHB2 peripheral clock enable register offset: 0x34
    __vo uint32_t RESERVED2[2];
    __vo uint32_t APB1ENR;          //APB1 peripheral clock enable register offset: 0x40
    __vo uint32_t APB2ENR;          //APB2 peripheral clock enable register offset: 0x44
    __vo uint32_t RESERVED3[2];
    __vo uint32_t AHB1LPENR;        //AHB1 peripheral clock enable in low power mode register offset: 0x50
    __vo uint32_t AHB2LPENR;        //AHB2 peripheral clock enable in low power mode register offset: 0x54
    __vo uint32_t RESERVED4[2];
    __vo uint32_t APB1LPENR;        //APB1 peripheral clock enable in low power mode register offset: 0x60
    __vo uint32_t APB2LPENR;        //APB2 peripheral clock enable in low power mode register offset: 0x64
    __vo uint32_t RESERVED5[2];
    __vo uint32_t BDCR;             //Backup domain control register offset: 0x70
    __vo uint32_t CSR;              //clock control & status register offset: 0x74
    __vo uint32_t RESERVED6[2];
    __vo uint32_t SSCGR;            //spread spectrum clock generation register offset: 0x80
    __vo uint32_t PLLI2SCFGR;       //PLLI2S configuration register offset: 0x84
    __vo uint32_t RESERVED7;
    __vo uint32_t DCKCFGR;          //Dedicated Clocks Configuration Register offset: 0x8C

}RCC_RegDef_t;

Если я правильно понимаю, ошибка говорит мне, что структуры либо объявляются с элементами, имеющими неправильные типы данных, либо структуры переопределяются позже. Что для меня странного, так как компилятор говорит, что предыдущее объявление находится в том же месте?

Любая помощь или советы по поиску ошибки были бы очень полезны, так как я не могу многое сделать, пока не решу это. Что я должен искать, чтобы помочь определить неправильный код? спасибо

...