嵌入式開發幾乎離不開 bit 操作。
設定硬體暫存器、解析通訊協定封包、
控制 GPIO、讀取狀態旗標,
到處都是對特定 bit 的讀寫。
我剛開始寫嵌入式的時候,
程式碼長這樣:
// 設定 UART 控制暫存器
UART_CTRL |= 0x01; // 啟用 TX
UART_CTRL |= 0x02; // 啟用 RX
UART_CTRL &= ~0x04; // 關閉 loopback
UART_CTRL |= (0x03 << 4); // 設定 baud rate 為 115200
當下寫的時候覺得沒問題,
因為我知道每個數字代表什麼。
三個月後回來看,
完全不知道 0x01、0x02、0x04 是什麼意思,
要翻 datasheet 才能看懂。
這就是 magic number 的問題。