相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過(guò)

讓Arduino程序具備更好的兼容性
發(fā)布時(shí)間:2022-03-11 10:36 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 1229

不同型號(hào)的Arduino開(kāi)發(fā)板可能使用了不同的核心控制器,如Arduino UNO使用的核心控制器為8位AVR架構(gòu)的Atmega328P,而Arduino Due使用的是32位ARM Cortex m4架構(gòu)的 SAMD21G18A。兩者主要區(qū)別如下:

工作電壓不一樣。AVR核心的arduino通常工作電壓為5V,ARM核心的arduino通常工作電壓為3.3V。因此在接入外部設(shè)備時(shí),可能需要轉(zhuǎn)換通信電平,以兼容不同的工作電壓的外設(shè)。

在軟件層面,不同架構(gòu)的芯片對(duì)應(yīng)的編譯環(huán)境,可能相同數(shù)據(jù)類型的數(shù)據(jù)長(zhǎng)度不一樣。如在Arduino UNO、MEGA中,int及unsigned int占用2字節(jié)(16位);而在Arduino Due、Zero中,int及unsigned int占用4字節(jié)(32位)。

所以在編寫(xiě)和移植時(shí)程序時(shí),如果直接復(fù)用代碼,可能會(huì)造成一些錯(cuò)誤。

這種情況下,可以使用宏判斷來(lái)判斷當(dāng)前編譯的目標(biāo)開(kāi)發(fā)板上的核心MCU型號(hào),進(jìn)而選擇編譯對(duì)應(yīng)的語(yǔ)句,方式如下:

#ifdef(__arm__)

#endif

#ifdef(__AVR__)

#endif

可以通過(guò)以下宏判斷芯片類型:

芯片類型 對(duì)應(yīng)的宏
AVR __AVR__
ARM __arm__

可以通過(guò)以下宏判斷開(kāi)發(fā)板型號(hào):

開(kāi)發(fā)板型號(hào) 對(duì)應(yīng)的宏
Arduino UNO __AVR_ATmega328P__
Arduino MEGA __AVR_ATmega2560__
Arduino Leonardo __AVR_ATmega32U4__
Arduino Zero __SAMD21G18A__
Arduino Due __SAM3X8E__

兼容數(shù)據(jù)長(zhǎng)度不一樣的情況,可以使用intx_t指定長(zhǎng)度方式定義變量,如int8_t即是長(zhǎng)度為8位的整形。使用方式和int一樣:

int8_t a = 123;

常用類型如下:

類型 取值范圍 長(zhǎng)度(bit)
int8_t -128 ~ 127<br/>( -2<sup>7</sup> ~ 2<sup>7</sup> - 1) 8
uint8_t 0 ~ 255<br/>( 0 ~ 2<sup>8</sup> - 1) 8
int16_t -32,768 ~ 32,767<br/>( -2<sup>15</sup> ~ 2<sup>15</sup> - 1) 16
uint16_t 0  ~ 65,535<br/>( 0 ~ 2<sup>16</sup> - 1) 16
int32_t -2,147,483,648  ~ 2,147,483,647<br/>( -2<sup>31</sup> ~ 2<sup>31</sup> - 1) 32
uint32_t 0 ~ 4,294,967,295<br/>( 0 ~ 2<sup>32</sup> - 1) 32
Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進(jìn)入購(gòu)買
文章評(píng)論
0 條評(píng)論 按熱度排序 按時(shí)間排序 /350
添加表情
遵守中華人民共和國(guó)的各項(xiàng)道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過(guò)

分類選擇:
電腦辦公 平面設(shè)計(jì) 室內(nèi)設(shè)計(jì) 室外設(shè)計(jì) 機(jī)械設(shè)計(jì) 工業(yè)自動(dòng)化 影視動(dòng)畫(huà) 程序開(kāi)發(fā) 網(wǎng)頁(yè)設(shè)計(jì) 會(huì)計(jì)課程 興趣成長(zhǎng) AIGC