Modifications

Sauter à la navigation Sauter à la recherche
113 octets ajoutés ,  1 mai 2016 à 12:40
Ligne 90 : Ligne 90 :  
float f = (float)mybuffer;</nowiki>
 
float f = (float)mybuffer;</nowiki>
   −
Vous ne pouvez pas avoir la garantie qu'une telle méthode fonctionnera sur une plateforme 32-bits parce que '''mybuffer''' pourrait ne pas être aligné sur 2 ou 4-octets. L'ARM Cortex-M0 peut uniquement accéder directement à des données bornées en 16-bit (tous les 2 ou 4 octets). Essayer d'accéder à un octet impaire (l'octet en position 1 ou 3) causera une faute matérielle (''Hard Fault'') et stoppera le MCU. Heureusement, il y a un moyen simple pour contourner ce problème... faire un simple {{fname|memcpy}}!
+
Vous ne pouvez pas avoir la garantie qu'une telle méthode fonctionnera sur une plateforme 32-bits parce que '''mybuffer''' pourrait ne pas être aligné sur 2 ou 4-octets. Voyez l'article "[https://fr.wikipedia.org/wiki/Alignement_en_m%C3%A9moire Alignement en mémoire]" (Wikipedia)
 +
 
 +
L'ARM Cortex-M0 peut uniquement accéder directement à des données bornées en 16-bit (tous les 2 ou 4 octets). Essayer d'accéder à un octet impaire (l'octet en position 1 ou 3) causera une faute matérielle (''Hard Fault'') et stoppera le MCU. Heureusement, il y a un moyen simple pour contourner ce problème... faire un simple {{fname|memcpy}}!
    
  <nowiki>uint8_t mybuffer[4];
 
  <nowiki>uint8_t mybuffer[4];
29 917

modifications

Menu de navigation