Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmez en C pour l'embarqué

Timer de STM 32 problème de comptage

1 mars 2021 à 18:59:17

Bonjour,

Je suis le cours "Développez en c pour l'embarqué" J'ai un problème sur le timer du STM32 en mode simulation avec micro vision.

J'ai bien recopié le code du cours.

#include <stm32f10x.h>

int main (void)

{

    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;  

 TIM2->ARR = 9999; // soit 270F en hexadécimal

    TIM2->PSC = 7199; // soit 1C1F en hexadécimal

   TIM2->CR1 = TIM2->CR1 | ( 1 << 0);

   //TIM2->CR1 = TIM2->CR1 | TIM_CR1_CEN;

    while(1)

    {

    }

    return 0;

}

A l'exécution, Les registres PSC et ARR se mettent bien à jour, le bit CR1 passe à 1, mais le comptage CNT reste à zéro.
Si quelqu'un a déjà rencontré ce problème, merci de m'aider.
  • Partager sur Facebook
  • Partager sur Twitter
4 mars 2021 à 13:52:27

Bonjour,

Je ne connais pas du tout le STM32, mais la séquence semble bien être le minimum à faire pour mettre en route un timer.
Comment regardes-tu la valeur du compteur? Si le logiciel est arrêté, bien évidemment rien ne se déroule et donc le compteur bougera pas. Il faut laisser le code tourner dans le while(1), puis l'arrêter pour voir la valeur du compteur. 

  • Partager sur Facebook
  • Partager sur Twitter

En recherche d'emploi.

9 mars 2021 à 15:13:16

c'est pourtant indiqué dans le cours https://openclassrooms.com/fr/courses/4117396-developpez-en-c-pour-lembarque/4634846-gerer-le-temps-avec-les-timers#/id/r-4635044

Compiler et passer en debug pour vérifier votre configuration. Mettez un point d’arrêt sur la ligne TIM2->CR1 |= TIM1_CR1_CEN et ouvrez la fenêtre liée au timer 2 dans Peripheral. Vous devriez observer que les registres ARR et PSC prennent bien les valeurs 0x270F (pour 9999) et 0x1C1F (pour 7199). Avancez le simulateur pour lancer le comptage et observez que le compteur, représenté par le registre CNT, s’incrémente bien.

  • Partager sur Facebook
  • Partager sur Twitter
16 mars 2021 à 23:29:54

Bonsoir,

merci pour vos réponses, en effet, je vois les valeurs que j'ai définies dans ARR et PSC.

A force de bidouiller, ça s'est mis à marcher tout seul, dommage que je n'aie pas compris où était le problème, j'aurais pu le faire partager. Mais j'y ai passé beaucoup de temps, et depuis, je n'ai plus rencontré ce blocage di compteur à 0. J'arrive déjà ai dernier projet qui est l'ADC.

  • Partager sur Facebook
  • Partager sur Twitter
17 mars 2021 à 7:07:39

Restons rationnels

En comparant le code posté ici, qui ne marche pas, et celui qui marche (merci de le poster) il y a sûrement une différence visible.

  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2021 à 15:46:21

michelbillaud,

Très bonne idée, mais il n'y a pas que le code qui fait tourner une application, il y a aussi des paramètres à rentrer, cependant, puisque j'ai rentré le code quand j'ai posé la question, je vais le mettre aussi maintenant que ça fonctionne.

#include <stm32f10x.h>

int main (void)

{

    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;  

              TIM2->ARR = 9999; // soit 270F en hexadécimal

    TIM2->PSC = 7199; // soit 1C1F en hexadécimal

            TIM2->CR1 = TIM2->CR1 | ( 1 << 0);//Mise en marche du compteur

while(1)

    {

if (TIM2->SR & TIM_SR_UIF)

 {

TIM2->CR1 = TIM2->CR1 & ~(1 << 0);

 }

    }

    return 0;

}

Il n'y a pas beaucoup de différence, j'ai simplement modifié un peu le code pour pouvoir arrêter le tirer, car dans le premier exemple, il tournait indéfiniment.

Il y a plein de choses mystérieuses, comme ce forum, la plupart du temps, je n'arrive même pas à déposer un message, j'ai beau cliquer sur répondre, il ne se passe rien, et le lendemain, je ne fais rien de plus et ça marche.

