Vous êtes sur la page 1sur 52

Ecole Nationale d'Ingnieurs de Tunis

STM32F4 tutorial

Carte STM32F4Discovery

Caractristiques de la carte
STM32F4Discovery

STM32F4 Block diagram

I.Noyau Cortex-M4
1. Architecture

Rappel: Architectures des processeurs


Harvard

Von Neumann

Cortex-M4: Harvard & RISC

I.Noyau Cortex-M4
I.2.Caractristiques (1)
Intgration troite des priphriques du systme
rduisant les cots (surface et dveloppement
du circuit intgr)
Jeu d'instructions Thumb2 combinant une
densit de code leve avec des performances
32 bits
FPU simple prcision mis en uvre dans tous
les microcontrleurs STM32F4xxx
Optimisation de la commande de l'alimentation
des composants du systme
Modes de veille intgrs faible consommation
d'nergie

I.Noyau Cortex-M4
I.2.Caractristiques (2)

Excution rapide de code (1.2 DMIPS)


permettant une frquence dhorloge plus
lente ou un temps de veille plus long
Division matrielle et multiplication rapide
Dterminisme et traitement d'alarme trs
performant pour les applications temps
critique
unit de protection de la mmoire (MPU) pour
les applications critiques pour la scurit
Vastes capacits de dbogage rduisant le
nombre de broches ncessaires.

I. Noyau Cortex-M4
I.3. Modes de traitements

Thread mode:
Utilis pour excuter les applications logicielles ordinaires
Le processeur est automatiquement en mode Thread la
suite dune RAZ (Reset)
Le registre de controle regarde si lexcution du
programme est effectue en mode privilgi ou nonprviligi

Handler mode:
Utilis pour traiter les exceptions
Le processeur retourne au mode Thread aprs avoir fini le
traitement dune exception (matrielle ou logicielle)

I. Noyau Cortex-M4
I.4. Niveaux de traitement
Niveau

Un programme en niveau prviligi peut utiliser toutes les instructions


et accder toutes les ressources.
Il peut changer le niveau de prvilge dans le registre de controle

Niveau

10

prviligi

non-prviligi

Un programme non-prviligi a un accs limit aux instructions MSR


et MRS (Move Special Registers to GP registers et inversement)
Ne peut pas utiliser les instructions CPS (Change Processor State)
Ne peut pas accder certains priphriques du noyau (system timer,
NVIC, system control block)
Son accs aux mmoires et aux priphriques du noyau est limit
Doit utiliser linstruction SVC (Superviser Call) pour changer le niveau
de traitement

I. Noyau Cortex-M4
I.5. Piles du noyau (Stacks)

Le processeur utilise 2 types de piles (Main Stack


et Process Stack).
Le pointeur de pile (Stack pointer) indique
ladresse du dernier programme empil
La valeur du pointeur de pile est toujours
enregistr dans le registre SP

11

I. Noyau Cortex-M4
I.6. Registres du noyau

12

I. Noyau Cortex-M4
I.6. Registres du noyau
1.6.1. Registres GP (1)

Les registres GP (R0..R12) sont utiliss pour


stocker les variables du programmes
(oprandes)
Cortex-M4 est un processeur RISC
architecture Load & Store:
Les valeurs des oprandes sont charges dans
les registres GP (Read)
Les oprations sont effectus sur ces registres
(Modify)
Le rsultat de lopration est envoy vers
ladresse de loprande modifier (write)

13

I. Noyau Cortex-M4
I.6. Registres du noyau
1.6.1. Registres GP(2)

Load & Store Process

14

I. Noyau Cortex-M4
I.6. Registres du noyau
1.6.2. Stack Pointer R13

Ce registre possde 2 niveaux (banques):


Main Stack Pointer
Process Stack Pointer

Permet de sparer lexcution de deux types de


traitement diffrents (Thread mode et Handler
mode) dans le cas dun noyau temps rel en cours
dxcution (RTOS)

15

I. Noyau Cortex-M4
I.6. Registres du noyau
I.6.3. Link Register R14

Ce registre est utilis pour garder ladresse des


rsultats retournes par des sous-programmes (de
type fonctions ou exceptions)

Il permet alors dutiliser rapidement les sousprogrammes

16

I. Noyau Cortex-M4
I.6. Registres du noyau
1.6.4. Program counter R15

Le program counter PC est utilis pour pointer


sur ladresse de linstruction qui suit la
dernire qui a t excute

Trs utile pour effectuer les retours des


interruptions

17

I. Noyau Cortex-M4
I.6. Registres du noyau
1.6.5. Control Register

Controle la pile utilis (MSP ou PSP)

Controle le niveau de privilge du programme


excut en mode Thread

Indique si lunit de calcul en de virgule flottante


(FPU) est active

