Bonjour,
Je souhaiterai vous demander un renseignement sur la déclaration d'un tableau. Quelle est la différence entre
int32_t playbuf[128];
uint8_t playbuf[128];
Je sais un int32_t il y a 4 octets et un uint8_t il y a 1 seul octet mais qu'est ce que cela change ? C'est de tout façon un tableau de 128 valeurs non ? Merci de vos réponses.
le premier va permettre de stocker des valeurs sur 32 bits. int32_t définit des entiers signés donc des valeurs comprises entre -2147483648 et 2147483647. Il occupera 512 octets en mémoire.
le second va stocker des valeurs sur 8 bits. uint8_t définit des entiers non signés donc des valeurs comprises entre 0 et 255. Il occupera 256 128 octets en mémore.
Merci, j'avais effectivement un peu oublié. Mais pourquoi 512 octets pour le premier ? Pour le uint8_t je comprend cela fait 2(exp 8). 512 octets cela fait 2(exp 9), cela fait 9 bits or on avait 32 bits normalement non ?
J'avais une fonction
/**
* @brief Receive an amount of data in non-blocking mode with DMA.
* @param hsai pointer to a SAI_HandleTypeDef structure that contains
* the configuration information for SAI module.
* @param pData Pointer to data buffer
* @param Size Amount of data to be received
* @retval HAL status
*/
HAL_StatusTypeDef HAL_SAI_Receive_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)
Et effectivement le pointeur uint8_t *pData nécessite un unit8_t et non un int32_t, je récupérai la moitié de résultat avec int32_t et avec le unit8_t je récupérai intégralement des données, c'est pour cette raison je demande plus de précision.
Tu as 128 cases de chacune 4 octets (32 bits) soit 4*128 = 512 octets.
Tu confonds la taille mémoire et le nombre de données que l'ont peut coder en int32