Ça faisait des jours que j'essayais de poster le message précédent, mais le bouton Répondre ne réagissait pas, c'est l'équipe d'openclassrooms qui a résolu mon problème, je leur dis un grand merci. Si un jour ça vous arrive, il faut vider le cache du navigateur, je ne peux pas vous dire commet puisqu'il en existe plein, mais vous trouverez plein de forum pour vous expliquer comment faire. Mon navigateur est safari, je travaille avec un Mac.

-
Edité par michelcapelle 26 mars 2021 à 15:50:32

  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2021 à 15:51:19

Si on clique au milieu du bouton pour poster un message, ca marche pas toujours, il l faut cliquer sur le haut du bouton.

C'est un site fait par les pros du web :-)

  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2021 à 9:16:36

merci pour l'info, j'ai déjà rencontré un problème de ce genre sur une machine virtuelle sous Linux, pour accéder à son login, il faut clique sur le visage et non là où on rentre le mot de passe. Mais en ce qui concerne le bouton de ce forum, je n'avais pas encore remarqué, j'y penserai si un jour je rencontre ce problème.
  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2021 à 12:53:40

Je ne crois pas que ce soit une histoire de cache. Le bouton "répondre" est situé au-dessus du menu de bas de page, mais pas assez au-dessus : la fenêtre du bas déborde sur presque tout le bouton (on a de la chance qu'il en reste un bout − en fait c'est de la malchance car si le bouton avait été entièrement caché, le bug aurait vite été corrigé). Il faut se mettre en plein écran pour que le bouton "répondre" se détache suffisamment. Comme ce problème est apparu il y a quelques mois, je pense que quelqu'un a modifié quelque chose dans le menu du bas (ou ailleurs) (*) qui a changé la géométrie des éléments, et a fait seulement un test en plein écran avant de valider. Après, ça ne veut pas dire que c'est cette modification qui est en cause, mais plutôt la définition de la géométrie du bas de la page.

Là je me mets en plein écran et je vais appuyer en bas du bouton. Si je ne reviens pas me contredire, c'est que ça a marché.

---

(*) Hypothèse : un item a été ajouté, ce qui a agrandi verticalement le menu du bas.

-
Edité par robun 27 mars 2021 à 12:56:58

  • Partager sur Facebook
  • Partager sur Twitter
31 mars 2021 à 16:23:10

Robin,

Non, moi, je n'ai pas ça du tout.

Le menu est bien détaché. Je travaille sur Mac avec Safari.

Voici l'image de mon écran.

J'ai la zone dans laquelle je rédige mon message, deux centimètres plus bas, à droite il y a le bouton, et un centimètre au-dessous, la Ligne "OPENCLASSROOMS.            Français"

  • Partager sur Facebook
  • Partager sur Twitter
31 mars 2021 à 16:58:22

On parle du bouton répondre en bas à droite

Si tu survoles le bouton tu vas être ébahi de voir qu'il est composé de deux moitiés qui changent l'aperçu du bouton selon qu'on est en haut ou en bas.

C'est très joli, on sent que le/la graphiste y a mis tout son coeur.

Un petit problème c'est que la moitié du bas ne répond pas quand on clique dessus, du coup le bouton n'est pas complètement fonctionnel. Mais qu'importe, qui irait chipoter sur un détail de ce genre ?  Pas le contrôle qualité d'OC, en tout cas !

  • Partager sur Facebook
  • Partager sur Twitter
1 avril 2021 à 1:16:00

En effet, on voit qu'ils passe quelque chose quand on survole ce bouton.

Mais j'ai cliqué vers le bas, le message est bien partie, j'ai fait ensuite "modifier" pour ajouter cette dernière ligne.

-
Edité par michelcapelle 1 avril 2021 à 1:17:10

  • Partager sur Facebook
  • Partager sur Twitter
1 avril 2021 à 9:52:18

Il me semble que le bouton n'est pas composé de deux parties. C'est juste qu'une bonne partie du bas du bouton est recouverte (pas visuellement, mais au niveau du focus de la souris) par le bas de la page (ou par un élément trop grand du bas de la page). On s'en rend compte en élargissant la fenêtre : quand elle devient sufisamment large, le bouton redevient entièrement cliquable.
  • Partager sur Facebook
  • Partager sur Twitter