18

I. Noyau Cortex-M4
I.7. Les exceptions et les interruptions
1.7.1. Exceptions et interruptions (1)

Le processeur Cortex-M4 autorise les exceptions et les interruptions


en mode Handler (sauf pour les exceptions de type Reset).

Une exception/interruption peut tre due une source matrielle ou


logicielle.

Une exception/interruption change le cours dexcution normal du


programme en cours.

Linterruption est un type particulier dexception o le processeur


reprend son cours dexcution normal aprs avoir effectu celui de
linterruption

Le NVIC (Nested Vectored Interruption Controller) permet dexcuter


les interruptions en mode Handler

19

I. Noyau Cortex-M4
I.7. Les exceptions et les interruptions
1.7.1. Exceptions et interruptions (2)

20

I. Noyau Cortex-M4
I.8. Les types de donnes

Le processeur Cortex-M4 supporte les types de


donnes suivants:
Mots (word): 32-bit
Demi-mot (halfword): 16-bit
Octet (Byte): 8-bit

21

I. Noyau Cortex-M4
I.9. La bibliothque CMSIS

CMSIS (Cortex Microcontroller Software Interface


Standard) dfinit un mode commun pour:

Laccs aux registres des priphriques


Dfinir les vecteurs des exceptions
Les noms des registres des priphriques du noyau
Une interface indpendante pour les noyaux temps rels (RTOS)

CMSIS contient les adresses et les dfinitions des


structure utilises par les priphriques du noyau CortexM4.

CMSIS simplifie le dveloppement des logiciels en utilisant


des fonctions prdfinies pour laccs et la manipulation
des registres des priphriques du noyau
22

I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.1. NVIC

NVIC est le controleur des interruptions. Il


permet de grer:

23

Grer jusqu 82 interruptions (selon le modle de


la carte STM32)
Les niveaux de priorits des interruptions (de 0 : la
plus prioritaire jusqu 15: la moins prioritaire)
Les interruptions externes non-masquables (NMI)

I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.2. System Core Block (SCB)

Le System Control Block (SCB) est linterface entre


le programmeur et le processeur

Il fournit les informations concernant:


Limplmentation du systme
Le contrle du systme
La configuration
Le rapport des exceptions

24

I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.3. SysTick Timer

SysTick est un compteur 24-bit en mode


dcrmentation

Il peut etre utili en compteur simple ou comme


systme temps rel (RTOS)

Il se dcrmente partir dune certaine valeur


(Auto Reload Valeur) juqu zero que lon peut
crire dans le registre STK_LOAD

Il permet de gnrer une interruption lorsquil


dborde (atteint 0)
25

I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.4. Memory protection unit (MPU)

Lunit de protection de la mmoire permet


damliorer lefficacit du systme par:

La division de la mmoire du processeur en plusieurs


rgions (jusqu 8 rgions)
Lidentification de la localisation, la taille et le mode
daccs pour chaque rgion gre par la MPU (Memory
protection unit)

La MPU permet

26

La configuration des attributs indpendants de chaque


rgion de la mmoire
Le chevauchement des rgions
Exporter les attributs de la mmoire vers le systme.

I. Noyau Cortex-M4
I.10. Les priphriques du noyau
I.10.5. Floating point unit (FPU)

Le processeur Cortex-M4F (F comme FPU) comprend


lextension FPv4-SP.
Calcul en virgule flottante (simple prcision)
S
Exposant
(1bit ( 8-bit)
)

Mantisse
(23 bits)

N=(-1)S.M.2(E-127)

FPU permet deffectuer:

27

Laddition, la soustraction, la multiplication, la division, laccumulation


et le calcul de la racine carre.
FPU permet aussi la conversion des nombres en virgule fixe en virgule
flottante
FPU permet de grer les registres de 32-bits pour les oprations Load,
Store et Move.

II. Architecture
II.1. Les bus

8 masters:
Cortex-M4F core I-bus, D-bus and S-bus
DMA1 memory bus
DMA2 memory bus
DMA2 peripheral bus
Ethernet DMA bus
USB OTG HS DMA bus

7 slaves:

Internal Flash memory ICode bus


Internal Flash memory DCode bus
Main internal SRAM1 (112 KB)
Auxiliary internal SRAM2 (16 KB)
Auxiliary internal SRAM3 (64 KB) (disponible que pour STM32F42xxx et
STM32F43xxx)
AHB1 peripherals including AHB to APB bridges and APB peripherals
AHB2 peripherals
FSMC (Flexible Static Memory Controller: LCD interfacing)

28

II. Architecture
II.1. Les bus (2)

29

II. Architecture
II.2. Organisation de la mmoire

4GB de
mmoire
addressable
8 blocks
mmoires
de 512MB
Types:

30

