chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【EK-RA6E2開發(fā)指南】GPIO使用

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2025-09-23 18:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我相信大多數(shù)學(xué)習(xí)嵌入式的朋友學(xué)習(xí)單片機(jī)的第一個(gè)程序都是點(diǎn)燈,畢竟點(diǎn)燈簡單嘛,操作下GPIO即可。當(dāng)然,本教程的第一個(gè)應(yīng)用也從GPIO的使用開始。

1 RT-Thread PIN設(shè)備驅(qū)動(dòng)簡介

RT-Thread 提供了一套簡單的 I/O 設(shè)備模型框架,如下圖所示。

I/O 設(shè)備模型框架

它位于硬件和應(yīng)用程序之間,共分成三層,從上到下分別是 I/O 設(shè)備管理層、設(shè)備驅(qū)動(dòng)框架層、設(shè)備驅(qū)動(dòng)層。

應(yīng)用程序通過 I/O 設(shè)備管理接口獲得正確的設(shè)備驅(qū)動(dòng),然后通過這個(gè)設(shè)備驅(qū)動(dòng)與底層 I/O 硬件設(shè)備進(jìn)行數(shù)據(jù)(或控制)交互。關(guān)于I/O模型的詳細(xì)描述請(qǐng)參看RT-Thread官方手冊(cè)。

I/O設(shè)備模型:

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/device

PIN設(shè)備屬于Miscellaneous類型,在驅(qū)動(dòng)文件pin.c中的rt_device_pin_register()函數(shù)可以看到其注冊(cè)的設(shè)備類型,PIN設(shè)備是很多驅(qū)動(dòng)的基礎(chǔ),其他驅(qū)動(dòng)的開發(fā)還會(huì)依賴PIN設(shè)備,比如軟件I2C的驅(qū)動(dòng)就是在PIN設(shè)備的基礎(chǔ)上開發(fā)的。

應(yīng)用程序通過 RT-Thread 提供的 PIN 設(shè)備管理接口來訪問 GPIO,相關(guān)接口如下所示:

函數(shù)描述
rt_pin_get()獲取引腳編號(hào)
rt_pin_mode()設(shè)置引腳模式
rt_pin_write()設(shè)置引腳電平
rt_pin_read()讀取引腳電平
rt_pin_attach_irq()綁定引腳中斷回調(diào)函數(shù)
rt_pin_irq_enable()使能引腳中斷
rt_pin_detach_irq()脫離引腳中斷回調(diào)函數(shù)

關(guān)于PIN驅(qū)動(dòng)API的詳細(xì)描述請(qǐng)參看以下內(nèi)容:

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pin/pin

2 PIN設(shè)備使用實(shí)例之按鍵

筆者這里使用的是EK-RA6E2開發(fā)板,MCU資源很豐富,但是板載資源較少。EK-RA6E2開發(fā)板的用戶LED已經(jīng)在主線程中使用了,因此這里就用戶按鍵來舉例說明如何使用PIN設(shè)備。

2.1 硬件電路

首先看下電路圖:

1.png

[]()Figure ? 按鍵電路

當(dāng)然不同開發(fā)板,其引腳可能不同,請(qǐng)根據(jù)具體情況使用。由以上電路圖可以看到,當(dāng)P304輸入低電平,表示按鍵按下,反之亦然。

2.2 按鍵實(shí)現(xiàn)

核心代碼如下:

#define KEY_PIN    BSP_IO_PORT_03_PIN_04 /* Onboard LED3 pins */

/* 按鍵檢測線程入口函數(shù)*/
static void key_thread_entry(void *parameter)
{
    static rt_uint8_t key_up = 1;   /* 按鍵松開標(biāo)志 */

    /* 初始化按鍵 */
    rt_pin_mode(KEY_PIN, PIN_MODE_INPUT);

    while (1)
    {
        /* 檢測按鍵是否按下 */
        if (key_up && (rt_pin_read(KEY_PIN) == PIN_LOW) )
        {
            rt_thread_mdelay(50);   /* 延時(shí)消抖*/
            key_up = 0;

            if (rt_pin_read(KEY_PIN) == PIN_LOW)
            {
                /* 按鍵KEY按下,按鍵按下處理*/
                rt_kprintf("KEY pressed!n");
            }
        }
        else if((rt_pin_read(KEY_PIN) == PIN_HIGH) )
        {
            key_up = 1;     /* 按鍵已松開 */
        }
        rt_thread_mdelay(100);
    }
}

/* 線程初始化*/
int key_init(void)
{
    /* 創(chuàng)建線程,名稱是 key_thread,入口是 key_thread*/
    rt_thread_t key_tid= RT_NULL;
    key_tid = rt_thread_create( "gpio",
                             key_thread_entry,
                             RT_NULL,
                             1024,
                             3,
                             10);
    /* 如果獲得線程控制塊,啟動(dòng)這個(gè)線程 */
    if(key_tid == RT_NULL)
    {
        rt_kprintf("Thread_gpio ERROR");
        return RT_ERROR;
    }
    else
    {
        rt_thread_startup(key_tid);
        return RT_EOK;
    }
}

