2

hal.cの 137 行目に、次のように表示されます。

SPDR = data;

hal_spi_write() 関数内。

SPDR はどこで定義されていますか?

ソース コード全体をダウンロードし、「SPDR」を検索しましたが、うまくいきませんでした。

コミュニティの専門家の 1 人に意見を求めていただければ幸いです。

4

2 に答える 2

7

SPDR厳密には変数ではありません — ハードウェア レジスタです。具体的には、Atmel AVR プロセッサの SPI データ レジスタです。

19.5.3. SPDR – SPI データレジスタ

  Bit             7     6     5     4     3     2     1     0
  0x2E (0x4E)  | MSB |     |     |     |     |     |     | LSB |  SPDR
  Read/write     R/W   R/W   R/W   R/W   R/W   R/W   R/W   R/W
  Initial value   X     X     X     X     X     X     X     X     undefined

SPI データ レジスタは、レジスタ ファイルと SPI シフト レジスタ間のデータ転送に使用される読み取り/書き込みレジスタです。レジスタに書き込むと、データ送信が開始されます。レジスタを読み取ると、シフト レジスタ受信バッファが読み取られます。

詳細については、使用している CPU のデータ シートを参照してください。上記のスニペットは、たとえばATmega48/88/168 データシート(170 ページ) からのものです。

于 2013-07-08T22:15:17.293 に答える
0

おそらくどこかのヘッダーファイルに含まれています。より高度なシナリオでは、リンカーとローダーによって提供される使用される変数が表示されます。

結局のところ、すべてはオブジェクト ファイルへのシンボルにすぎません。キーワードnm(1)を使用してコンパイラに伝える限り、ツールを使用してバイナリで見つけることができるほとんどの変数を参照できます。extern

于 2013-07-08T22:01:00.843 に答える