2

この行は期待どおりに機能していません:

uartPushPos = (uartPushPos + 1) % UART_TX_BUFF_LENGTH;

ただし、これは理論的には同じことですが、機能します。

//if (uartPushPos == UART_TX_BUFF_LENGTH - 1){
if (uartPushPos >= UART_TX_BUFF_LENGTH - 1){
    uartPushPos = 0;
} else {
    uartPushPos++;
}

UartPopPosはchar型であり、UART_TX_BUFF_LENGTHは16に設定されたプリプロセッサ変数です。

2番目のコードセグメントが機能するのに、最初のコードセグメントは機能しないのはなぜですか?

大きな違いがある場合は、PICマイクロコントローラー16fにSourceBoostBoostCコンパイラーを使用しています。

ありがとう

4

1 に答える 1

4

uartPushPosが0未満の場合、またはが。以上の場合は異なりUART_TX_BUFF_LENGTHます。

負の数のModが私の脳を溶かしているも参照してください

于 2011-06-26T13:53:18.390 に答える