用STM32写一个程序,按下一个按键使得LED亮,松开按键LED熄灭
时间: 2024-03-03 18:49:51 浏览: 85
好的,这个问题很简单。我会给你一个基本的程序框架,你可以根据自己的需求进行修改:
```c
#include "stm32f10x.h"
void delay_ms(uint32_t ms) // 延时函数
{
while (ms--) {
uint32_t i = 5000; // 一个大约的计数
while (i--);
}
}
int main(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // 使能GPIOC时钟
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // 使能AFIO时钟
// 配置PC13为推挽输出
GPIOC->CRH &= ~(GPIO_CRH_CNF13 | GPIO_CRH_MODE13);
GPIOC->CRH |= GPIO_CRH_MODE13_0;
// 配置PA0为浮空输入
GPIOA->CRL &= ~(GPIO_CRL_CNF0 | GPIO_CRL_MODE0);
while (1) {
if (GPIOA->IDR & GPIO_IDR_IDR0) { // 如果PA0为高电平
GPIOC->BSRR = GPIO_BSRR_BS13; // 点亮LED
} else {
GPIOC->BRR = GPIO_BRR_BR13; // 熄灭LED
}
delay_ms(10); // 延时一段时间
}
}
```
这个程序的思路是:一直循环检测PA0的电平,如果为高电平则点亮LED,否则熄灭LED,中间加了一个延时函数以减少检测频率。需要注意的是,这个程序没有加按键消抖处理,需要根据实际情况自行添加。
阅读全文