完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
寄存器地址名称映射
写在前面: 对于MCU,一切低层配置都是配置寄存器
sfr P0=0x08;//P0映射到地址0x08 P0=0x00//往寄存器地址0x08赋值0x00
GPIOA下的某个寄存器,挂载在GPIOA下,地址为GPIOA基地址+偏移量 GPIOA挂载在APB2总线,地址为APB2总线基地址+GPIOA偏移量 ABP2挂载加外设基地址,地址为外设基地址+ABP2偏移量 代码为: //外部总线基地址 #define PERIPH_BASE ((uint32_t)0x40000000) //APB2基地址=外部总线基地址+偏移量 #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) //GPIOA基地址=APB2基地址+偏移量 #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) //GPIOA将地址顺序分配给7个32位寄存器(结构体分配) #define GPIOA ((GPIO_TypeDef*)GPIOA_BASE) //将寄存器地址映射到7个32位寄存器,分别控制 typedef struct { __IO unit32_t CRL; __IO unit32_t CRH; __IO unit32_t ODR; __IO unit32_t IDR; __IO unit32_t BSRR; __IO unit32_t BRR; __IO unit32_t LCKR; }GPIO_TypeDef; 在STM32手册中:GPIO寄存器地址映像如下: 图中前两行写明寄存器及偏移值 综上所述 只有外围设备基地址是固定的,其他端口,外围设备总线,寄存器……等地址均由具体的地址偏移量层层递推而来(就如同此关系:外围设备基地址->外围设备总线->端口->寄存器)。 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
597浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:19 , Processed in 1.577598 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号