STM32按键515515使LED灯亮五下
时间: 2023-11-22 21:04:31 浏览: 104
以下是使用STM32的标准库编写的代码,实现按键按下后LED灯亮五下的功能:
```c
#include "stm32f10x.h"
void delay(uint32_t count) {
for (uint32_t i = 0; i < count; i++) {
for (volatile uint32_t j = 0; j < 6000; j++);
}
}
int main(void) {
// 初始化GPIOC和GPIOA时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN | RCC_APB2ENR_IOPAEN;
// 配置PC13为推挽输出,作为LED灯的控制引脚
GPIOC->CRH &= ~(GPIO_CRH_MODE13 | GPIO_CRH_CNF13);
GPIOC->CRH |= GPIO_CRH_MODE13_0;
// 配置PA0为上拉输入,作为按键的输入引脚
GPIOA->CRL &= ~(GPIO_CRL_MODE0 | GPIO_CRL_CNF0);
GPIOA->CRL |= GPIO_CRL_CNF0_1 | GPIO_CRL_MODE0;
GPIOA->ODR |= GPIO_ODR_ODR0;
while (1) {
if (!(GPIOA->IDR & GPIO_IDR_IDR0)) { // 判断按键是否按下
for (int i = 0; i < 5; i++) { // 循环点亮LED灯五次
GPIOC->BSRR |= GPIO_BSRR_BS13; // LED灯亮
delay(500); // 延时一段时间
GPIOC->BSRR |= GPIO_BSRR_BR13; // LED灯灭
delay(500); // 延时一段时间
}
}
}
}
```
在以上代码中,使用了一个名为`delay()`的函数来实现延时功能,函数中的`count`参数表示需要延时的时间,具体延时时间可以根据实际情况进行调整。在主函数中,使用一个`while`循环来不断检测按键是否按下,如果按下则通过循环点亮LED灯五次来实现题目要求的功能。
阅读全文