STM32内部寄存器、储存器、C对寄存器的封装
STM32的地址空间可以分为8个,分别是Block0~Block7,其中Block2是应用于外设的存储器,也是主要学习的内容。
存储器映射
存储器的地址由厂商或者用户分配,给存储器分配地址就叫做存储器映射。
Block0 主要用于设计片内的 FLASH。
Block1 用于设计片内的 SRAM。
Block2 用于设计片内的外设,根据外设的总线速度不同,Block 被分成了 APB 和 AHB 两部分,其中 APB 又被分为 APB1 和 APB2。
寄存器映射
通过单片机来控制外设时,其实就是对相应的寄存器进行控制,或者是说,对相应的地址对应的单元进行控制,然而,想要记住每个单元的地址是很难的,不如给每个地址起个名字,就叫“寄存器”吧。
- 首先来看一下,怎么直接操作地址来控制内存单元。GPIO是外设中的一种,并且在
STM32F103ZET6芯片中共GPIOA~GPIBG共七组,以GPIOB为例,控制GPIOB输出高电平,GPIOB输出寄存器ODR的地址为0x40010C0C。
//因为在计算机看来,0x40010C0C只是一串数据
//需要我们告诉他这是地址
//通过(unsigned int*)(0x4001 0C0C),将0x4001 0C0C,转换成指针变量
//而0x4001 0C0C正是指针变量存储的数据
*(unsigned int*)(0x4001 0C0C) =