/* 導(dǎo)出到 msh 命令列表中 */
MSH_CMD_EXPORT(key_init, key init);

構(gòu)建并下載程序,并使用msh 命令初始化KEY線程,按下按鍵,則可以看到串口終端輸出以下信息:

2.png

當(dāng)然啦,在finsh輸入list device可以查到注冊(cè)到RT-Thread的PIN設(shè)備:

3.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6071

    文章

    45249

    瀏覽量

    659854
  • 嵌入式
    +關(guān)注

    關(guān)注

    5172

    文章

    19963

    瀏覽量

    324158
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1299

    瀏覽量

    55226
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    EK-RA6E2開發(fā)指南開發(fā)環(huán)境搭建

    瑞薩電子的開發(fā)工具有很多,筆者習(xí)慣使用MDK開發(fā),因此本文將基于MDK+RA Smart Configurator搭建開發(fā)環(huán)境。
    的頭像 發(fā)表于 09-23 18:12 ?2188次閱讀
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>開發(fā)指南</b>】<b class='flag-5'>開發(fā)</b>環(huán)境搭建

    EK-RA6E2開發(fā)指南】ADC獲取電壓值

    RA6E22個(gè)ADC單元,每個(gè)ADC單元有12位、10位、8位讀取數(shù)據(jù)的格式可以選擇,在單元0上有13個(gè)ADC通道,而在單元1上有16個(gè)ADC通道。 ADC單元具有三種掃描方式分別為:單次描模式、連續(xù)掃描模式和分組掃描模式,
    的頭像 發(fā)表于 09-23 18:15 ?1487次閱讀
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>開發(fā)指南</b>】ADC獲取電壓值

    EK-RA6E2開發(fā)指南】DAC設(shè)置電壓值

    RA6E2有片上DAC外設(shè),總共有兩路DAC輸出通道,每路的分辨率可配置為12位, 這兩個(gè)通道之間互不影響,每個(gè)通道都可以使用ELC功能可外部觸發(fā)或者進(jìn)行與ADC單元1的同步轉(zhuǎn)換。
    的頭像 發(fā)表于 09-23 18:16 ?1592次閱讀
    【<b class='flag-5'>EK-RA6E2</b><b class='flag-5'>開發(fā)指南</b>】DAC設(shè)置電壓值

    EK-RA2E2-快速入門指南

    EK-RA2E2-快速入門指南
    發(fā)表于 01-30 18:47 ?0次下載
    <b class='flag-5'>EK-RA2E2</b>-快速入門<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入門指南

    EK-RA2E1 – 快速入門指南
    發(fā)表于 02-03 19:08 ?0次下載
    <b class='flag-5'>EK-RA2E</b>1 – 快速入門<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入門指南

    EK-RA6M2 – 快速入門指南
    發(fā)表于 03-13 19:36 ?0次下載
    <b class='flag-5'>EK-RA6M2</b>– 快速入門<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用戶手冊(cè)

    EK-RA6E2 v1 – 用戶手冊(cè)
    發(fā)表于 05-12 19:18 ?0次下載
    <b class='flag-5'>EK-RA6E2</b>v1 – 用戶手冊(cè)

    EK-RA6E2– 快速入門指南

    EK-RA6E2 – 快速入門指南
    發(fā)表于 05-12 19:20 ?1次下載
    <b class='flag-5'>EK-RA6E2</b>– 快速入門<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入門指南

    EK-RA4E2 – 快速入門指南
    發(fā)表于 05-12 19:23 ?0次下載
    <b class='flag-5'>EK-RA4E2</b>– 快速入門<b class='flag-5'>指南</b>

    EK-RA6E2v1 – 用戶手冊(cè)

    EK-RA6E2 v1 – 用戶手冊(cè)
    發(fā)表于 06-29 19:10 ?1次下載
    <b class='flag-5'>EK-RA6E2</b>v1 – 用戶手冊(cè)

    EK-RA6E2– 快速入門指南

    EK-RA6E2 – 快速入門指南
    發(fā)表于 06-29 19:11 ?0次下載
    <b class='flag-5'>EK-RA6E2</b>– 快速入門<b class='flag-5'>指南</b>

    EK-RA4E2– 快速入門指南

    EK-RA4E2 – 快速入門指南
    發(fā)表于 06-29 19:14 ?0次下載
    <b class='flag-5'>EK-RA4E2</b>– 快速入門<b class='flag-5'>指南</b>

    EK-RA2E2-快速入門指南

    EK-RA2E2-快速入門指南
    發(fā)表于 07-03 20:12 ?0次下載
    <b class='flag-5'>EK-RA2E2</b>-快速入門<b class='flag-5'>指南</b>

    EK-RA2E1 – 快速入門指南

    EK-RA2E1 – 快速入門指南
    發(fā)表于 07-04 19:40 ?0次下載
    <b class='flag-5'>EK-RA2E</b>1 – 快速入門<b class='flag-5'>指南</b>

    EK-RA6M2– 快速入門指南

    EK-RA6M2 – 快速入門指南
    發(fā)表于 07-04 20:54 ?0次下載
    <b class='flag-5'>EK-RA6M2</b>– 快速入門<b class='flag-5'>指南</b>