打印
[APM32F4]

【APM32F402R Micro-EVB开发板测评】+按键控制LED

[复制链接]
162|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

了解并掌握GPIO口的使用是硬件开发的基本功,利用板载的LED与KEY可以省去配接这些器件的过程,其电路如图1所示。

图1  LED与KEY电路

要实现按键对LED的控制,需要对KEY和LED进行配置,所用到的函数为:
BOARD_LED_Config()和BOARD_BUTTON_Config()

其中,函数BOARD_LED_Config()的内容为:
void BOARD_LED_Config(BOARD_LED_T led)
{
GPIO_Config_T GPIO_ConfigStruct = {0U};
RCM_EnableAPB2PeriphClock(LED_CLK[led]);
GPIO_ConfigStruct.pin = LED_PIN[led];
GPIO_ConfigStruct.mode = GPIO_MODE_OUT_PP;
GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(LED_PORT[led], &GPIO_ConfigStruct);
LED_PORT[led]->BC = LED_PIN[led];
}

函数BOARD_BUTTON_Config()的内容为:
void BOARD_BUTTON_Config(BOARD_BUTTON_T button, BOARD_BUTTON_MODE_T mode)
{
GPIO_Config_T GPIO_ConfigStruct = {0U};
EINT_Config_T EINT_ConfigStruct = {0U};
RCM_EnableAPB2PeriphClock(BUTTON_CLK[button] | RCM_APB2_PERIPH_AFIO);
GPIO_ConfigStruct.mode = GPIO_MODE_IN_PU;
GPIO_ConfigStruct.pin = BUTTON_PIN[button];
GPIO_Config(BUTTON_PORT[button], &GPIO_ConfigStruct);
if (mode == BUTTON_MODE_EINT)
{
GPIO_ConfigEINTLine(BUTTON_PORT_SOURCE[button], BUTTON_PIN_SOURCE[button]);
EINT_ConfigStruct.line = BUTTON_EINT_LINE[button];
EINT_ConfigStruct.mode = EINT_MODE_INTERRUPT;
EINT_ConfigStruct.trigger = EINT_TRIGGER_FALLING;
EINT_ConfigStruct.lineCmd = ENABLE;
EINT_Config(&EINT_ConfigStruct);
NVIC_EnableIRQRequest(BUTTON_IRQn[button], 0x0F, 0x0F);
}
}

此外,为检测按键的状态及控制LED,还需使用的函数有:
BOARD_BUTTON_GetState()和BOARD_LED_Toggle()

函数BOARD_BUTTON_GetState()的内容为:
void BOARD_LED_Toggle(BOARD_LED_T led)
{
LED_PORT[led]->ODATA ^= LED_PIN[led];
}

函数BOARD_LED_Toggle的内容为:
uint32_t BOARD_BUTTON_GetState(BOARD_BUTTON_T button)
{
return GPIO_ReadInputBit(BUTTON_PORT[button], BUTTON_PIN[button]);
}

实现按键控制LED的主程序为:
int main(void)
{
BOARD_LED_Config(LED2);
BOARD_LED_Config(LED3);
BOARD_BUTTON_Config(BUTTON_KEY1, BUTTON_MODE_GPIO);
while (1)
{
if(BOARD_BUTTON_GetState(BUTTON_KEY1)==0)
{
BOARD_LED_Toggle(LED2);
BOARD_LED_Toggle(LED3);
}
}

}

经程序的编译和下载,该程序的功能正确,即每按一次按键,则LED灯变换一次状态。



使用特权

评论回复
沙发
HeartbeatEcho| | 2025-7-23 10:40 | 只看该作者
我看有的开发板把按键下面的电容去掉了。
这样的话需要添加软件滤波算法吗?

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2025-7-23 11:09 | 只看该作者
HeartbeatEcho 发表于 2025-7-23 10:40
我看有的开发板把按键下面的电容去掉了。
这样的话需要添加软件滤波算法吗?
...

严格时场合需要这样处理,在一般稳定的环境下可以忽略。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

508

主题

2911

帖子

39

粉丝