54 lines
1.6 KiB
C
54 lines
1.6 KiB
C
/*
|
|
* 程序清单: 这是一个PIN 设备使用例程
|
|
* 例程导出了pin_led_sample 命令到控制终端
|
|
* 命令调用格式: pin_led_sample
|
|
* 程序功能: 通过按键控制led 对应引脚的电平状态控制led
|
|
*/
|
|
#include <rtthread.h>
|
|
#include <rtdevice.h>
|
|
#include "test_config.h"
|
|
|
|
#ifdef GPIO_DEMO
|
|
#define LED_PIN_NUM 24
|
|
#define LED1_PIN_NUM 26
|
|
#define KEY4_PIN_NUM 2
|
|
#define KEY3_PIN_NUM 3
|
|
|
|
void led_on(void *args) {
|
|
rt_kprintf("turn on led!\n");
|
|
rt_pin_write(LED_PIN_NUM, PIN_HIGH);
|
|
}
|
|
|
|
void led_off(void *args) {
|
|
rt_kprintf("turn off led!\n");
|
|
rt_pin_write(LED_PIN_NUM, PIN_LOW);
|
|
}
|
|
|
|
static void pin_led_sample(void) {
|
|
/* led 引脚为输出模式*/
|
|
rt_pin_mode(LED_PIN_NUM, PIN_MODE_OUTPUT);
|
|
/* 默认低电平*/
|
|
rt_pin_write(LED_PIN_NUM, PIN_HIGH);
|
|
/* 按键0引脚为输入模式*/
|
|
rt_pin_mode(KEY4_PIN_NUM , PIN_MODE_INPUT_PULLUP);
|
|
/* 绑定中断, 下降沿模式, 回调函数名为beep_on */
|
|
rt_pin_attach_irq(KEY4_PIN_NUM , PIN_IRQ_MODE_FALLING , led_on, RT_NULL);
|
|
/* 使能中断*/
|
|
rt_pin_irq_enable(KEY4_PIN_NUM , PIN_IRQ_ENABLE);
|
|
/* 按键1引脚为输入模式*/
|
|
rt_pin_mode(KEY3_PIN_NUM , PIN_MODE_INPUT_PULLUP);
|
|
/* 绑定中断, 下降沿模式, 回调函数名为led_off */
|
|
rt_pin_attach_irq(KEY3_PIN_NUM , PIN_IRQ_MODE_FALLING , led_off, RT_NULL);
|
|
/* 使能中断*/
|
|
rt_pin_irq_enable(KEY3_PIN_NUM , PIN_IRQ_ENABLE);
|
|
|
|
/* led 引脚为输出模式*/
|
|
rt_pin_mode(LED1_PIN_NUM, PIN_MODE_OUTPUT);
|
|
/* 默认低电平*/
|
|
rt_pin_write(LED1_PIN_NUM, PIN_HIGH);
|
|
}
|
|
/* 导出到msh 命令列表中*/
|
|
MSH_CMD_EXPORT(pin_led_sample , pin led sample);
|
|
#endif
|
|
|