标题: stm32自己写库函数,报错GPIO没有定义 [打印本页]

作者: 教教我单片机把    时间: 2023-11-20 15:54
标题: stm32自己写库函数,报错GPIO没有定义
库函数:
#define PERIPH_BASE          ((unsigned int)0x40000000)
#define APB1PERIPH_BASE       PERIPH_BASE   
#define APB2PERIPH_BASE       (PERIPH_BASE+0x10000)   
#define AHBPERIPH_BASE       (PERIPH_BASE+0x20000)   
#define RCC_BASE             (AHBPERIPH_BASE+0x1000)
#define GPIOB_BASE           (APB2PERIPH_BASE+0x0C00)
#define RCC_APB2ENR           *(unsigned int*)(RCC_BASE+0x18)
#define GPIOB     ((GPIO_TypeDef*)GPIOB_BASE)
typedef unsigned int   uint32_t;
typedef unsigned short uint16_t;
typedef struct
{ uint32_t CRL;
        uint32_t CRH;
        uint32_t IDR;
        uint32_t ODR;
        uint32_t BSRR;
        uint32_t BRR;
        uint32_t LCKR;
}
GPIO_Typedef;

主函数:
#include "stm32f10x.h"

int main(void)
{
       
GPIOB->ODR |=((1)<<(4*0));
        //打开GPIOB端口时钟
RCC_APB2ENR |= ((1)<< 3 );


}
void SystemInit()
{
        //do nothing
}  



报错main.c(6): error:  #20: identifier "GPIO_TypeDef" is undefined   
这是什么情况?库函数编译没有错,主函数里加入GPIOB就报错,时钟是对的

作者: carpcarey    时间: 2023-11-21 14:16
库函数:
#define PERIPH_BASE          ((unsigned int)0x40000000)
#define APB1PERIPH_BASE       PERIPH_BASE   
#define APB2PERIPH_BASE       (PERIPH_BASE+0x10000)   
#define AHBPERIPH_BASE       (PERIPH_BASE+0x20000)   
#define RCC_BASE             (AHBPERIPH_BASE+0x1000)
#define GPIOB_BASE           (APB2PERIPH_BASE+0x0C00)
#define RCC_APB2ENR           *(unsigned int*)(RCC_BASE+0x18)
typedef unsigned int   uint32_t;
typedef unsigned short uint16_t;
typedef struct
{ uint32_t CRL;
        uint32_t CRH;
        uint32_t IDR;
        uint32_t ODR;
        uint32_t BSRR;
        uint32_t BRR;
        uint32_t LCKR;
}
GPIO_Typedef;#define GPIOB     ((GPIO_Typedef*)GPIOB_BASE)//此处大小写不对 不应该是GPIO_TypeDef

作者: yzwzfyz    时间: 2023-11-21 15:50
诚如是,自己依CPU手册地址,补充定义一下即可。
作者: 金玉之食    时间: 2023-11-21 16:58
自己注意一下大小写。结构体定义是:GPIO_Typedef,库函数中:GPIO_TypeDef




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1