stm32f103vet6寄存器操作按键点灯
时间: 2024-01-25 15:03:38 浏览: 209
以下是基于STM32F103VET6的寄存器操作代码,实现按键控制LED灯的亮灭:
```c
#include "stm32f10x.h"
void delay(uint32_t time) { // 延时函数
while(time--);
}
int main() {
RCC->APB2ENR |= 1<<4; // 使能PORTC时钟
RCC->APB2ENR |= 1<<2; // 使能PORTA时钟
// 配置PC13为推挽输出模式
GPIOC->CRH &= ~(0x0f << 20);
GPIOC->CRH |= 0x03 << 20;
// 配置PA0为上拉输入模式
GPIOA->CRL &= ~(0x0f << 0);
GPIOA->CRL |= 0x08 << 0;
while(1) {
if((GPIOA->IDR & 0x01) == 0) { // 检测按键是否按下
GPIOC->BSRR = 1<<13; // 点亮LED灯
} else {
GPIOC->BRR = 1<<13; // 关闭LED灯
}
delay(100000); // 延时一段时间
}
}
```
在此代码中,我们使用了STM32的寄存器操作来控制GPIO口的状态。其中,通过配置GPIO口的模式和使用相应的位操作来实现按键的检测和LED灯的控制。需要注意的是,本代码中的端口和引脚号仅供参考,具体配置需要根据实际情况进行调整。
阅读全文