Für meine These verwende ich einen ATmega16, um mit MCP2515 über SPI zu kommunizieren. Wenn wir den Beispielcode überprüfen, um SPI als Slave-Modus im Atmega16-Datenblatt einzurichten, erhalten wir den nächsten Beispielcode.C Unterschied zwischen Char-Funktion (void) und Void-Funktion (void)
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;
}
Wir verstehen nicht, warum sie char SPI_SlaveReceive (void) statt nur Leere SPI_SlaveReceive (void) verwenden. Kann uns jemand erklären, warum sie den Char anstelle von Void verwenden? Was ist der Unterschied? Ich kann keine gute Erklärung im Internet finden.
'SPI_SlaveReceive' gibt nichts zurück, also gibt es keinen Rückgabetyp außer' void'. Was ist das Problem in diesem –
Char SPI_SlaveReceive (void) nimmt nichts, wenn sie aufgerufen wird, und gibt ein Zeichen zurück. void SPI_SlaveInit (void) nimmt nichts, gibt nichts zurück –
Weil "sie" einen Wert zurückgeben wollen? – SingerOfTheFall