欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

[esp32教程]2、按鍵中斷

板凳說(shuō) ? 來(lái)源:板凳說(shuō) ? 作者:板凳說(shuō) ? 2023-05-05 09:04 ? 次閱讀

esp32的按鍵中斷

0、前期準(zhǔn)備

1、參考上一篇文章搭建好esp32環(huán)境

2、準(zhǔn)備好一塊esp32開(kāi)發(fā)開(kāi)發(fā)板(本作者使用了esp32c3作為開(kāi)發(fā)平臺(tái))

1、知識(shí)儲(chǔ)備

消息隊(duì)列:在RTOS中,常用于任務(wù)之間或者是中斷與任務(wù)之間的數(shù)據(jù)交換。具有特點(diǎn)是:先入入先出,類似我們平時(shí)排隊(duì)進(jìn)園區(qū)旅游,排在前面總是首先進(jìn)入里面。
FreeRTOS中,消息隊(duì)列用的函數(shù)有以下幾個(gè):
  • 用于創(chuàng)建消息隊(duì)列

? xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize )

? 參數(shù)如下:

uxQueueLength:隊(duì)列最大長(zhǎng)度
uxItemSize:數(shù)據(jù)體的數(shù)據(jù)大小,注意:隊(duì)列中每個(gè)數(shù)據(jù)體的大小必須要保存一致
  • 用于讀取消息隊(duì)列

? portBASE_TYPE xQueueReceive( xQueueHandle xQueue, void *pvBuffer, portTickType xTicksToWait )

? 參數(shù)如下:

pxQueue:隊(duì)列句柄,其值為xQueueCreate放回值,類型為:xQueueHandle
    pvBuffer:數(shù)據(jù)指針用于指向出隊(duì)的數(shù)據(jù)地址
    xTicksToWait:任務(wù)中斷并等待隊(duì)列中可用空間的最大時(shí)間。若設(shè)置為0且隊(duì)列為空時(shí),調(diào)用立刻返回。如果要設(shè)置具體時(shí)間可以用(時(shí)間/portTICK_RATE_MS)公式來(lái)獲取具體時(shí)間。又若設(shè)置為( portMAX_DELAY) 將導(dǎo)致任務(wù)阻塞
  • 用于寫(xiě)入消息隊(duì)列

? portBASE_TYPE xQueueSendFromISR(xQueueHandle pxQueue,const void *pvItemToQueue,portBASE_TYPE *pxHigherPriorityTaskWoken);

? 參數(shù)如下:

pxQueue:隊(duì)列句柄,其值為xQueueCreate放回值,類型為:xQueueHandle
    pvItemToQueue:要存入隊(duì)列的數(shù)據(jù)的指針,數(shù)據(jù)類型要和xQueueCreate初始化的數(shù)據(jù)類型一樣
    pxHigherPriorityTaskWoken:如果數(shù)據(jù)入隊(duì)使任務(wù)解鎖,并且解鎖的任務(wù)的優(yōu)先級(jí)高于當(dāng)前運(yùn)行任務(wù)的優(yōu)先級(jí)xQueueSendFromISR將設(shè)置*pxHigherPriorityTaskWokenpdTRUE 。如果xQueueSendFromISR()設(shè)置這個(gè)值到 pdTRUE,那么在中斷退出的時(shí)候?qū)?huì)進(jìn)行任務(wù)切換。
ESP32中斷

? ESP32-C3芯片具有硬件濾波器,可去除輸入GPIO中不需要的毛刺脈沖,這有助于減少中斷的錯(cuò)誤觸發(fā)。

中斷函數(shù)介紹

  • 中斷服務(wù)注冊(cè)函數(shù)

? esp_err_t gpio_install_isr_service( int intr_alloc_flags )

? 函數(shù)說(shuō)明

? 使用該函數(shù),ISR服務(wù)將提供全局GPIO的ISR,并通過(guò)gpio_isr_handler_add()函數(shù)注冊(cè)各個(gè)引腳處理程序

? 參數(shù)如下:

intr_alloc_flags:中斷的類型
  • GPIO中斷注冊(cè)函數(shù)

? esp_err_t gpio_isr_handler_add(gpio_num_t gpio_num,gpio_isr_t isr_handler,void * args )

? 函數(shù)說(shuō)明

? 用于為相應(yīng)的GPIO引腳添加中斷處理函數(shù)

? 參數(shù)如下:

gpio_num:GPIO引腳號(hào)
    isr_handler:中斷處理函數(shù)名
    args:往中斷函數(shù)傳遞的參數(shù)

2、新建工程

