99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

程序小白
認證:優質創作者
所在專題目錄 查看專題
初識Arduino:簡單是簡單了點,還是蠻有意思的
基于ESP32快速搭建藍牙串口透傳應用(Arduino)
基于ESP32搭建的藍牙串口透傳應用代碼分析(Arduino)
基于ESP32搭建GPIO-Interrupt應用及分析(Arduino)
基于ESP32例程分析Functional-Interrupt(C++淺析)及GPIO-API詳解
基于ESP32——FreeRTOS初識(Arduino)
作者動態 更多
基于stm32采用PWM驅動伺服控制器學習筆記
05-13 15:25
基于STM32驅動TM1638學習筆記——軟件篇
04-19 12:42
基于TM1638驅動8位數碼管設計分享
02-24 11:26
RT-Thread驅動之路: Studio創建FAL分區⑤
01-02 08:30
RT-Thread驅動之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

基于ESP32例程分析Functional-Interrupt(C++淺析)及GPIO-API詳解

===================Function-Interrupt應用分析===================

      Functional-Interrupt應用功能與前一篇GPIO-Interrupt其實實現的功能是一樣的,區別就是,他是C++版本的實現,而且你要知道Arduino中大部分的中間件都是基于C++的實現,而自古C與C++是不分家的,所以我決定挑戰一下我的軟肋,來分析一下這個C++應用的實現思路。

===================接下來進入C++閑聊模式=====================

我覺得你既然會C,那么你必須會C++~!!!為啥要這么說?

你學C已經付出了很多的艱辛,其實距離C++可能就剩下捅破十張窗戶紙的距離,努力一把它會給你開啟編程界的新大門。C++的復雜程度其實在于其實現的機制,我相信工作多年你已經過了好奇寶寶的年紀,更關注于實際的應用。

知識點一:C++中一切皆對象(其實就是幻象):C語言中的就是結構體類型變量。

結構體類型變量(C語言)≈ 對象(C++語言)。

當然一個簡單的變量也可以看作是一個對象,但是這么來看其實就失去了對象的意義。

struct  ≈ class :主要用來定義結構體或者類。

知識點二:C++很討厭全局變量(雖然我很喜歡),于是他引入了訪問權限,最常用的就是

public 和private  權限修飾符。他們主要是規定了對象內部的屬性和方法可以調用的空間。

public權限修飾后,可以在對象外部調用。

private權限修飾后,只能在對象的內部使用。

知識點三:class類對比與struct有兩個特殊得函數,一個叫構造函數,一個叫析構函數。

構造函數:在創建一個對象的時候被自動調用。

析構函數:在銷毀一個對象的時候被調用。

只有對象是以動態分配內存的方式創建,才有被析構的機會,搞過多年軟件的我,還是建議你能用靜態就用靜態,不要在乎那點RAM開銷,不行就換片子。

知識點四:std開頭的函數(std代表C++特有)

注解:isr是一個標準的函數,但是他綁定的時候是在類中進行的,實際執行的應該是特定對象的isr,但是在這里綁定的時候對象還沒出生呢,于是用this指針綁定,這樣isr外部調用的時候,調用的主體是對象。(有點點繞)

================更改軟件并燒錄測試========================

1. 軟件更改button編號:

2. 燒錄到我們的ESP32開發板中,并連接串口:

3. 測試接線說明:

4. 串口測試數據輸出:

===================ESP32補充篇GPIO-API應用===================

      閑聊過后,還是來詳細介紹一下GPIO相關的功能函數,先看一下工程下關于GPIO-API定義的文件,esp32-hal-gpio.h文件(看到hal的一瞬間,讓我想起來溫暖的STM32hal庫):

=======================================================1. void pinMode(uint8_t pin,uint8_t mode);

函數功能:引腳模式設置

pin參數:IO號(注意不是引腳編號)

mode參數:IO模式:

                    INPUT: 數字輸入

                     INPUT_PULLUP: 帶內上拉數字輸入

                     OUTPUT: 數字輸出

返回值:無

2. void digitalWrite(uint8_t pin,uint8_t value);

函數功能:設置引腳輸出電平

pin參數:IO號(注意不是引腳編號)

value參數:設置引腳輸出電平HIGH(高)或LOW(低)

返回值:無

3. int digitalRead(uint8_t pin);

函數功能:讀取引腳電平狀態。

pin參數:IO號(注意不是引腳編號)

int返回值:返回引腳的電平

                  HIGH:高電平

                  LOW:低電平

4.void attachInterrupt(uint8_t pin, void (*)(void), int mode);

函數功能:中斷綁定功能

pin參數:IO號,綁定引腳編號。

void (*)(void)參數:函數指針,指向中斷服務函數。

mode參數:中斷模式。          

5.void attachInterruptArg(uint8_t pin, void (*)(void*), void * arg, int mode);

這個API函數與上面一個API函數非常相似,所以我們只講不同之處,首先這個綁定的中斷服務例程是一個帶傳參的例程。

      首先第二個函數的指針類型有變化,參數由void類型變為了void*類型,意義完全發生了變化,這是一個帶參數的函數指針類型,參數類型為void * 。

      這里就不難理解API在函數指針的后面多了一個void * 類型的參數arg,這個參數正是我們函數指針用到的參數,也就是第三個參數為第二個參數服務。

      關于void * 類型參數,首先這個參數是一個指針類型,而且是一個void指針類型,也就代表著,你可以是任意類型指針都可以。

6. void detachInterrupt(uint8_t pin);

函數功能:解除中斷引腳綁定功能。

pin參數:解除具體引腳IO號。

返回值:無。

             

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
本篇所含全部資料,點擊此處留下郵箱我會發給你
資料明細:例程源碼在這里,Aruidno的示例中有,只是調整了一下PIN的引腳號
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 4
收藏 4
關注 151
成為作者 賺取收益
全部留言
0/200
  • chaochao1545 2021-07-01 18:24
    [null]
    回復
主站蜘蛛池模板: 五月天播播 | 亚洲狠狠婷婷久久久四季av | 国产真实乱偷精品视频免 | 北条麻妃国产九九九精品视频 | 亚洲黄网在线观看 | 永久免费不卡的AV网站 | 嫩草院一区二区乱码蜜臀 | 日99久9在线免费 | 欧美91在线国内日韩 | 69免费网站 | 久久爱涩涩www | 日本黄色激情片 | 噜噜噜在线观看免费视频日本 | 少妇高潮毛片 | 狠狠久久永久免费观看 | 91年精品国产 | 日韩精品一区二区三 | 伊人色亚洲 | 日本字幕在线观看 | 中文字幕免费久久 | 久久婷婷五月综合成人D啪 成人av视频在线观看 | 欧美视频免费看 | 色情狠久久AV五月综合五月 | 大地资源在线观看免费高清官网 | H无码精品动漫在线观看导航 | 日韩在线视屏 | 中文字幕在线中文字幕二区 | 欧美毛片免费看 | 国产av寂寞骚妇 | 日韩第一页在线 | 国产一区二区在线91 | 一区二区三区四区五区中文字幕 | 亚洲夜幕久久日韩精品一区 | 午夜精品射精入后重之免费观看 | 欧美黄色一级片视频 | 欧美4区| 在线观看黄色片 | 久操福利视频 | 91亚洲国产在人线播放午夜 | 国产无人区码一码二码三MBA | 日日噜噜大屁股熟妇 |