필자는 코드를 잘 모르고 개선하기를 원합니다.시프트 및 또는 조작을 사용한 버퍼 조작
SPI (8 비트 통신)에서 일부 데이터를 수신하여이를 8 비트 버퍼에 저장합니다. 그것을 사용하려면 32 비트 단어를 사용하고 싶습니다. 첫 번째 코드는 작동하지만 두 번째 코드에 대해서는 확실하지 않습니다. 누구나 확인할 수 있습니까?
uint8_t *regData[5];
spi_xfer(fd, "\x24\xFF\xFF\xFF\xCC", 5, regData, 5);
uint32_t regVal;
regVal = (regData[0]);
regVal += (uint32_t)(regData[1]) << 8;
regVal += (uint32_t)(regData[2]) << 16;
regVal += (uint32_t)(regData[3]) << 24;
두 번째 :
uint8_t *regData[5];
spi_xfer(fd, "\x24\xFF\xFF\xFF\xCC", 5, regData, 5);
uint32_t regVal;
regVal = (regData[0]) | (uint32_t)(regData[1]) << 8 | (uint32_t)(regData[2]) << 16 | (uint32_t)(regData[3]) << 24;
도와 주셔서 감사합니다 많이! Brieuc 지역
이미 작동하는 코드의 경우 https://codereview.stackexchange.com/에서 대신 문의하십시오. 그 외에도 코드가 작동하는지 테스트를 작성해야합니다. – user694733
사이드 노트 :'uint8_t * regData [5];'는 두 버전에서 모두 틀린 것으로 보입니다. 포인터의 배열을 직렬화하는 것 같습니다. 그러나 'spi_xfer'가 무엇인지 모르기 때문에 명확하지 않습니다. – user694733