寄存器编写按键控制LED
1、原理图
(1)按键使用PA0引脚控制,LED使用PB1控制。
(2)按键按下LED点亮,松开LED熄灭。


2、芯片手册
2.1、涉及模块基地址
- 0x4002 3800 :RCC基地址
- 0x4002 0000:GPIOA基地址
- 0x4002 0400:GPIOB基地址
2.2、使能GPIOA、GPIOB
(1)GPIO使能寄存器地址:0x4002 3800 + 0x30

2.3、配置GPIO模式
- PB1设置为输出模式;
- PA0设置为输入模式。

2.4、GPIO输出1/0

2.5、读引脚值

3、程序设计
#include "stdio.h"int main()
{unsigned int *pReg = NULL;unsigned int *pRegA = NULL;unsigned int *pRegB = NULL;/* 使能GPIOA、GPIOB时钟 */pReg = (unsigned int *)(0x40023800 + 0x30);*pReg |= (0x03 << 0);/* 配置PB1为输出模式 */pRegB = (unsigned int *)(0x40020400 + 0x00);*pRegB |= (0x01 << 2);/* 配置PA0为输入模式 */pRegA = (unsigned int *)(0x40020000 + 0x00);*pRegA &= (~(0x03 << 0));pRegB = (unsigned int *)(0x40020400 + 0x18);pRegA = (unsigned int *)(0x40020000 + 0x10);while(1){if ((*pRegA &(1<<0)) == 1){*pRegB |= (0x01 << 17); /* PB1输出0, 点亮 */ }else{*pRegB |= (0x01 << 1); /* PB1输出1, 熄灭 */} }
}
