2016-10-26 10 views
-4

제 논문에서는 SPI를 통해 MCP2515와 통신하기 위해 ATmega16을 사용하고 있습니다. Atmega16 데이터 시트에서 SPI를 슬레이브 모드로 설정하기 위해 예제 코드를 검사 할 때 다음 예제 코드를 얻습니다. 우리는 그들이 문자 SPI_SlaveReceive (무효)를 사용하는 이유를 이해하는 대신 단지 무효 SPI_SlaveReceive (무효)하지 않는char 함수 (void)와 void 함수 (void) 사이의 C 차이

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; 
} 

. 누군가 void 대신에 char을 사용하는 이유를 설명 할 수 있습니까? 그 차이점은 무엇입니까? 인터넷에서 좋은 설명을 찾을 수 없습니다.

+0

'SPI_SlaveReceive'는 아무것도 리턴하지 않으므로'void'가 아닌 리턴 유형이 없습니다. –

+1

char의 문제점은 무엇입니까? SPI_SlaveReceive (void)는 호출 될 때 아무 것도 취하지 않으며 char를 반환합니다. void SPI_SlaveInit (void) 아무것도 사용하지 않고 아무것도 반환하지 않습니다. –

+4

"they"가 값을 반환하기를 원하기 때문에? – SingerOfTheFall

답변

1

SPI_SlaveReceive은 무언가를받습니다. 따라서 "무언가"는 char으로 반환되므로 반환 유형이 반환됩니다. void을 반환하기 위해 입력 한 경우받은 값을 얻을 수 없으므로별로 유용하지 않습니다!

받은 내용을 반환하지 않은 경우 수신 한 내용을 어떻게 얻으실 수 있습니까?

관련 문제