Olimex の ENC28J60-H を STM32L-Discovery に接続する際に問題が発生しました。そこで、ECON1 レジスタを読み取り、値を書き込み、再度読み取るコードを書きます。ここに問題があります。このコードの各行でデバッガーを段階的に (F10) 使用すると、すべてがうまくいきます。しかし、この行の後にブレークポイントを設定すると、レジスタは 0x00 を返します。私は、ENC が値をレジスタに書き込むのに十分な時間がないと判断しました。しかし、マニュアルには、周波数が 20 または 25 MHz の独自の水晶振動子があると書かれています (正確には覚えていません)。そして、私の周波数は約150 kHzです。とにかく、各 SPI 送信または受信の後に遅延 (ループ内の単純なカウンター) を設定します。そして、それは助けになりました。それから私は先に進みます。私は初期化関数(必要な値をレジスタに書き込むよりもソフトリセット)を書き、それをメイン関数で使用します。呼び出した後、ECON1 レジスタを再度読み取ります。そして、遅延があっても、私が得たのは再び0x00です。この状況で何をすべきか知っている人はいますか?