如何分析RT-Thread的PIN設備中斷實驗

這期內(nèi)容當中小編將會給大家?guī)碛嘘P如何分析RT-Thread的PIN設備中斷實驗,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新新互聯(lián),憑借十多年的網(wǎng)站建設、成都做網(wǎng)站經(jīng)驗,本著真心·誠心服務的企業(yè)理念服務于成都中小企業(yè)設計網(wǎng)站有近千家案例。做網(wǎng)站建設,選創(chuàng)新互聯(lián)公司。

通用I/O的特性

通用I/O口主要特性如下:

1、輸入輸出模式可控制。

(1)輸出模式一般包括:推挽、開漏、上拉、下拉。引腳為輸出模式時,可以通過配置引腳輸出的電平狀態(tài)為高電平或低電平來控制連接的外圍設備。

(2)輸入模式一般包括:浮空、上拉、下拉、模擬。引腳為輸入模式時,可以讀取引腳的電平狀態(tài),即高電平或低電平。

2、可編程控制中斷:中斷觸發(fā)模式可配置,一般有下圖所示5種中斷觸發(fā)模式:

如何分析RT-Thread的PIN設備中斷實驗

下面分享PIN設備的中斷實驗。

 

PIN設備中斷實驗

應用程序通過 RT-Thread 提供的 PIN 設備管理接口來訪問 GPIO,中斷用到的是rt_pin_attach_irq()接口及rt_pin_irq_enable接口:

如何分析RT-Thread的PIN設備中斷實驗

如何分析RT-Thread的PIN設備中斷實驗

如何分析RT-Thread的PIN設備中斷實驗

根據(jù)原理圖:

如何分析RT-Thread的PIN設備中斷實驗

按鍵KEY0被按下時其對應的GPIO引腳應讀取到低電平,所以引腳模式設置為下拉輸入。廢話不多說,直接看代碼:

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

#define  STACK_SIZE          512
#define  THREAD_PRIORITY 25
#define  TIMESLICE   5

/* 中斷回調(diào)函數(shù) ---------------------------------------------------------------------------- */
static void hdr_callback(void *args)
{
char *str = args;
rt_kprintf("KEY0 pressed. %s\n", str);
}

/* irq線程入口函數(shù) -------------------------------------------------------------------------*/
static void irq_thread_entry(void *parameter)
{
/* 配置KEY0引腳為上拉輸入 */
rt_pin_mode(PIN_KEY0, PIN_MODE_INPUT_PULLUP);

/* 綁定中斷回調(diào)函數(shù),下降沿模式,回調(diào)函數(shù)參數(shù)為字符串"--By ZhengNian" */
rt_pin_attach_irq(PIN_KEY0, PIN_IRQ_MODE_FALLING, hdr_callback, (void*)"--By ZhengNian");

/* 使能引腳中斷 */
rt_pin_irq_enable(PIN_KEY0, PIN_IRQ_ENABLE);
}

/* 主函數(shù) ----------------------------------------------------------------------------------*/
int main(void)
{
   /* 定義線程句柄 */
   rt_thread_t tid;

   /* 創(chuàng)建動態(tài)pin線程 :優(yōu)先級 25 ,時間片 5個系統(tǒng)滴答,線程棧512字節(jié) */
   tid = rt_thread_create("irq_thread",
                 irq_thread_entry,
                 RT_NULL,
                 STACK_SIZE,
                 THREAD_PRIORITY,
                 TIMESLICE);

   /* 創(chuàng)建成功則啟動動態(tài)線程 */
   if (tid != RT_NULL)
   {
    rt_thread_startup(tid);
   }
   return 0;
}
 

示例代碼很簡單,創(chuàng)建一個irq線程,irq線程里配置進行KEY0引腳配置,然后綁定中斷回調(diào)函數(shù),最后使能KEY0中斷。中斷回調(diào)函數(shù)就是KEY0觸發(fā)中斷之后執(zhí)行的函數(shù)。

運行結果:

如何分析RT-Thread的PIN設備中斷實驗

可見,實驗結果與預想的一致。使用PIN設備框架接口很方便地實現(xiàn)GPIO中斷功能。

RTT中有許多通用地設備驅動框架共供我們使用,其中PIN設備驅動框架是最基礎也是最簡單地,掌握PIN設備驅動框架之后離掌握其它設備框架還遠嗎~

上述就是小編為大家分享的如何分析RT-Thread的PIN設備中斷實驗了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:如何分析RT-Thread的PIN設備中斷實驗
本文鏈接:http://muchs.cn/article36/ijocsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、ChatGPT、全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈建站公司、品牌網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化