基地址文件

Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xe.h

代码的地址结构基本上是一个base地址+偏移地址

但是也有例外,F103VET6外设的基地址是:

/*!< Peripheral memory map */
#define APB1PERIPH_BASE       PERIPH_BASE
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x00010000U)
#define AHBPERIPH_BASE        (PERIPH_BASE + 0x00020000U)

看上去AHBPERIPH_BASE就是AHB总线的首地址,实际不是!

基地址文件

0x4001 8000才是AHB的首地址,代码中为了计算方便设成了2000整数,对SDIO做例外处理:

基地址文件