(APT_Pi)@1.点灯大师

原理图分析引脚

 

 

 

 

由此可见:

LED(blue)为PI8(低电平触发)                    LED(red)为PC15 (低电平触发)            usekey为PH4  高为按下 (下降沿触发)

常见引脚函数

函数  描述
rt_pin_mode()设置引脚模式
rt_pin_write() 设置引脚电平
rt_pin_read() 读取引脚电平
rt_pin_attach_irq() 绑定引脚中断回调函数
rt_pin_irq_enable()使能引脚中断
rt_pin_detach_irq()脱离引脚中断回调函数
GET_PIN(port, pin) 获取引脚编号(RT-Thread 提供的引脚编号需要和芯片的引脚号区分开来)

rt_pin_attach_irq(rt_int32_t pin, rt_uint32_t mode,void (*hdr)(void *args), void  *args)

  事列:  rt_pin_attach_irq(key1_PIN, PIN_IRQ_MODE_FALLING, flip_led, RT_NULL);

如果key1发生,下降沿,执行flip_led 

启用引脚中断:

 

 

流水灯代码:

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

#define LED_PIN GET_PIN(I, 8)
#define LED_PIN1 GET_PIN(C, 15)


int main(void)
{
    rt_uint32_t count = 1;

    rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(LED_PIN1, PIN_MODE_OUTPUT);

    while(count++)
    {
        rt_thread_mdelay(500);
        rt_pin_write(LED_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED_PIN1, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED_PIN, PIN_LOW);
        rt_thread_mdelay(500);
        rt_pin_write(LED_PIN1, PIN_LOW);
    }
    return RT_EOK;
}

按键点灯大师

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


#define LOG_TAG "button_app"
#define LOG_LVL LOG_LVL_DBG
#include <ulog.h>


#define LED1_PIN GET_PIN(I, 8)
#define key1_PIN GET_PIN(H, 4)



//按键ISR
void flip_led()
{
    //读取LED_PIN_B引脚电平
    int status = rt_pin_read(LED1_PIN);
    //翻转LED_PIN_B引脚电平
    rt_pin_write(LED1_PIN, !status);
    //ISR中打印信息
    LOG_D("Button is pushed!\r\n");
}



int main(void)
{
    //设置LED_PIN_B引脚为输出模式
    rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
    //设置USER_KEY引脚为输入模式
    rt_pin_mode(key1_PIN, PIN_MODE_INPUT);
    //绑定USER_KEY引脚中断回调函数
    rt_pin_attach_irq(key1_PIN, PIN_IRQ_MODE_FALLING, flip_led,RT_NULL);
    //PIN_IRQ_MODE_FALLING为下降沿
    //使能USER_KEY引脚中断
    rt_pin_irq_enable(key1_PIN, PIN_IRQ_ENABLE);
    //开机将LED_PIN_B引脚设为高。
    //rt_pin_write(LED1_PIN, PIN_HIGH);

    return RT_EOK;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静海彭于晏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值