• [^] # Re: Aucun !

    Posté par (site web personnel) . En réponse au journal Go et Rust, lequel est le remplaçant du C ?. Évalué à 3. Dernière modification le 12 septembre 2018 à 15:07.

    l'adresse du registre étant volatile, etc.

    C'est le registre qui doit être volatile. Pas son adresse.
    En faisant (uint16*)(adresse_registre) tu enlève le volatile du registre.
    Le code correct serait peut-être:

    uint16 val = *(volatile uint16*)adresse_registre;

    (Ton code pourrait encore avoir le problème si tu a la même race condition deux fois de suite)