PSoc™62开发板之按键控制

实验目的

使用板子上的用户自定义按键控制LED亮灭,当按键按下时LED亮起来,不按下则不亮

电路图

按键电路

板子有两组按键,分别是系统复位按键和用户自定义按键,这里我们选择控制用户自定义按键,可以看到MCU_USER_BTN是通过上拉电阻接入电源的

按键引脚图

MCU_USER_BTN对应的是引脚P6.2

LED电路

板子有两个自主控制的LED,为绿色,通过上拉方式接入GPIO,MCU_USER_LED1对应P0.0

程序设计

以下程序用于使用用户自定义按键控制LED亮灭

#include <rtthread.h>
#include <rtdevice.h>

#include "drv_gpio.h"

#define LED0_PIN     GET_PIN(0, 0)
#define USER_KEY GET_PIN(6, 2)

void irq_callback()
{
    int val = rt_pin_read(USER_KEY);
    if(val == 1) {
        rt_pin_write(LED0_PIN, PIN_HIGH);
    }
    else {
        rt_pin_write(LED0_PIN, PIN_LOW);
    }
}

int main(void)
{
    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(USER_KEY, PIN_MODE_INPUT_PULLUP);
    rt_pin_attach_irq(USER_KEY, PIN_IRQ_MODE_RISING_FALLING, irq_callback, RT_NULL);
    rt_pin_irq_enable(USER_KEY, PIN_IRQ_ENABLE);
    return 0;
}

GET_PIN宏是HAL_Drivers中一个用于访问指定编号GPIO口的宏,在头文件drv_gpio.h

rt_pin_mode是RT-Thread提供的引脚模式设置接口

rt_pin_write是RT-Thread提供的引脚高低电平设置接口

实验效果

可以看到当按键按下时,绿色LED(位于Infineon logo下方)亮起来,恢复时LED不亮

 

阅读剩余
THE END