目标:点亮接在STM32的PC13脚的LED灯。
一、无名字寄存器方式
不是通过名字来访问寄存器,而是用寄存器的地址去访问,所以首先把地址摆出:
1、打开PC13对应的时钟
红框中RCC的APB2外设时钟使能寄存器RCC_APB2ENR,其偏移地址是0X18,那么地址是
0X40021000+0X18=0X40021018
RCC_APB2ENR
把其中的第4位置1,使能开启PC(GPIOC)的时钟
*(unsigned int*) 0x40021018 |=(1<<4);
2、配置PC13端口
对应寄存器组所在位置,基地址是0X40011000
(1)设置GPIOC端口配置寄存器,使PC13为输出模式
GPIOC端口配置寄存器分为——低GPIOC_CRL,偏移地址0X00,负责第0-7引脚
——高GPIOC_CRH,偏移地址0X04,负责第8-15引脚
所以PC13应用端口配置高寄存器 GPIOC_CRH
配置方法如图示:
分为8组,每组4位
MODE13选01, CNF13选00,这四位二进制数为0001。采用移位的方法,移13-8=5组,4*5=20位。
*(unsigned int*)(0x40011000+0x04)&=~(0x0F<<(4*5)); //把13组清零
*(unsigned int*)(0x40011000+0x04)|=(1<<(4*5)); //把13组置为0001
(2)设置端口输出寄存器GPIOC_ODR,使PC13输出低或高电平,点亮或熄灭LED灯
*(unsigned int*)0x4001100C &= ~(1<<13);//配置输出低电平, 点亮LED
*(unsigned int*)0x4001100C |= (1<<13);//配置输出高电平
处理过程是,开启相关端口的生命跳动时钟——确定有关引脚的角色和模式——工作。