Académique Documents
Professionnel Documents
Culture Documents
2
I. Micro-processeur Cortex-M
I.1. Architecture
Mémoire
adresses Flash
Données
: :
0x300C 5
0x3008 2
0x3000 : D-bus
: Retrouver ou
: Cortex-M
:
: S-bus Périphériques
: : processor core
Envoyer des
: E0835001 Données
I-bus
0x2008 E5923000
0x2004 E5901000
0x2000 :
:
Instructions
3
Pré-exécution du programme Exécution du programme
I. Micro-processeur Cortex-M
I.2. Intégration dans un microcontrôleur STM32F407
ROM
4
II. Le microcontrôleur STM32F407
package
Die : puce
Bond wire
Pins
II. Le microcontrôleur
STM32F407
Périphériques accessibles via les
bus AHB et APB.
Horloge
TIMER
DAC
ADC
6
III. Interface entre μP et périphérique
Périphérique I-bus
Registre
Cortex-M paramétrage
processor
Registre
mécanisme
Core
donnée
AHB/APB
Registre
synchronisation
Registre pour
autres fcts
9
I. L’Horloge (Clock)
Horloge interne
Horloge externe
11
Clock tree
I. L’Horloge (Clock)
I. 2. Registres de control et de paramétrage
• Clock configuration register (RCC_CFGR) (adress offset: 0x08) (reset value: 0x00000000)
unsigned int *RCC_CFGR = (unsigned int *) (adresse de base+ 0x08); // code Initialisation du pointeur
1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
B 8 0 0
RCC_CFGR[4:7] RCC_CFGR[10:12
]
RCC_CFGR[4:7]
RCC_CFGR[13:14
]
RCC_CFGR[0:1]
RCC_CFGR[10:12
]RCC_CFGR[13:14
]
Initialement le registre
contient le mot suivant 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
&
|
1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0
= 10 0 10 10 10 0 0 0 0 0 0 0 0 0 0 0
13
I. L’Horloge (Clock)
I. 2. Registres de control et de paramétrage
• Clock configuration register (RCC_CFGR) (adress offset: 0x08) (reset value: 0x00000000)
• Supposant qu’on ne connait pas la valeur initiale dans le registre, on applique la ligne de commande:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
|
1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0
= 1 ? 1 1 1 ? ? ? ? ? ? ? 1 1 ? ?
&
1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0
= 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0
• On ajoute alors la ligne de commande suivante:
14
*RCC_CFGR = * RCC_CFGR & 0x0000B80C;//Il faut 2 lignes de commande pour charger le masque.
I. L’Horloge (Clock)
I. 2. Registres de control et de paramétrage
• Peripheral clock register (RCC_AHB1ENR) (adress offset: 0x30) (reset value: 0x00100000)
Rôle: connecter les périphériques au signal d’horloge.
unsigned int *RCC_AHB1ENR = (unsigned int *) (adresse de base+ 0x30); // Initialisation du pointeur
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 8
Remarque: On peut modifier une partie du masque par accès d’un demi-mot ou même par octet.
15
II. General Purpose Input Output (GPIO)
GPIO
• 9 ports A, B, C, …, I.
• Chaque port possède 16 pins I/O sauf le port I qui possède 12.
GPIOx_ODR
GPIOx_OTYPER: sélection Push pull ou open drain
• Push pull: 0 binaire active le N-MOS et 1 binaire active le P-MOS.
• Open drain: 0 active le N-MOS et 1 le désactive, P-MOS est 17
toujours désactivé
II. General Purpose Input Output (GPIO)
II.1. Architecture et registres
• GPIO port output speed register (GPIOx_OSPEEDR) (x = A..I)
18
II. General Purpose Input Output (GPIO)
II.1. Architecture et registres
• GPIO port output type register (GPIOx_OTYPER) (x = A..I)
VDD VDD
1
0 0
1 1
0 0
M
1 1
0 0
Vss
Push pull Open Drain
19
II. General Purpose Input Output (GPIO)
II.1. Architecture et registres
• GPIO port pull-up/pull-down register (GPIOx_PUPDR) (x = A..I)
Pull-up Pull-down
Vers μC Vers μC 0
1
Rôle : en mode input, sélection d’une valeur à vide quand la pin n’est pas connecté 20
II. General Purpose Input Output (GPIO)
II.1. Architecture et registres
• GPIO port output data register (GPIOx_ODR) (x = A..I)
23
1) Donnez le programme permettant de mettre PD12 au niveau haut lorsqu’on détecte
un signal de niveau haut sur PA0.
PA 0
1
0
micro
PD12 1
0
Donnez le programme permettant de mettre PD12 au niveau haut lorsqu’on détecte un signal de niveau haut sur
PA0.
initia
While(1)
lisati
{
on
else
}}
appli
catio
n