idf.py create-project project_led # 新建工程
cd project_key
idf.py set-target esp32c3 # 設(shè)置工程使用的芯片

3、查看原理圖確定按鍵控制引腳

key.png

經(jīng)查閱原理圖,確定led的引腳為gpio_19,讀者需根據(jù)自身開(kāi)發(fā)板來(lái)修改引腳

4、編寫(xiě)程序

#include 

#include 
#include 
#include 

#include 

#define KEY_PIN GPIO_NUM_9
static QueueHandle_t key_queue = NULL;

static void IRAM_ATTR key_isr_handler(void *arg)
{
    uint32_t gpio_num = (uint32_t)arg;
    xQueueSendFromISR(key_queue, &gpio_num, NULL);
}

void app_main(void)
{
    uint32_t gpio_num;
    //配置模式 輸入 下降沿觸發(fā)中斷
    gpio_config_t cfg = {
        .mode = GPIO_MODE_INPUT,
        .pin_bit_mask = 1ULL << KEY_PIN,
        .pull_up_en = GPIO_PULLUP_DISABLE,
        .pull_down_en = GPIO_PULLUP_DISABLE,
        .intr_type = GPIO_INTR_POSEDGE,
    };

    gpio_config(&cfg);
    //創(chuàng)建消息隊(duì)列、注冊(cè)中斷函數(shù)
    key_queue = xQueueCreate(10, sizeof(uint32_t));
    gpio_install_isr_service(0);
    gpio_isr_handler_add(KEY_PIN, key_isr_handler, (void *)KEY_PIN);

    while (pdTRUE)
    {
        //
        if (xQueueReceive(key_queue, &gpio_num, portMAX_DELAY))
        {
            printf("key is down\\\\\\\\n");
        }
    }
    
}

5、編譯下載

#編譯
idf.py build
#燒錄以及查看日志,使用ctrl+] 可以退出監(jiān)視窗口
idf.py -p /dev/ttyUSB0 flash monitor

