打印

新手学习请教

[复制链接]
461|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
卡拉瓦乔|  楼主 | 2020-4-13 13:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学习到自己构建库函数这里
ypedef unsigned int u32;
typedef unsigned short u16;
#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                        *(u32*)(RCC_BASE + 0x18)
/*
#define GPIOB_CRL                            *(u32*)(GPIOB_BASE + 0x00)
#define GPIOB_CRH                            *(u32*)(GPIOB_BASE + 0x04)
#define GPIOB_ODR                            *(u32*)(GPIOB_BASE + 0x0C)
*/

typedef struct
{
  u32 CRL;
u32 CRH;
u32 IDR;
u32 ODR;
u32 BSRR;
u32 BRR;
u32 LCKR;
} GPIO_TypeDef;
typedef struct
{
  u32 CR;
u32 CFGR;
u32 CIR;
u32 APB2RSTR;
u32 APB1RSTR;
u32 AHBENR;
u32 APB2ENR;
u32 APB1ENR;
u32 BDCR;
u32 CSR;
} RCC_TypeDef;
#define    GPIOB     ((GPIO_TypeDef*)GPIOB_BASE)
#define    RCC       ((RCC_TypeDef*)RCC_BASE)
结构体里是如何准确找到寄存器的地址的?一直理解不了。
原本以为是结构体里将地址区间等分的,可是把结构体里部分注释掉,还是可以点亮。

使用特权

评论回复

相关帖子

沙发
dirtwillfly| | 2020-4-14 20:58 | 只看该作者
你用的什么单片机?一般会定义一个基地址,然后根据偏移量就可以找到具体的寄存器

使用特权

评论回复
板凳
ayb_ice| | 2020-4-15 11:05 | 只看该作者
不能拿掉,拿掉后会影响后面的寄存器,不会影响前面的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

438

主题

438

帖子

0

粉丝