stm32之寄存器点灯

stm32之寄存器点灯

一、以GPIOC13为例点灯三步骤:
1、使能GPIOC13所在的时钟
2、配置GPIOC13的模式(端口配置寄存器)
3、设置GPIOC13的低电平/高点平(输出数据寄存器)

二、根据stm32中文手册配置寄存器

1、使能GPIOC13所在的时钟:
stm32之寄存器点灯_第1张图片
GPIOC13S是在APB2时钟

对APB2时钟进行配置使能
找到起始地址:0x4002 1000

stm32之寄存器点灯_第2张图片
在这里插入图片描述
偏移地址:0x18

stm32之寄存器点灯_第3张图片
GPIOC时钟在第4位;按位操作

   //1、使能GPIOC时钟
   *(unsigned int*)0x4002 1018 | = 0x01 << 4;

2、配置GPIOC13的模式(端口配置寄存器)

GPIOC的起始地址:0x4001 1000

stm32之寄存器点灯_第4张图片
使用
CNF:推挽输出模式,
MODE:最大速度10MHZ
位操作 0001 移20位

偏移地址:0x04

*(unsigned int*)0x4001 1004 | = 0x01 << 20;

3、设置GPIOC13的低电平/高点平(输出数据寄存器)
GPIOC13的起始地址:0x4001 1000
GPIOC13的偏移地址::0xCh
stm32之寄存器点灯_第5张图片

  *(unsigned int *)0x400110ch &= ~(0x01 << 13);

点灯代码:

int main(void)
{
	  //1、使能GPIOC时钟
	 *(unsigned int*)0x4002 1018 |= 0x01 << 4;
	 //2、配置GPIOC13位输出模式
	 *(unsigned int*)0x4001 1004 |= 0x01 << 20;
	 //3、将GPIOC13引脚设置低电平
	 *(unsigned int *)0x400110ch &= ~(0x01 << 13);
}

你可能感兴趣的:(stm32)