stm32f103c8t6实现按键控制LED流水代码
时间: 2024-04-25 10:20:04 浏览: 129
STM32F103C8T6开发板实验例程:按键操作实验程序源代码.rar
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,它具有丰富的外设和强大的性能,常用于嵌入式系统开发。下面是一个简单的示例代码,演示如何使用按键控制LED流水灯:
```c
#include "stm32f10x.h"
#define LED_PIN GPIO_Pin_13
#define KEY_PIN GPIO_Pin_0
void GPIO_Configuration(void);
void Delay(__IO uint32_t nCount);
int main(void)
{
GPIO_Configuration();
while (1)
{
if (GPIO_ReadInputDataBit(GPIOA, KEY_PIN) == 0) // 检测按键是否按下
{
GPIO_SetBits(GPIOC, LED_PIN); // 点亮LED
Delay(500000); // 延时一段时间
GPIO_ResetBits(GPIOC, LED_PIN); // 熄灭LED
Delay(500000); // 延时一段时间
}
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
// 配置LED引脚为推挽输出
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// 配置按键引脚为上拉输入
GPIO_InitStructure.GPIO_Pin = KEY_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void Delay(__IO uint32_t nCount)
{
for (; nCount != 0; nCount--);
}
```
以上代码中,我们使用了GPIOA的第0号引脚作为按键输入,GPIOC的第13号引脚作为LED输出。在主循环中,我们不断检测按键是否按下,如果按下则点亮LED并延时一段时间,然后熄灭LED并再次延时。这样就实现了按键控制LED流水的效果。
阅读全文