在hal.c的第137行,你会看到它:
SPDR = data;
在hal_spi_write()函数中。
SPDR在哪里定义?
我已经下载了整个source code并搜索了“SPDR”,但没有运气。
非常感谢来自社区的一位专家请进行评估。
答案 0 :(得分: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 datasheet,例如(第170页)。
答案 1 :(得分:0)
它可能包含在某个头文件中。在更高级的场景中,您将看到链接器和加载器提供的变量。
毕竟,一切都只是对象文件的符号。您可以使用nm(1)
之类的工具来参考二进制文件中可以找到的大多数变量,只要您使用extern
关键字告诉编译器。