Bonjour,
Je suis confronté à un petit problème qui est sans doute tout bête, mais j'ai la tête un peu dans le guidon, et je ne vois du coup pas d'où vient de problème.
Je récupère un tableau de uint8_t (des octets non signés) et je veux les concaténer pour obtenir un uint32_t (double word non signé).
Cela semble fonctionner lorsque receive_buffer[0] et [1] sont nuls...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 spi_write_read(write_buffer, 4, receive_buffer, 4, 4); // remplit receive_buffer avec 4 octets retour = ((uint32_t)(receive_buffer[0]) << 24) | ((uint32_t)(receive_buffer[1]) << 16) | (receive_buffer[2] << 8) | receive_buffer[3];// concatène les 4 octets pour en faire un gros mot
Mais dès lors qu'il ne le sont pas, la concaténation donne : 0xFFFF3210 par exemple, alors que retour devrait valoir : 0x01903210
Merci pour vos réponses qui seront éclairantes
À plus
Partager