我有一個函數,當UART緩衝區非空時從UART設備獲取字符。C - 從uint8_t函數返回失敗
uint8_t getByte(void) {
while(!uartCharsAvail(uartBase)) {
// Wait for a character to become available
}
return uartGetChar(uartBase);
}
現在的問題是我想介紹一個超時,以便該函數在等待時間過長時會返回一個失敗。
uint32_t replyTimeout;
uint8_t getByte(void) {
replyTimeout = 0;
while(!uartCharsAvail(uartBase)) {
// Wait for a character to become available
if (replyTimeout++ > MAX_REPLY_TIME) {
return -1;
}
delay(1);
}
return uartGetChar(uartBase);
}
這裏的問題當然是我從uint8_t函數返回負數。
有沒有一種簡單的方法來解決這一問題?我能想到的唯一方法就是使函數boolean並傳遞一個uint8_t指針作爲參數。
是的,像所有C單字節輸入/處理函數一樣:使用int,所有成功的返回值都是非負數。 – Deduplicator 2014-10-09 20:32:38
我建議使用時鐘週期,而不是增加一個變量來衡量超時。例如clock()因爲使用變量不是很準確,它有時可能運行得更快或更慢。 – 2014-10-09 20:41:36