在我的论文中,我使用 ATmega16 通过 SPI 与 MCP2515 进行通信。当我们检查 Atmega16 数据表中将 SPI 设置为从机模式的示例代码时,我们会得到下一个示例代码。
void SPI_SlaveInit(void)
{
/* Set MISO output, all others input */
DDR_SPI = (1<<DD_MISO);
/* Enable SPI */
SPCR = (1<<SPE);
}
char SPI_SlaveReceive(void)
{
/* Wait for reception complete */
while(!(SPSR & (1<<SPIF)))
;
/* Return data register */
return SPDR;
}
我们不明白为什么他们使用 char SPI_SlaveReceive(void) 而不是 void SPI_SlaveReceive(void)。 有人可以解释一下为什么他们使用 char 而不是 void 吗?有什么不同? 我在互联网上找不到很好的解释。
最佳答案
SPI_SlaveReceive
接收到一些内容,因此它将该“内容”作为 char
返回,因此返回类型。如果输入返回 void
,您将无法获取收到的值,这不是很有用!
如果它没有返回收到的内容,您将如何获得收到的内容..?
关于C char函数(void)和void函数(void)的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40256730/