K2按键控制led灯,第一次全亮第二遍流水灯,第三次按全灭,循环往复arm
时间: 2023-07-02 19:18:19 浏览: 144
1、(通用IO口方式)实现LED灯全亮全灭闪烁.zip_LED闪烁_among6xh_io口灯全亮_led灯_valuedmf
5星 · 资源好评率100%
好的,这是一个很典型的嵌入式系统应用场景。我可以为您提供一些思路和代码实现上的建议。
首先,您需要明确您的硬件平台和开发环境。假定您使用的是 ARM Cortex-M 系列处理器,可以选择使用 Keil MDK 或者 IAR Embedded Workbench 作为开发环境。接着,您需要了解您所使用的开发板的硬件资源,比如 LED 灯所连接的 IO 口等。
基于您的需求,您可以写出如下的代码实现:
```c
#include "stm32f4xx.h" // 假定您使用的是 STM32F4 系列处理器
#include "delay.h" // 延时函数库,需要自己实现
int main()
{
GPIO_InitTypeDef GPIO_InitStruct;
// 启用 GPIOA 时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
// 配置 PA1 为输入模式,上拉输入
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
// 配置 PA2 为输出模式
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStruct);
while(1)
{
// 判断按键是否按下
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == RESET)
{
// 第一次按下,全亮
GPIO_SetBits(GPIOA, GPIO_Pin_2);
delay_ms(1000); // 延时 1s
}
else
{
// 第二次按下,流水灯
GPIO_ResetBits(GPIOA, GPIO_Pin_2);
GPIO_SetBits(GPIOA, GPIO_Pin_3);
delay_ms(1000); // 延时 1s
GPIO_ResetBits(GPIOA, GPIO_Pin_3);
GPIO_SetBits(GPIOA, GPIO_Pin_4);
delay_ms(1000); // 延时 1s
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
GPIO_SetBits(GPIOA, GPIO_Pin_5);
delay_ms(1000); // 延时 1s
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
}
// 第三次按下,全灭
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == RESET)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_2);
GPIO_ResetBits(GPIOA, GPIO_Pin_3);
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
delay_ms(1000); // 延时 1s
}
}
}
```
这是一份基础的代码实现,您可以根据您的实际需求进行修改。需要注意的是,延时函数库需要您自己实现,这里提供一个简单的实现例子:
```c
void delay_us(uint32_t n)
{
uint32_t i;
for(i = 0; i < n; i++)
{
__NOP();
}
}
void delay_ms(uint32_t n)
{
uint32_t i;
for(i = 0; i < n; i++)
{
delay_us(1000);
}
}
```
希望这些信息对您有所帮助,如果您有其他问题可以继续向我提问。
阅读全文