Modifications

Sauter à la navigation Sauter à la recherche
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. The ARM Cortex-M0 can only directly access data on 16-bit boundaries (every 2 or 4 bytes). Trying to access an odd-boundary byte (on a 1 or 3 byte location) will cause a Hard Fault and stop the MCU. Thankfully, there's an easy work around ... just use 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. 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