Data
Programme
s
Registres
I/O ports

II. Architecture
II.2. Organisation de la mmoire (2)

Unaligned memory access

Possibilit accder aux zones mmoires en


word/half-word/Byte
Avantage: Meilleure organisation de la mmoire
SRAM

Bit-banding: Technique permettant laccs


atomique un bit

31

Plus besoin de passer par la procdure


Read/Modify/write pour changer la valeur dun bit
dans un registre (Mais sur quelques zones
particulires de la mmoire)
Avantage: Rduction du nombre de cycles
dinstructions

III. Jeu dinstruction


III.1. Types dinstrcutions

2 types dinstruction

Compression du code?

Instruction 32-bit (pour la rapidit dxcution)


Instruction 16-bit (pour la compression du code): Thumb2
Une instruction prend N cycles dhorloge
Plus le nombre/la taille des dinstructions est lev (rapide) plus
la consommation dnergie est leve et La taille du code est
grande
Solution: Optimiser le nombre ou la taille des instructions pour
avoir la fois une excution rapide et une consommation
moindre

Avantages

32

Thumb2 donne 1.2 DMIPS pour 16-bit (Avantages des


processeurs ARM 7 et 9)
Amlioration de la compression de la taille du code jusqu 26%

III. Jeu dinstruction


III.2. Types dinstructions (2)

Gnralement des registres


Les rsultats sont sauvegards dans des
registres de destination
Exemple:
MOVSR0, R1
; R0 = R1, setting flags
IT MI
; IT instruction for the negative
;condition
RSBMIR0, R1, #0
; If negative, R0 = -R1

33

III. Jeu dinstruction


III.3. Flags dtat

34

III. Jeu dinstruction


III.4. Fonctions CMSIS

35

IV. Reset & Clock Control (RCC)


IV.1. Types de Reset

System Reset
Niveau bas au pin NRST (external reset)
Dbordement du Window watchdog (WWDG reset)
Dbordement du Independent watchdog (IWDG reset)
Software reset (SW reset)
Low-power management reset

Power Reset
Power-on/power-down reset (POR/PDR reset)
Brownout (BOR) reset
Quand le Standby mode est quitt

Buckup Domain Reset


Software reset (RCC_BDCR<BDRST>=1).
Alimentations VDD ou VBAT (ON) aprs avoir t (OFF) .
Naffecte que les registres RTC (Real Time Clock)

36

IV. Reset & Clock Control (RCC)


IV.1. Types dhorloges

Horloges systmes

HSI oscillator clock (Oscillateur interne)


HSE oscillator clock (Cristal/Cramique/Circuit
externe)
Main PLL (PLL) clock : Permet de multiplier/diviser
la frquence dhorloge HIS ou HSE (jusqu
168MHz)

Horloges secondaires

37

Oscillateur RC interne 32KHz (LSI)


Cristal externe 32.768KHz (LSE)
RTC (Real Time Clock)

IV. Reset & Clock Control (RCC)


IV.2. Cammande dhorloges

Slection dhorloge systme (Sysclk)

Rcupration dun signal dhorloge

HSI clock est automatiquement slectionn aprs un Reset


Le registre RCC_CR (RCC control register) permet de choisir
lhorloge utiliser

Pin MCO1 (PA8 en Alternate function)


Pin MCO2 (PC9 en Alternate function)
Slectionner le signal dhorloge rcuprer dans le registre
RCC_CFGR
Condition: Fclk <100 MHz (Frquence max dun pin GPIO)

Mesure de la frquence dhorloge

38

Timer 5/Channel 4 en mode IC pour mesurer LSI/LSE/


Timer 11/Channel1 en mode IC pour mesurer HSE

IV. Reset & Clock Control (RCC)


IV.3. Schema des horloges

39

V. Interruptions
V.1. Interrupt handling (IRQ_Handler)

IRQ (Interruption ReQuest) est une exception:

Signale par un priphrique


Gnre par logiciel

Condition pour lxcution dune interruption

Autorisation dinterruption du priphrique


Autorisation dinterruption par NVIC

Peripheric
IE
IRQ
pending
NVIC IE
40

Priority
level

IRQ flag

IRQ
execution

V. Interruptions
V.2. Sources dinterruptions

82 sources dinterruptions gres par NVIC


Chaque IRQ est caractris par:

Sa position (0..81)
Son niveau de priorit (fixe ou programmable)
Son adresse dans la mmoire programme

Exemples

41

VI. Priphriques
V.I. GPIO
VI.1.1. Caractristiques

Modes de sortie: push-pull/open drain et pull-up/pulldown


