成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 正文
    • 一、前言
    • 二、編程講解
    • 三、項目實戰(zhàn)
  • 推薦器件
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

RT-Thread零基礎快速入門第5講——外部中斷

2024/03/26
2392
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

一、前言

這一講,我要講的是外部中斷,也不知道是太簡單了還是沒有人用,我沒找到比較完整的關于RT-thread外部中斷的教程,只發(fā)現(xiàn)RT-thread文檔中心的PIN設備里面有提及中斷相關的函數(shù)。不管怎樣,我覺得外部中斷平常用的還是很多的,至少我在使用RT-thread之前是經(jīng)常會用到,好了,廢話不多說,馬上開始進入我們的教程。

源碼鏈接

我發(fā)布的所有關于RT-thread的教程源代碼都在下面這個鏈接里面,隨著我教程的更新,新的代碼也會加入進去。

教程源碼下載鏈接:https://pan.baidu.com/s/1N2D8dM31deKIqNqaIQfPiA
提取碼:7nsx

二、編程講解

第一步:配置外部中斷

在這里插入圖片描述

從這個函數(shù)的描述我們可以很清楚的看到,只要調(diào)用上面這個函數(shù)就可以配置成外部中斷腳,中斷觸發(fā)的方式,以及回調(diào)函數(shù)(等同于中斷服務函數(shù)),而且回調(diào)函數(shù)的名稱我們還可以自由定義,不像我們用裸機程序的時候,中斷服務函數(shù)是已經(jīng)固定了的。

第二步:使能中斷

直接調(diào)用下面這個函數(shù)即可。

在這里插入圖片描述

第三步:自己定義一個回調(diào)函數(shù)

因為RT-thread的外部中斷沒有固定的中斷服務函數(shù),所以我們需要自己定義一個,示例如下:

/* 自己定義一個回調(diào)函數(shù),相當于中斷服務函數(shù) */
void IQR_HANDALE_KEY0(void *args)
{
    rt_pin_write(LED0_PIN, PIN_LOW);//點亮LED0
}

三、項目實戰(zhàn)

因為這個兩個函數(shù)原本在pin.c里面就有定義,所以我們也不需要自己去寫,直接調(diào)用就行了。

我這里用兩個按鍵,KEY0按下,觸發(fā)外部中斷,點亮LED0,KEY1按下,熄滅LED0,示例代碼如下:

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

#define LED0_PIN    GET_PIN(F, 9)
#define LED1_PIN    GET_PIN(F, 10)
#define KEY0_PIN    GET_PIN(E, 4)
#define KEY1_PIN    GET_PIN(E, 3)

/* 自己定義KEY0的回調(diào)函數(shù),相當于中斷服務函數(shù) */
void IQR_HANDALE_KEY0(void *args)
{
    rt_pin_write(LED0_PIN, PIN_LOW);//點亮LED0
}

/* 自己定義KEY1的回調(diào)函數(shù),相當于中斷服務函數(shù) */
void IQR_HANDALE_KEY1(void *args)
{
    rt_pin_write(LED0_PIN, PIN_HIGH);//熄滅LED0
}

int main(void)
{
    int i = 0;

    /* 把LED引腳設置為輸出 */
    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
	
    /* 先把兩個燈關掉 */
    rt_pin_write(LED0_PIN, PIN_HIGH);
    rt_pin_write(LED1_PIN, PIN_HIGH);

    /* 把KEY引腳設置為輸入 */
    rt_pin_mode(KEY0_PIN, PIN_MODE_INPUT);
    rt_pin_mode(KEY1_PIN, PIN_MODE_INPUT);

    /* 綁定中斷,下降沿模式,回調(diào)函數(shù)名為IQR_HANDALE_KEY0 */
    rt_pin_attach_irq(KEY0_PIN, PIN_IRQ_MODE_FALLING, IQR_HANDALE_KEY0, RT_NULL);
    /* 使能中斷 */
    rt_pin_irq_enable(KEY0_PIN, PIN_IRQ_ENABLE);

    /* 綁定中斷,下降沿模式,回調(diào)函數(shù)名為IQR_HANDALE_KEY1 */
    rt_pin_attach_irq(KEY1_PIN, PIN_IRQ_MODE_FALLING, IQR_HANDALE_KEY1, RT_NULL);
    /* 使能中斷 */
    rt_pin_irq_enable(KEY1_PIN, PIN_IRQ_ENABLE);

    while (1)
    {
        rt_pin_write(LED1_PIN, PIN_LOW);//點亮LED1
        rt_thread_mdelay(1000);
        rt_pin_write(LED1_PIN, PIN_HIGH);//熄滅LED1
        rt_thread_mdelay(1000);
    }
}

四、結束語

好了,關于外部中斷的編程講解就到這里,如果還有什么問題可以私信給我。如果需要本文對應的源碼的話可以在博文前言部分的鏈接下載。

如果覺得這篇文章對你有用,點贊+關注支持一下博主唄。

后續(xù)我會繼續(xù)更新RT-thread入門教程系列,如果感興趣的同學可以關注一下博主,謝謝!

RT-thread相關教程匯總:https://blog.csdn.net/ShenZhen_zixian/article/details/120563891

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
SN74LV244APWG4 1 Texas Instruments Eight-channel 2-V to 5.5-V buffers with tri-state outputs 20-TSSOP -40 to 125

ECAD模型

下載ECAD模型
暫無數(shù)據(jù) 查看
M95M02-DRMN6TP 1 STMicroelectronics 2 Mbit serial SPI bus EEPROM

ECAD模型

下載ECAD模型
$2.36 查看
TLP185(GB-TPL,E) 1 Toshiba America Electronic Components X36 PB-F PHOTOCOUPLER SMD T&R

ECAD模型

下載ECAD模型
$0.55 查看

相關推薦

沙洋县| 安乡县| 石首市| 武汉市| 图们市| 蕉岭县| 巴林右旗| 财经| 遂昌县| 岑巩县| 怀仁县| 固镇县| 乌兰县| 三台县| 隆回县| 玉树县| 乌恰县| 唐河县| 华亭县| 牡丹江市| 赣州市| 九江市| 九龙坡区| 林口县| 达孜县| 汤原县| 女性| 北京市| 舟曲县| 禄劝| 石景山区| 彰化市| 章丘市| 遂溪县| 平利县| 梁山县| 京山县| 湟源县| 南开区| 静安区| 信丰县|