我们打开正点原子精英版的原理图,找到KEY,可以看到有两个按键,分别是KEY0和KEY1,按下即为低电平,所以我们可以通过读取引脚的电平判断是否按下
rt_int8_t rt_pin_read(rt_base_t pin)
读取指定引脚的当前电平
参数
pin: 引脚编号
返回
PIN_LOW 低电平
PIN_HIGH 高电平
我们接下来实现按KEY0将红灯打开,按KEY1将红灯熄灭。
代码实现如下
#include <rtthread.h>
#include <drv_common.h>
#include <rtdevice.h>
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#define RED_LED GET_PIN(B,5)
#define GREEN_LED GET_PIN(E,5)
#define KEY_0 GET_PIN(E,4)
#define KEY_1 GET_PIN(E,3)
int main(void)
{
rt_pin_mode(KEY_0, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(KEY_1, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(RED_LED, PIN_MODE_OUTPUT);
rt_pin_mode(GREEN_LED, PIN_MODE_OUTPUT);
rt_pin_write(RED_LED, PIN_HIGH);
rt_pin_write(GREEN_LED, PIN_HIGH);
while (1)
{
if(rt_pin_read(KEY_0) == PIN_LOW)
{
rt_thread_mdelay(20);
if(rt_pin_read(KEY_0) == PIN_LOW)
{
rt_pin_write(RED_LED, PIN_LOW);
}
}
if(rt_pin_read(KEY_1) == PIN_LOW)
{
rt_thread_mdelay(20);
if(rt_pin_read(KEY_1) == PIN_LOW)
{
rt_pin_write(RED_LED, PIN_HIGH);
}
}
}
//rt_pin_write(RED_LED, PIN_LOW);
//rt_pin_write(GREEN_LED, PIN_LOW);
return RT_EOK;
}