私は、MSP-EXP430G2がCode Composer Studioを使用してLEDを点滅させるためのチュートリアルプログラムを試しています。もともと、それは点滅のために無限ループを持っていた:内側のforループは無視されます
for(;;)
// This empty for-loop will cause the lines of code within to loop infinitely
{
P1OUT ^= 0x01;
// Toggle P1.0 using exclusive-OR operation (^=)
// P1OUT is another register which holds the status of the LED.
// '1' specifies that it's ON or HIGH, while '0' specifies that it's OFF or LOW
// Since our LED is tied to P1.0, we will toggle the 0 bit of the P1OUT register
for(i=0; i< 20000; i++);
// Delay between LED toggles. This for-loop will run until the condition is met.
//In this case, it will loop until the variable i increments to 20000.
}
}
これは、コピーしたとチュートリアルから貼り付けて、意図したとおりにそれが働きました。私はその後、私はそれが有限ループであることを得ることができるかどうかを確認したかったので、私は、ループに変更:以前のコード内で宣言jに
for (j = 0; j<10; j++)
。しかし、LEDはもはや点滅せず、デバッガでプログラムをステップ実行すると、for(i=0; i< 20000; i++);
行が完全にスキップされます。これは、jを0に設定した場合にのみ発生しますが、j> -1に設定した場合は発生しません。私が10から0に減少するループを作成すると、同じ問題が発生します。これは、ループが有限になったときにのみ起こると考えるようになります。
明らかなものがありませんか?
_この問題は、もはや再現できない問題や簡単な誤植によって引き起こされました。同様の質問がここでは話題になるかもしれないが、これは将来の読者を助けるとは思わない方法で解決された。これは、投稿する前に問題を再現するのに必要な最短のプログラムを特定して綿密に調べることで回避できます。_ –
_この場合、変数iが20000になるまでループします._どうですか? –
@WeatherVaneはい、そのループは点滅の間の遅延を設定します。私はLEDが何回点滅するかを指示する最初の(;;)を置き換えることを意味しました。 –