Horloges

Lorsque l'on démarre un processeur, une des premières choses à faire est de configurer les différents éléments intervenant dans la génération des horloges afin d'obtenir les différentes fréquences d'horloges désirées.

Dans le processeur utilisé sur vos cartes de TP, le cœur et les périphériques utilisent des horloges différentes. Le schéma du manuel de référence page 208 détaille les différentes sources d'horloge et les différents composants intervenant dans la génération des horloges utilisées au sein de la puce.

Comme vous pouvez le constater, c'est un sujet complexe. Mais pour la suite du TP, nous allons avoir besoin d'avoir des horloges précises (notamment pour l'UART et les timers).

Pour l'instant nous allons vous donner un fichier objet contenant une fonction void clocks_init(void), qui initialise les horloges ainsi :

  • SYSCLK : 80 MHz
  • PCLK1 : 80 MHz
  • PCLK2 : 80 MHz
  • LSE : 32.768 kHz
  • HSI / LSI : inutilisées
  • MSI : 4 MHz

❎ Récupérez donc le fichier clocks.tgz, décompressez-le, puis comittez-le dans votre dépôt (oui, pour une fois vous avez le droit de committer un objet ! :) ).

❎ Appelez la fonction clocks_init() au début de votre main. Puis passez à la suite. Ce n'est qu'à la fin du TP que vous ferez vous-même l'initialisation des horloges.

Attention, votre processeur fonctionne maintenant à pleine vitesse (80 MHz au lieu de 4 MHz), donc vos LED clignotent 20 fois plus vite !