原文網址:https://itw01.com/2DKZIEA.html
以DDRx/BitSet代替PinMode
DDRx 決定了埠上不同引腳的輸入輸出狀態。例如,埠 A 有 6 個引腳,給暫存器賦值 000001 的話,前面4個引腳,都是輸入狀態,最後一個引腳則為輸出狀態。pinMode() 簡化將指定埠、暫存器賦值兩個過程完全省略了。我們只要告訴它,某個引腳的狀態,它就會設定設定好。 現在用 bitSet(DDRB, 5) 來代替它。LED的引腳D13 對應 AVR 的是埠B,第5個引腳,因此,我們設定埠B的暫存器 DDRB的第5位為1,即可以設定D13為輸出狀態。 原文網址:https://itw01.com/2DKZIEA.html
digitalWrite()函式都換成bitSet(PINB,5)
Arduino 1.0引進新的「F()」語法,如下:
Serial.println(F("This string will be stored in flash memory"));
這麼一來,該字串就只會存放於Flash裡,不會在SRAM裡,甚為方便。
程式裡常需要動態配置heap記憶體作為緩衝區,請配置適當的大小別浪費。有些程式庫也會配置緩衝區,譬如Serial序列傳輸介面會使用64 bytes的緩衝區,若你不需要高速傳輸,那麼可以此大小裁掉一半,這個緩衝區的大小定義在HardwareSerial.cpp裡#define SERIAL_BUFFER_SIZE 64。
各種型別的變數會佔用不同大小的記憶體,若能用byte儲存,就不該使用float。
盡量避免動態配置heap記憶體,因為會造成斷裂的情況,以致於即使釋放了也收縮heap佔用的範圍。
若能夠的話,應使用區域變數而非全域變數,區域變數只存在於stack內,呼叫完畢便會消失,但全域變數會一直佔用著記憶體。
https://ppfocus.com/0/fa1e8ec6b.html pin<>DDRx data reference
https://www.twblogs.net/a/5c76b47dbd9eee31cea5468e DDRx PORTx PInx reference