STM32流水灯
1STM32F103系列芯片的地址映射和寄存器映射原理
STM32 的外设地址映射
片上外设区分为三条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB1挂载低速外设,APB2 和AHB 挂载高速外设。相应总线的最低地址我们称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址。其中APB1 总线的地址最低,片上外设从这里开始,也叫外设基地址。
寄存器映射
学过C语言的同学都知道指针,我们要想取地址中的值必须利用指针,比如GPIOA_OTYPER寄存器的偏移地址为0x04,且GPIOA内存块的首地址为0X4000 0000,那么我们就可以利用下面的方式来取寄存器中的值。
首先我们知道GPIOA_OTYPER寄存器的地址为(0x04+0x4000 0000),这样写还不够,因为编译器并不知道这是地址,所以我们利用指针将其转成地址(unsigned int )(0x04+0x4000 0000),最后我们再利用指针(unsigned int *)(0x04+0x4000 0000)就可以读写寄存器了。
#define GPIOA_OTYPER *(unsigned int *)(0x04+0x4000 0000)这就是寄存器映射。
寄存器映射:给具有特殊功能的内存块的首地址取一个具有特殊意义名称的过程就叫做寄存器映射
2GPIO端口的初始化设置三步骤
使能GPIO的时钟
初始化GPIO引脚至相应的模式
控制GPIO引脚输出高低电平