審核編輯:湯梓紅

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

    關(guān)注

    12

    文章

    484

    瀏覽量

    62410
  • 按鍵中斷
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    6465
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    980

    瀏覽量

    17545
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ESP32-C2 ESP8684芯片AT固件使用

    ESP32-C2 ESP8684芯片AT固件使用
    的頭像 發(fā)表于 07-27 13:48 ?3863次閱讀
    <b class='flag-5'>ESP32-C2</b> <b class='flag-5'>ESP</b>8684芯片AT固件使用

    ESP32模組的主要特性

    ●?ESP32-WROOM-32D ●?ESP32-WROOM-32U ●?ESP32-SOLO-1 模組 ●?ESP32-WROVER ●?ES
    發(fā)表于 11-04 14:54 ?4144次閱讀

    ESP32開(kāi)發(fā)套件 ESP32-DevKitC

    ,具備豐富的外設(shè)和優(yōu)化的引腳布局,助力用戶快速實(shí)現(xiàn)產(chǎn)品開(kāi)發(fā),它有4MB Flash,有I/O,USB以及按鍵、LED ? 支持 Wi-Fi 藍(lán)牙連接 ESP32-DevKitC 是一款基于 ESP32
    的頭像 發(fā)表于 01-06 16:55 ?8545次閱讀

    ESP32 開(kāi)發(fā)之旅② Arduino For ESP32說(shuō)明

    文章目錄1. Arduino Core For ESP32是什么?2.Arduino core for ESP32庫(kù)3.與ESP8266庫(kù)類比3.1 WiFi ——
    發(fā)表于 11-13 19:51 ?33次下載
    <b class='flag-5'>ESP32</b> 開(kāi)發(fā)之旅② Arduino For <b class='flag-5'>ESP32</b>說(shuō)明

    ESP32ESP-IDF 教學(xué)(三)——通用硬件定時(shí)器(Timer)

    ESP32ESP-IDF 學(xué)習(xí)筆記(三)【通用硬件定時(shí)器(Timer)】文章目錄ESP32ESP-IDF 學(xué)習(xí)筆記(三)【通用硬件定時(shí)器(Timer)】通用硬件定時(shí)器(Ti
    發(fā)表于 11-26 11:36 ?38次下載
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教學(xué)(三)——通用硬件定時(shí)器(Timer)

    ESP32ESP-IDF 教學(xué)(九)—— 串口通信(UART)

    使用簡(jiǎn)介二、使用 UART 收發(fā)數(shù)據(jù)1、設(shè)置 UART 參數(shù)① 單步法(結(jié)構(gòu)體法)② 分步法2、分配引腳,安裝驅(qū)動(dòng)二、使用 UART 事件三、自定義 UART 中斷一、ESP32 的 UART 概覽
    發(fā)表于 11-26 13:21 ?44次下載
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教學(xué)(九)—— 串口通信(UART)

    [ESP32]學(xué)習(xí)筆記02

    [ESP32學(xué)習(xí)筆記02]使用ViusalStudio2017開(kāi)發(fā)ESP32、按鍵輸入檢測(cè)前言一、安裝Visual Studio 2017二、配置開(kāi)發(fā)環(huán)境1.安裝ViusalGDB2.
    發(fā)表于 12-03 17:36 ?23次下載
    [<b class='flag-5'>ESP32</b>]學(xué)習(xí)筆記02

    esp32學(xué)習(xí)之按鍵檢測(cè)gpio中斷

    esp32學(xué)習(xí)之gpio中斷前言流程選定gpiogpio配置設(shè)置回調(diào)函數(shù)注冊(cè)中斷處理程序前言最近在做一個(gè)按鍵檢測(cè),按鍵檢測(cè)有兩種方法,一種是
    發(fā)表于 12-04 16:21 ?14次下載
    <b class='flag-5'>esp32</b>學(xué)習(xí)之<b class='flag-5'>按鍵</b>檢測(cè)gpio<b class='flag-5'>中斷</b>

    ESP32系列芯片的規(guī)格

    ESP32是一款2.4GHz Wi-Fi和藍(lán)牙組合芯片,采用TSMC超低功耗40nm設(shè)計(jì)技術(shù)它旨在實(shí)現(xiàn)最佳功率和射頻性能,顯示出魯棒性、多功能性和靈活性在各種應(yīng)用和電源場(chǎng)景中的可靠性。ESP32系列芯片包括ESP32-D0WDQ
    發(fā)表于 04-25 16:21 ?7次下載

    ESP32 S2 SOLO/ESP32 S2 SOLO U技術(shù)規(guī)格書(shū)

    電子發(fā)燒友網(wǎng)站提供《ESP32 S2 SOLO/ESP32 S2 SOLO U技術(shù)規(guī)格書(shū).pdf》資料免費(fèi)下載
    發(fā)表于 09-23 14:57 ?0次下載
    <b class='flag-5'>ESP32</b> S<b class='flag-5'>2</b> SOLO/<b class='flag-5'>ESP32</b> S<b class='flag-5'>2</b> SOLO U技術(shù)規(guī)格書(shū)

    ESP32 S2 WROVER/ESP32 S2 WROVER I技術(shù)規(guī)格書(shū)

    電子發(fā)燒友網(wǎng)站提供《ESP32 S2 WROVER/ESP32 S2 WROVER I技術(shù)規(guī)格書(shū).pdf》資料免費(fèi)下載
    發(fā)表于 09-23 11:48 ?2次下載
    <b class='flag-5'>ESP32</b> S<b class='flag-5'>2</b> WROVER/<b class='flag-5'>ESP32</b> S<b class='flag-5'>2</b> WROVER I技術(shù)規(guī)格書(shū)

    ESP32 S2 WROOM/ESP32 S2 WROOM I技術(shù)規(guī)格書(shū)

    電子發(fā)燒友網(wǎng)站提供《ESP32 S2 WROOM/ESP32 S2 WROOM I技術(shù)規(guī)格書(shū).pdf》資料免費(fèi)下載
    發(fā)表于 09-23 11:31 ?4次下載
    <b class='flag-5'>ESP32</b> S<b class='flag-5'>2</b> WROOM/<b class='flag-5'>ESP32</b> S<b class='flag-5'>2</b> WROOM I技術(shù)規(guī)格書(shū)

    ESP32C2如何使用AT固件

    ESP32C2如何使用AT固件
    的頭像 發(fā)表于 12-12 13:58 ?3169次閱讀
    <b class='flag-5'>ESP32C2</b>如何使用AT固件

    ESP32-C2 8684 AT固件

    ESP32-C2模組 ESP8684芯片 智能家居設(shè)備開(kāi)發(fā)模組
    的頭像 發(fā)表于 07-03 13:41 ?928次閱讀
    <b class='flag-5'>ESP32-C2</b>  8684  AT固件

    如何使用MicroPython和ESP32來(lái)編寫(xiě)按鍵程序?

    首先,我們需要將LED燈、電阻和開(kāi)關(guān)、ESP32連接起來(lái)。
    的頭像 發(fā)表于 11-08 12:35 ?2041次閱讀
    如何使用MicroPython和<b class='flag-5'>ESP32</b>來(lái)編寫(xiě)<b class='flag-5'>按鍵</b>程序?