独闷闷网
标题: 【mk_欣驰】STM32学习笔记—地址映射以及位绑定 [打印本页]
作者: mk_欣驰 时间: 2014-9-8 21:48
标题: 【mk_欣驰】STM32学习笔记—地址映射以及位绑定
本帖最后由 mk_欣驰 于 2014-9-8 22:17 编辑
1、片上外设地址
0x40000000~0x5FFFFFFF(512MB)
2、外设基地址 (PERIPH_BASE)
PERIPH_BASE=0x4000 0000
3、总线基地址 (APB2PERIPH_BASE)
总线基地址 = 外设基地址+偏移地址
AHB:AHBPERIPH_BASE = PERIPH_BAS+ 偏移地址
=0x4000 0000+0x1 800= 0x40018000
APB2:APB2PERIPH_BASE = PERIPH_BAS+ 偏移地址
= 0x4000 0000+0x1 0000 = 0x4001 0000
APB1: APB1PERIPH_BASE = PERIPH_BAS+ 偏移地址
=0x4000 0000+0x0 0000 = 0x4000 0000
| | | 总线基地址相对外设基地址
(0x4000 000)的偏移 |
| | | |
0x4001 0000 - 0x4001 7FFF | | | |
| | | |
4、寄存器组基地址
寄存器组基地址 = 总线外设的基地址 + 相总线基地址的偏移量
GPIOA端口的寄存器组的基地址: GPIOA_BASE
= APB2PERIPH_BASE + 0x0800
=0x4001 0000+0x0800=0x4001 0800
GPIOB端口的寄存器组的基地址:GPIOB_BASE
= APB2PERIPH_BASE + 0x0C00
=0x4001 0000+0x0800=0x4001 0C00
GPIOC端口的寄存器组的基地址: GPIOC_BASE
= APB2PERIPH_BASE + 0x1000
=0x4001 0000+0x0800=0x4001 1000
.............
5、端口配置寄存器地址
端口配置寄存器地址=寄存器组基地址+偏移地址
(1)端口输入数据寄存器(GPIOx_IDR) (x=A..E)
IDR偏移地址:
IDR0~7偏移地址=0X08
IDR8~15偏移地址=0X09
IDR16~23偏移地址=0X0A
IDR24~31偏移地址=0X0B
GPIOA端口输入数据寄存器: GPIOA_IDR
= GPIOA_BASE + 0x08/0x09/0x0A/0x0B
=0x4001 0800+0x08/0x09/0x0A/0x0B
=0x4001 0808/9/A/B
GPIOB端口输入数据寄存器: GPIOB_IDR
= GPIOB_BASE + 0x08/0x09/0x0A/0x0B
=0x4001 0C00+0x08/0x09/0x0A/0x0B
=0x4001 0C08/9/A/B
GPIOC端口输入数据寄存器: GPIOC_IDR
= GPIOC_BASE + 0x08/0x09/0x0A/0x0B
=0x4001 1000+0x08/0x09/0x0A/0x0B
=0x4001 1008/9/A/B
.............
(2)端口输出数据寄存器(GPIOx_ODR) (x=A..E)
ODR偏移地址:
ODR0~7偏移地址=0X0C
ODR8~15偏移地址=0X0D
ODR16~23偏移地址=0X0E
ODR24~31偏移地址=0X0F
GPIOA端口输出数据寄存器: GPIOA_ODR
= GPIOA_BASE + 0x0C/0x0D/0x0E/0x0F
=0x4001 0800+0x0C/0x0D/0x0E/0x0F
=0x4001 080C/D/E/F
GPIOB端口输出数据寄存器: GPIOB_ODR
= GPIOB_BASE + 0x0C/0x0D/0x0E/0x0F
=0x4001 0C00+0x0C/0x0D/0x0E/0x0F
=0x4001 0C0C/D/E/F
GPIOC端口输出数据寄存器: GPIOC_ODR
= GPIOC_BASE + 0x0C/0x0D/0x0E/0x0F
=0x4001 1000+0x0C/0x0D/0x0E/0x0F
=0x4001 100C/D/E/F
.............
另附两张表:
新人发帖,难免出错,敬请指教
欢迎各位STM32爱好者一起探讨
————欣驰 为您奉献
qq 2452679951
作者: jianhong_wu 时间: 2014-9-9 06:00
很好,感谢分享。
欢迎光临 独闷闷网 (http://www.dumenmen.com/) |
Powered by Discuz! X3.2 |