2

hal.c的第 137 行,你会看到它:

SPDR = data;

在 hal_spi_write() 函数中。

SPDR 在哪里定义?

我已经下载了整个源代码并搜索了“SPDR”,但没有运气。

希望社区中的一位专家参与进来。

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 回答