嵌入式與韌體

在中斷處理常式中應避免的事項,下列何者最為適當?

  1. A在旗標變數寫入1,通知主程式
  2. B清除表示中斷原因的位元
  3. C以printf輸出長字串,或是持續等待某事發生的迴圈這類耗時的處理
查看答案與解析

正確答案:C. 以printf輸出長字串,或是持續等待某事發生的迴圈這類耗時的處理

中斷處理常式若長時間執行,這段期間就無法回應其他中斷,主程式也會停住。printf需要花時間到輸出完成,內部還可能使用中斷,特別危險。處理常式中只應進行最低限度的處理,例如接收資料放入緩衝區、設立旗標,繁重的處理則交給主程式或工作(task)。也別忘了清除原因位元。

  • A. 以簡短處理通知主程式是好方法。
  • B. 若不清除原因位元,同一個中斷會反覆發生。
  • C. 正確。會長時間阻擋其他中斷與主程式。
練習這個領域 前往領域頁面

嵌入式與韌體的其他題目

  1. 將上面的程式啟用最佳化進行編譯後,即使發生計時器中斷,有時也不會呼叫led_on()。原因與對策的組合,下列何者正確?
  2. 在8位元微控制器上,計時器中斷每次將32位元變數ticks加1,主程式讀取ticks來計算經過時間。偶爾會讀到偏差很大的值,其原因下列何者正確?
  3. 關於UART序列通訊的特徵,下列何者正確?
  4. 以115200 bps的UART,用資料8位元、無同位檢查、停止位元1(8N1)的格式傳送時,每秒可傳送的位元組數最接近下列何者?
  5. UART的傳送端與接收端的鮑率若有些許偏差,可能會出現亂碼。偏差的容許範圍只限於大約數%左右,其原因下列何者正確?

這個領域的比較