久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Ardunio解析之函數(shù)探秘

 云深無際 2021-11-03


對于一個C程序員很快的就可以寫出這個實現(xiàn),事實上也就是這個實現(xiàn)

對于一個天天寫Arduino的人,,你是否對其中的技術(shù)細(xì)節(jié)很迷惑

就像我上面寫的這個代碼一樣,,就是你每個程序都是有的這個loop,setup

眾所周知,,AVR是arduino的soul,,它又是得拿C編譯器來編譯

所以Arduino的底層也是一堆的C代碼,至于怎么實現(xiàn)的就是我文章的所寫

在Arduino的實現(xiàn)里面是main這個函數(shù)

以下就是完整版的Arduino main函數(shù)實現(xiàn),,可以看到寫的更加的健壯

void initVariant() __attribute__((weak));void initVariant() {}void setupUSB() __attribute__((weak));void setupUSB() {}int main(void){  init();  initVariant();#if defined(USBCON) USBDevice.attach();#endif  setup(); for (;;) { loop(); if (serialEventRun) serialEventRun();  } return 0;}
https://downloads.arduino.cc/arduino-1.8.13-windows.exe

這里先下載一個Arduino

然后打開一個內(nèi)置的demo就可以看到我們的setup和loop了


我們繼續(xù)聊Arduino的實現(xiàn),,它和C的微小的差別就是Arduino不知道你的標(biāo)準(zhǔn)的輸出設(shè)備是哪個(stdout),標(biāo)準(zhǔn)輸出就是printf函數(shù)要輸出的地方,,比如一個cmd,,一個shell。調(diào)用fdevopen()這個函數(shù)給他一個指針,,指向 向那個設(shè)備輸出一個字符的函數(shù),。你也可以調(diào)用Serial庫里面的函數(shù)干這個事情,為了通過一個虛擬的串口,,也可以是實際的一個串口輸出東西,。還需要你在setup()函數(shù)里面設(shè)置一些初始化的變量,接下來就是寫一下C語言版本的串口打?。?/p>

就這樣就寫出來了

然后用Arduino來編譯一下,,可以看到?jīng)]有錯誤。證明我的代碼寫對了

事實上這個是常見的Arduino串口打印代碼

我們繼續(xù)看這個最簡單的代碼就是閃爍燈的代碼

在一些較早的版本是用大家熟悉的#define的,,那新版里面的宏定義在哪里,?

通過搜索得知在這里,這個是高端的mega

我們普通的uno在這里

更加的深入一些是在這里,,硬件,,變體里面,。我們以后想自己為一款開發(fā)板兼容Arduino,,那么就是需要按照這樣的頭文件方式定義


在Arduino的使用過程中,一切的魔法好像就是一些按鍵,。那按鍵之下的物理意義有哪些呢,?

這個就是魔法按鈕

魔法的背后是這些東西

avr-gcc是gcc移植到avr的版本

avr-libs是avr的開源的C庫

還有一些軟件把編譯的文件變成Intel的hax文件

最后通過avr-dude下載到你的開發(fā)板里面

感興趣的可以去搜索一下這個下載工具

具體的這個配置工具在這個路徑

內(nèi)部是很多的配置文件

我們把這個這件復(fù)制

到這個bin里面

然后將bin加到你的環(huán)境變量里面

驗證通過

conf這個文件的添加可以讓你以后在編譯文件的時候不用輸入相關(guān)編譯器的路徑,很是方便

接下來我們寫一個c的程序,,雖然沒有編譯通過但是還是可以寫一下為什么的


頭文件是avr/io.h

是讓編譯器引入一個很長的列表,,關(guān)于處理器的一切細(xì)節(jié)。IO端口的地址,,名字等,。

long i,;是一個長整形的變量,用作延時計數(shù)器

1<<5;1向左移動5位


算了,,按說是可以的,。但是我搞不來了,一會兒去Mac搞

用arduino是不能編譯的,,用gcc才可以

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多