Bonjour.
En analysant les programmes exemples en C pour le Raspberry pico, je rencontre ces 2 instructions qui me posent problème :
Si j’interprète bien la première instruction : si ep->next_pid est vrai alors val contiendra son ancienne valeur combinée avec un or logique avec la valeur de USB_BUF_CTRL_DATA1_PID.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // Set pid and flip for next transfer val |= ep->next_pid ? USB_BUF_CTRL_DATA1_PID : USB_BUF_CTRL_DATA0_PID; ep->next_pid ^= 1u;
Et si ep->next_pid est faux val sera combinée avec or et la valeur de USB_BUF_CTRL_DATA0_PID.
Est-ce bien cela ?
Après analyse des instructions C précédant celles ci, il s'avère que ep->next_pid ne peut contenir que 0 ou 1 donc l'instruction ep->next_pi ^=1u équivaut à ep->next_pid= 0.
Pourquoi donc faire un ou exclusif ? y-a-t-il une raison cachée ?
merci.
Partager