在hal.c的第 137 行,你会看到它:
SPDR = data;
在 hal_spi_write() 函数中。
SPDR 在哪里定义?
我已经下载了整个源代码并搜索了“SPDR”,但没有运气。
希望社区中的一位专家参与进来。
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 页)。
它可能包含在某处的头文件中。在更高级的场景中,您将看到链接器和加载器提供的使用的变量。
毕竟,一切都只是目标文件的一个符号。您可以使用工具来引用您可以在二进制文件中找到的大多数变量,nm(1)
只要您使用extern
关键字告诉编译器。