您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何分析RT-Thread的PIN設(shè)備中斷實(shí)驗(yàn),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
通用I/O口主要特性如下:
1、輸入輸出模式可控制。
(1)輸出模式一般包括:推挽、開漏、上拉、下拉。引腳為輸出模式時(shí),可以通過配置引腳輸出的電平狀態(tài)為高電平或低電平來控制連接的外圍設(shè)備。
(2)輸入模式一般包括:浮空、上拉、下拉、模擬。引腳為輸入模式時(shí),可以讀取引腳的電平狀態(tài),即高電平或低電平。
2、可編程控制中斷:中斷觸發(fā)模式可配置,一般有下圖所示5種中斷觸發(fā)模式:
下面分享PIN設(shè)備的中斷實(shí)驗(yàn)。
應(yīng)用程序通過 RT-Thread 提供的 PIN 設(shè)備管理接口來訪問 GPIO,中斷用到的是rt_pin_attach_irq()
接口及rt_pin_irq_enable
接口:
根據(jù)原理圖:
按鍵KEY0被按下時(shí)其對(duì)應(yīng)的GPIO引腳應(yīng)讀取到低電平,所以引腳模式設(shè)置為下拉輸入。廢話不多說,直接看代碼:
#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)建動(dòng)態(tài)pin線程 :優(yōu)先級(jí) 25 ,時(shí)間片 5個(gè)系統(tǒng)滴答,線程棧512字節(jié) */
tid = rt_thread_create("irq_thread",
irq_thread_entry,
RT_NULL,
STACK_SIZE,
THREAD_PRIORITY,
TIMESLICE);
/* 創(chuàng)建成功則啟動(dòng)動(dòng)態(tài)線程 */
if (tid != RT_NULL)
{
rt_thread_startup(tid);
}
return 0;
}
示例代碼很簡(jiǎn)單,創(chuàng)建一個(gè)irq線程,irq線程里配置進(jìn)行KEY0引腳配置,然后綁定中斷回調(diào)函數(shù),最后使能KEY0中斷。中斷回調(diào)函數(shù)就是KEY0觸發(fā)中斷之后執(zhí)行的函數(shù)。
運(yùn)行結(jié)果:
可見,實(shí)驗(yàn)結(jié)果與預(yù)想的一致。使用PIN設(shè)備框架接口很方便地實(shí)現(xiàn)GPIO中斷功能。
RTT中有許多通用地設(shè)備驅(qū)動(dòng)框架共供我們使用,其中PIN設(shè)備驅(qū)動(dòng)框架是最基礎(chǔ)也是最簡(jiǎn)單地,掌握PIN設(shè)備驅(qū)動(dòng)框架之后離掌握其它設(shè)備框架還遠(yuǎn)嗎~
上述就是小編為大家分享的如何分析RT-Thread的PIN設(shè)備中斷實(shí)驗(yàn)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。