Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Configuration ARM Cortex M3 + Erreur 137 dans KEIL



  1. #1
    ArtemisHurtis

    Configuration ARM Cortex M3 + Erreur 137 dans KEIL


    ------

    Bonjour,

    Tout d'abord, j'aimerai savoir si vous saviez où est ce que je pourrai trouver un fichier Header contenant la définition de tous les registres avec les adresses mémoires, pour un STM32F103 (cortex m3). Si je peux rajouter j'aimerai que les noms des registres utilisés dans le fichier respectent les noms données dans la datasheet, car ce n'est pas toujours le cas.

    Je cherche un truc genre:
    #define GPIOA_CRL 0x40010800
    #define GPIOA_CRH 0x40010840
    ....

    Je sais que plein de config toute faite existent sur le net, mais ça ne m’intéresse pas j'aimerai reconfigurer chaque registres moi même (par pur plaisir ).

    Ensuite j'ai écris un mini code sur Keil que voici:

    #define address_GPIOA ((u32)(0x40010800))

    #define GPIOA_CRL address_GPIOA
    #define GPIOA_CRH (address_GPIOA + 0x04)
    #define GPIOA_IDR (address_GPIOA + 0x08)

    main (void){

    while(1){

    GPIOA_CRL = 0x00000100;

    }
    }

    Et keil me donne à la compilation:
    erreur 137: expression must be a modifiable lvalue

    Je suis sur que ça doit être une idiotie, mais quelqu'un serait m’éclairer sur cette erreur?

    Un grand merci d'avance pour les réponses.

    PS: je sais que le code n'a aucune utilité c'est juste pour tester.

    -----

  2. #2
    Jack

    Re : Configuration ARM Cortex M3 + Erreur 137 dans KEIL

    c'est normal, tu ne déclare nulle part la variable GPIOA_CRL.
    En clair, aucun emplacement mémoire n'a été réservé pour GPIOA_CRL, donc tu ne peux pas lui affecter de valeur.

    A+

  3. #3
    ArtemisHurtis

    Re : Configuration ARM Cortex M3 + Erreur 137 dans KEIL

    Heu en faisant

    #define address_GPIOA 0x40010800

    #define GPIOA_CRL address_GPIOA

    Je ne définis pas GPIOA_CRL comme étant une adresse mémoire dans laquelle je peux aller écrire par la suite??

  4. #4
    Jack

    Re : Configuration ARM Cortex M3 + Erreur 137 dans KEIL

    Je ne définis pas GPIOA_CRL comme étant une adresse mémoire dans laquelle je peux aller écrire par la suite??
    Non, #define est une commande du préprocesseur, pas ce qu'on appelle une définition au sens strict du langage C.

    Ta directive #define ne fait que remplacer une chaine de caractère par une autre, un peu comme un copier/coller.

    Donc dans la ligne
    GPIOA_CRL = 0x00000100;
    le préprocesseur va remplacer GPIOA_CRL par address_GPIOA, puis address_GPIOA par ((u32)(0x40010800)), ce qui va donner au final:
    ((u32)(0x40010800)) = 0x00000100;
    ce qui n'a aucun sens. Le compilateur va donc gérérer un message d'erreur.

    A+

Discussions similaires

  1. programmation avec keil
    Par bigboss93 dans le forum Électronique
    Réponses: 2
    Dernier message: 07/05/2011, 19h15
  2. Repartition des electrons dans configuration electronique
    Par menacefinlandaise dans le forum Chimie
    Réponses: 3
    Dernier message: 09/09/2010, 19h06
  3. [ARM] Problème dans la génération d'interruptions
    Par magnum0001 dans le forum Électronique
    Réponses: 8
    Dernier message: 14/05/2010, 07h43
  4. Quand il y a erreur dans la saisie des notes dans le logiciel info????
    Par Lucette dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 13/07/2009, 18h03
  5. Pb dans le panneau de configuration
    Par Coincoin dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 23/11/2003, 14h13
Découvrez nos comparatifs produits sur l'informatique et les technologies.