寄存器地址

STM32F103C8T6是M3内核,地址空间从0x00000000到0xffffffff,其中片上外设的地址从0x40000000到0x5fffffff,其中常用的GPIO就属于片上外设。各个片上外设的地址在该范围内依次细分。

其中常用的寄存器地址:

图片描述

针对PC13这个IO口而言,它的基地址(起始地址)为0x4001 1000,第二个寄存器的偏移地址是0x04,所以第二个寄存器的地址为0x4001 1000 + 0x04,即0x4001 1004

所谓STM32,即能够以32为一个单位,STM32单片机可以同时处理32位的数据,这个可以从下面的寄存器文档中可以体现,设置下面的寄存器就需要写入32位的数据。

图片描述

👆端口配置低寄存器,顾名思义,其配置的是GPIO0-GPIO7,对应的还有配置高寄存器,设置PC13就需要设置端口配置高寄存器。

总结:

  • 设置GPIO的寄存器,首先要确定其基地址
  • 以PC13为例子
  • 首先需要确定GPIOC的基地址:为0x4001 1000
  • 其次,根据需要设置GPIOC对应的IO口:低8位——GPIOC0到GPIO7,高8位——GPIOC8到GPIO15

STM32为了让用户更好的掌握单片机功耗,所以对每个外设的时钟都设置了开关,可以精确控制外设,关闭不需要的功能以免产生功耗。51单片机的外设使用的是一个时钟,没有给外设设置单独的开关,所以不需要设置外设时钟。因此在使用对应的外设时,就必须先打开对应的外设时钟。

图片描述