嵌入式與韌體

以C語言的位元欄位(bit-field)結構來表示週邊電路的暫存器時,需要注意的地方下列何者正確?

  1. A使用位元欄位後,程式一定會變快2倍
  2. B位元欄位的位元排列順序等可依編譯器而異,換成別的編譯器可能會操作到與意圖不同的位元
  3. C位元欄位無法表示8位元以上的值
查看答案與解析

正確答案:B. 位元欄位的位元排列順序等可依編譯器而異,換成別的編譯器可能會操作到與意圖不同的位元

位元欄位寫起來易讀,但在C語言的規格中,結構內的位元是從高位開始排列還是從低位開始排列、欄位跨越邊界時的處理、存取的寬度等,都交由編譯系統決定。因此即使在某個編譯器上正確運作,在別的編譯器或CPU上也可能讀寫到不同的位元。微控制器廠商提供的標頭檔,多半是以遮罩與位移寫成的。

  • A. 速度不一定會提升。
  • B. 正確。需要注意可攜性。
  • C. 也能表示8位元以上的欄位。
練習這個領域 前往領域頁面

嵌入式與韌體的其他題目

  1. 在許多微控制器上,將不會變更的大型表格(字型資料等)加上const宣告,其優點下列何者正確?
  2. JTAG或SWD這類除錯用介面所能做到的事,下列何者正確?
  3. 想每1 ms進行一次固定的控制運算。在不使用OS的微控制器上,下列何者是最適當的實作方式?
  4. 關於微控制器的欠壓偵測(BOD、brown-out reset)的作用,下列何者正確?
  5. 在可為中斷設定優先順序的微控制器上,執行低優先順序中斷的處理常式期間,發生了高優先順序的中斷。一般會如何(假設設定為允許中斷巢狀)?

這個領域的比較