Slection de la frquence maximale du signal de
sortie (I/O speed)
Modes dentre: floating, pull-up/pull-down, analog
Bit set and reset register (GPIOx_BSRR) pour laccs
direct aux bits du registre de sortie GPIOx_ODR
Mcanisme de verrouillage jusquau prochain Reset
par la configuration du regsitre (GPIOx_LCKR)
Fonctionnement en mode analogique
Fonction Toggle rapide (en 2 cycles dhorloges)

42

VI. Priphriques
VI.2. GPIO
VI.1.2. Alternate functions (AF)

Multiplexage trs flexible des pins des


GPIO (jusqu 16 AF par I/O)

La sortie est rcupre dans le registre


de sortie (GPIOx_ODR) ou dans un
priphrique (alternate function output)

Lentre est mise dans le registre


(GPIOx_IDR) ou dans un priphrique
(alternate function input)

43

VI. Priphriques
VI.2. Timers
VI.2.1. Types

Types des timers priphriques

2 x advanced-control timers (TIM1 & TIM8)


10 x general-purpose timers (TIM2 TIM5 &
TIM9TIM14)
2 x basic timers (TIM6 & TIM7)

Modes
Input capture
Output compare
PWM generation (edge- or center-aligned
modes)
One-pulse mode output

44

VI. Priphriques
VI.2. Timers
VI.2.1. Caractriqtiques

Rsolution: 16-bit/32-bit
Compteur: Up/Down/Up-Down
Prescaler: 16-bit
Gnration de requte DMA (Advanced
Control Timers 1&8, GP Timers 2&5, 3&4,
Basic Timers 6&7)
Capture/Compare channels : de 1 jusqu 4
(sauf pour les Basic Timers 6&7)
Sorties complmentaires: pour les Advanced
Timers 1&8 (pour la gnration de PWM
triphas)
Frquence dhorloge max=42MHz jusqu
45
84MHz

VI. Priphriques
VI.3. Watchdogs
VI.3.1. Independent Watchdog (IWDG)

12-bit downcounter
8-bit prescaler
Horloge ddi: Oscillateur RC 32KHz independent
(LSI)
Possibilit doprer en modes Stop/Standby
Utilisation:

Reset du systme en cas derreur/chec


Reset du systme au dbordement du IWDG

Activation/Dsactivation du IWDG

46

Logicielle: Selon la valeur du registre IWDG_KR


Matrielle: Par la configuration des bits doption de la
mmoire Flash (User option bytes)

VI. Priphriques
VI.3. Watchdogs
VI.3.2. Window Watchdog (WWDG)

7-bit downcounter
Utilise lhorloge principal FPCLK1/(4096*Prescaler)
Protection du systme contre:

Conditions de Reset du systme

Les interfrences externes


Lexcution errone des programmes
Le dcompteur atteint une valeur infrieure 0x40
La valeur initiale (Auto-Reload value) est suprieure 0x7F

Possibilit de gnrer une interruption la valeur 0x40


Activation

47

Toujours Dsactiv aprs un Reset


Activ par logiciel WWDG_CR<WDGA>=1

VI. Priphriques
VI.4. Convertisseur Analogique Numrique (ADC)
VI.4.1.Caractristiques

19 canaux multiplxs: 16 canaux externes/ 2 canaux internes/1


canal pour Vbat
Rsolution configurable:12-bit/10-bit/8-bit /6-bit
Conversion en mode Single/Continu/Discontinu
Gnration dinterruption par:

Fin de conversion
Watchdog analogique
Dbordement dvnements (overrun)

Conversion automatique en mode Scan du canal 0 au canal N


Alignement des donnes configurable
Temps dchantillonnage programmable par canal
Trigger externe (Timer par exemple)
Gnration de requte DMA pendant la conversion en mode
Regular Channel
ADC input range: VREF =<VIN =<VREF+
48

VI. Priphriques
VI.4. Convertisseur Analogique Numrique (ADC)
VI.4.2.Pins

49

VI. Priphriques
VI.4. Convertisseur Analogique Numrique (ADC)
VI.4.3.Interruptions
Sources dinterruptions de lADC

ADC_CR1 Register (Control Register1)

50

VI. Priphriques
VI.5. Convertisseur Numrique Analogique (DAC)
VI.5.1.Caractristiques

2 x DAC configurable en 8-bit/12-bit

Alignement configurable des sorties ( droite ou gauche) en


mode 12-bit

Gnration de signal triangulaire/alatoire

Conversions en mode dual indpendantes ou simultanes

Requte DMA pour chaque canal

Trigger externe pour lancer la conversion

Tension dentre maximaleVREF+


51

VI. Priphriques
VI.5. Convertisseur Numrique Analogique (DAC)
VI.5.2.Pins

Pins de sorties (DAC_OUTx): PA4 et PA5 configurs


en mode analogique

Valeur analogique de la sortie

52

Vout=VREF+(DOR/2N-1)
N: 8-bit/12-bit