Étude des microcontrôleurs STM32 : GPIO

Ministère de l’Enseignement Supérieur et de la Recherche 

Scientifique 

Université de Carthage 

Institut Supérieur des Technologies de l’Information et de la Communication 

Fascicule de travaux pratiques 

Architecture des microcalculateurs 

Étude des microcontrôleurs STM32- 

Préparé par : M. Sofiene SAIDI Maitre-Assistant -ISTIC- 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 1 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Avant-propos 

Ce fascicule de travaux pratiques est destiné aux étudiants de la deuxième année Licence Appliquée en Informatique industrielle (LAII) de l’Institut Supérieur des Technologies de l’Information et de la Communication de Borj Cedria ISTIC-. L’objectif du fascicule est mettre à la disposition des étudiants un document de travail leur permettant de mieux explorer la théorie exposée dans le cours « Architecture des microcalculateurs » et de faciliter sa mise en pratique pendant les manipulations expérimentales. Aussi, il est important, non seulement d’acquérir les savoir faires nécessaire à une bonne utilisation des équipements et les bancs didactiques, mais également de comprendre les méthodes exposées dans le cours afin d’en tirer le maximum de profit sans détériorer le matériels mis à la leur disposition. 

Ne pas oublier à la fin des manipulations d’éteindre les sources d’alimentations, de débrancher les câbles, et de ranger le matériel et les chaises correctement

Sofiene SAIDI 2 © 

  1. L’environnement de développement des microcontrôleurs STM32 : 

I.1. Environnement matériel : 

Le STM32F4-Discovery est une carte de développement conçu pour l’outil officiel de la famille STMicroelectronics STM32F4, qui comprend le microcontrôleur STM32F407VGT6. 

Il est conçu pour permettre aux étudiants de tester facilement et explorer la capacité de ce type de microcontrôleur. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 3 © 

Les STM32F4 Discovery sont des cartes de démonstration développée chez STMicroelectronics à prix relativement bas afin de permettre aux développeurs des systèmes embarqués de maitriser les microcontrôleurs STM32. Le Kit STM32F4 inclut tous les périphériques nécessaires pour s’initier à la programmation des microcontrôleurs de la famille STM32. 

La STM32F4 Discovery est constitué de deux parties (voir figure) 

La partie programmation (ST-link): 

ST-LINK (voir figure) est un programmateur et débogueur in-circuit pour les STM32. L’interface JTAG / SWD (Serial Wire Debug) est utilisé pour communiquer avec le microcontrôleur STM32, situé sur la deuxième partie de la carte. La communication avec l’IDE (Environnement de développement intégré installé sur le PC) se fait à travers une interface USB….. 

La partie exécution : c’est la partie qui contient le microcontrôleur de type STM32F407VG et d’autres périphériques. 

Les Pins d’Entrées/Sorties GPIO Bouton poussoir NOIR – Un bouton RESET 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 4 © 

B2- Bouton poussoir BLEU-B1- Un bouton User connecté à A0 Diodes LEDs LED rouge : 

PD14 

LED verte : 

LED orangé : PD12 

PD13 Quartz 8MHz 

I.2. Environnent logiciel : 

Il existe nombreux environnement de développement pour les microcontrôleurs STM32. On cite : 

Fournisseur Description Hitex : www.hitex.com GNU C/C++, USB/JTAG IAR : www.iar.com IAR C/C++, USB/JTAG Keil : www.keil.com ARM C/C++, USB/JTAG Raisonance : www.raisonance.com GNU C/C++, USB/JTAG Rowley : www.rowley.co.uk GNU C/C++, JTAG CooCox GNU C/C++, USB/JTAG 

Dans notre cas nous avons choisis le seul logiciel gratuit CooCox. C’est un environnement de développement intégré (IDE) qui offre les outils nécessaires au développement des applications embarquées : compilateur et débogueur C/C++, macro-assembleur, éditeur de liens/localisateur et un générateur de fichier HEX. 

Veuillez trouver en annexe les étapes nécessaires pour créer un projet sous CooCox. Ainsi, la connexion avec la carte STM32F4, le chargement et le débogage des programmes. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 5 © 

LED jaune : PD15 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Atelier N°=1 La gestion des ports d’Entrées/Sorties: GPIO 

Objectifs : Les séances de Travaux Pratiques se déroulent sur des cartes STM32F4- Discovery développées par STMicroelectronics et équipées d’un processeur ARM Cortex-M4. L’environnement de compilation et de debug intégré utilisé est le logiciel Cocoox. L’objectif de cette séance est de faire clignoter une LED. Les LEDs de la carte STM32F4-Discovery sont reliées aux sorties d’un périphérique appelé GPIO (General Purpose Input/Output). Le GPIO est un composant très utilisé qui permet de mettre à 0 ou à 1 les sorties qu’il contrôle 

Introduction : 

Un port d’entrée/sortie communique avec l’extérieur du microcontrôleur par le biais de plusieurs fils (broches), en général regroupés par paquets de 8 ou 16. Il communique avec le processeur par sa seule et unique possibilité : les bus d’adresses et de données. Ceci est commun à tous les périphériques du microcontrôleur. 

Par voie de conséquence, tout périphérique possède en son sein un certain nombre de registres accessibles en lecture ou écriture par le cœur. Ceux-ci ont pour rôle de configurer et d’utiliser le périphérique. 

Un port d’entrée / sortie a donc pour rôle d’imposer (Output) ou de lire (Input) un niveau de tension (associé aux niveaux logique ‘0’ ou ‘1’) sur l’ensemble de ses broches. Selon le microcontrôleur, le niveau logique ‘1’ peut être 5V, 3V3 ou encore 1V8. Le port d’E/S possède donc au minimum deux registres de configuration (l’un qui spécifie pour chaque broche sa direction, l’autre spécifiant la technologie utilisée) et un registre d’utilisation qui est à l’image logique des broches. 

Parmi les technologies possibles, en sorite, on trouve : 

Mode Push Pull Mode Open Drain La technologie possède deux interrupteurs (K1, K2, des transistors MOS complémentaires). K1 et K2 sont 

Sofiene SAIDI 6 © 

Un seul interrupteur est commandé, l’autre est maintenu bloqué (on ne le fait pas 

apparaître): systématiquement inversés : La broche 

la broche ne peut être portée par peut donc être portée au potentiel 0V ou 

le port qu’à une tension de 0V.Remarquons 3,3V. 

que si K1est ouvert, la broche est “en l’air”. Ce sera donc au circuit extérieur de fixer le potentiel de la broche dans cet état précis. 

Parmi les technologies possibles, en entrée, on trouve : 

Mode entrée flottante (floating input) Mode entrée tirée au niveau bas (Pull Down 

input) La broche, côté du port E/S, est laissée libre, flottante. Ainsi, c’est le circuit extérieur qui est totalement maître du potentiel de la broche. Cela veut aussi dire, que si le circuit extérieur est déconnecté, la broche possède un potentiel inconnu 

La broche, côté du port E/S, est reliée au 0V par l’intermédiaire d’une résistance (dite de rappel). L’avantage, c’est que si le circuit extérieur est déconnecté, le potentiel de la broche se retrouve à 0V grâce à la résistance de rappel. Cela veut aussi dire, que le circuit extérieur, pour imposer un potentiel, doit avoir une résistance de sortie faible devant R, sinon, la tension chute. Elle est faussée. 

  1. Travail de l’étudiant : 

. Le travail demandé dans ce TP est l’équivalent de « Hello world » pour les périphériques, le blinky, qui consiste à faire clignoter des LEDs et ce à travers la manipulation du GPIO. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 7 © 

L’objectif est d’écrire un programme qui fait clignoter les 4 LEDs. Afin de comprendre en détail le fonctionnement et l’utilisation des périphériques (ici dans le cas du GPIO), nous utiliserons deux approches: La programmation directe des registres et l’utilisation de la librairie standard développée par le constructeur (CMSIS, ARM Cortex Microcontroller Software Interface Standard). 

  1. Réalisation 
  2. Programmation directe des registres 

Les adresses des registres sont toutes prédéfinies dans le fichier stm32f4xx.h par l’intermédiaire de #define. Par exemple, pour écrire la configuration 0x1dans le registre GPIOx_MODER du GPIOG, on utilisera l’affectation: GPIOG->MODER = 0x1; Les LEDs sont connectées au port PD du GPIO ( User Manual STM32F4-Discovery). En s’aidant de la documentation STM32F4 Series Reference Manual décrivant le fonctionnement et les registres des périphériques (à partir de la page 280), l’objectif consiste à écrire les trois fonctions suivantes (dans un fichier main.c) qui permettront de manipuler les 4 LEDs: 

void LD_Initialize(void) qui permet d’initialiser le GPIO pour utiliser les LEDs. Les registres à configurer sont: 

o RCC_AHB1ENR pour activer l’horloge du port GPIOD. o GPIOx_MODER pour configurer la broche PD.12/13/14/15 en General purpose output mode. o GPIOx_OTYPER pour configurer la broche PD. 12/13/14/15 en Output push-pull. o GPIOx_OSPEEDR pour configurer la broche PD. 12/13/14/15 en 50 MHz Fast speed. o GPIOx_PUPDR pour configurer la broche PD. 12/13/14/15 en Pull-down. 

void LED_On(void)qui permet d’allumer les 4 LEDs. Les registres à configurer sont: 

o GPIOx_ODRpour mettre la broche PD. 12/13/14/15 à 0. 

void LED_Off(void)qui permet d’éteindre les 4 LEDs . Les registres à configurer sont: 

o GPIOx_ODR pour mettre la broche PD. 12/13/14/15 à 1. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 8 © 

1- Ecrire un programme principal qui fait clignoter les 4 LEDs en utilisant ces 3 fonctions. Pour que le clignotement soit visible, il faudra ralentir l’exécution du programme en utilisant par exemple une boucle for entre deux clignotements: for (i=0; i<10000000; i++); Complétez vos compte-rendu avec une copie du code, des explications sur la configuration des registres dans votre programme. 

2- Utiliser l’outil de débogage pour visualiser l’état de chaque registre. 

  1. Utilisation la librairie standard CMSIS 

L’ARM Cortex Microcontroller Software Interface Standard (CMSIS) est une librairie de pilotes prédéfinis pour la série des processeurs ARM Cortex-M. L’utilisation de ces librairies simplifie le développement d’applications. Par exemple, plusieurs fonctions déjà écrites pour la manipulation des GPIO sont présentes dans le fichier stm32f4xx_gpio.h 

1- Ecrire un deuxième programme (dans un fichier main.c) qui fait clignoter les quatre LEDs en utilisant les fonctions CMSIS fournies dans stm32f4xx_gpio.h 

2- Modifier le programme précédent pour allumer successivement chaque LED précédente en effectuant une rotation dans le sens horaire. Expliquez dans un paragraphe le fonctionnement du programme. 

3- Modifier le programme précédent pour allumer les LEDs lorsqu’un bouton lié à PA0 est appuie. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 9 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Atelier N°=2 La conversion analogique numérique: ADC 

Objectifs : Dans ce TP, l’ADC est l’élément qui va permettre d’acquérir une ou plusieurs tensions analogiques. Dans notre cas, ces tensions sont délivrées par un potentiomètre et un capteur de température, 

III. Travail de l’étudiant : 

Le travail demandé dans ce TP consiste à faire convertir une tension issue d’un potentiomètre et ce à travers le ADC d’un microcontrôleur STM32F407VG. 

  1. Réalisation 

Le but de cette application est de développer une application sur Coocox CoIDE qui mesure la variation de la tension issue du potentiomètre de la carte CT OpenShield en utilisant le convertisseur analogique numérique du microcontrôleur ADC1. 

1- Créer un nouveau projet et ajouter les périphériques nécessaires. 

2-Créer une fonction « RCC_Configuration_Ad c1 » pour configurer l’horloge et le bus de multiplexage pour faire fonctionner l’ADC1- chaine 8 

void RCC_Configuration_Adc1(void) { 

RCC_AHBxPeriphClockCmd(RCC_AHBxPeriph_GPIOx, ENABLE); RCC_APBxPeriphClockCmd(RCC_APBxPeriph_ADCx, ENABLE); } 

Sofiene SAIDI 10 © 

3-Créer une fonction « GPIO_Configuration_A dc1» pour configurer les entrées/sorties 

void GPIO_Configuration_Adc1(void) { 

GPIO_InitTypeDef GPIO_InitStructure; 

GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_xx; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; GPIO_Init(GPIOx, &GPIO_InitStructure); } 

4-Créer une fonction « ADC1_Configuration_» pour le ADC1 

void ADC1_Configuration(void) { 

ADC_CommonInitTypeDef ADC_CommonInitStructure; ADC_InitTypeDef ADC_InitStructure; 

ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent; ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2; 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; 

ADC_CommonInit(&ADC_CommonInitStructure); 

ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; 

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; 

ADC_StructInit(&ADC_InitStructure); 

ADC_Init(ADC1, &ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_x, 1, ADC_SampleTime_144Cycles); 

ADC_EOCOnEachRegularChannelCmd(ADC1, ENABLE); 

ADC_Cmd(ADC1, ENABLE);

5-Créer une fonction « Get_ADCValue()» qui retourne le résultat de conversion 

int get_ADCValue() { ADC_SoftwareStartConv(ADC1); 

while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); valeur_ADC= ADC_GetConversionValue(ADC1); } 

Sofiene SAIDI 11 © 

6- Ecrire les squelettes de ces fonctions dans le fichier main.c correspondant, 

7-utiliser le système de débogage afin de vérifier le bon fonctionnement du programme. 

8-On désire afficher le résultat de conversion dans un afficheur LCD alphanumérique 16×2 HD44780. 

On donne : 

– Sélectionner le driver de l’afficheur LCD HD44780_DRV. – Inclure le fichier « lcd.h » dans le projet – Ouvrir le fichier « lcd.h » et reconfigurer les pins de l’afficheur LCD suivant le schéma précèdent. ajouter la commande « static » avant la fonction « inline void DelayMS(uint32_t nTime) » ; (ligne 69) – Utiliser le code suivant pour afficher le résultat de conversion ADC 

sprintf(msg, « Tension=%1.3fV », valeur_tension); LCD_Goto(2, 1); LCD_Puts(msg); 

Interpréter les résultats trouvés. 

Configurer l’horloge à 168MHz en suivant les étapes suivantes. 

Par défaut le quartz externe est défini à 25MHZ donc il faut changer cette valeur à 8MHZ et déterminer la nouvelle configuration. Pour configurer facilement l’horloge, utiliser l’application Excel créée par ST. Ce fichier Excel génère automatiquement un fichier source « system_stm32f4xx.c ». 

– Copier le fichier Excel « STM32F4xx_Clock_Configuration_V1.1.0.xls » dans votre 

PC – Ouvrir le fichier « STM32F4xx_Clock_Configuration_V1.1.0.xls » 

utiliser cette configuration: -VDD=3.3 -Main regulator voltage = Scale1 Mode -Flash wait state=5 -Prefetch Buffer = OFF -Instruction Cache = ON -Enable I2S Clock : Uncheked -HSE OSC = 8MHZ -Check HSE as PLL Source -PLL_M = 8 -PLL_N = 336 -PLL_Q = 7 -PLL_P = 2 -AHBx Prescaler = 1 -APB1 Prescaler = 4 -APB2 Prescaler =2 

1- Cliquer sur « Generate », un fichier « system_stm32f4xx.c » se génère dans le même 

répertoire de fichier Excel. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 12 © 

Remplacer le fichier « system_stm32f4xx.c » de votre projet avec le fichier générer précédemment 

OU Ouvrir le fichier « system_stm32f4xx.c » de votre projet et changer les valeurs de variables PLL_M, PLL_N et PLL_P. Calculer les valeurs de ces variables en utilisant les deux équations suivantes : 

– PLL_VCO = PLL_N * (HSE_VALUE / PLL_M) avec HSE est égale à 8MHz – SYSCLK = PLL_VCO / PLL_P

2- Ouvrir le fichier « stm32f4xx.h » du projet et changer le « HSE_VALUE » à 8MHZ 

(8000000) 

3- Ouvrir le fichier « startup_stm32f4xx.c », uncomment la ligne (143) 

//extern void SystemInit(void); 

Dans le même fichier, ajouter la ligne de code pour appeler la fonction « SystemInit() » juste avant l’appel de la fonction « main() » 

Avec tous ces changements, le Clock de système sera configuré à la valeur de SYSCLK

Utiliser le ADC1 pour lire la valeur de température à partir du capteur TMP36. Ce capteur fournit une tension analogique directement proportionnelle à la température. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 13 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 14 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Atelier N°=3 Mise en œuvre d’un UART –STM32- 

Objectifs : L’objectif de ce TP est de réaliser une liaison série sur un STM32. Egalement appelée UART (Universal Asynchronous Receiver/Transmitter), cette liaison série est capable d’envoyer une donnée série bit par bit sur un bus. Elle est composée de deux modules principaux : le module émission TX et le module réception RX

Introduction : 

La liaison série asynchrone (UART) permet d’envoyer et de recevoir des données à l’aide d’une ligne d’émission (TXD) et d’une ligne de réception (RXD). Cette interface est couramment utilisée pour établir un dialogue entre le μC et un ordinateur. Dans ce cas il faut prévoir une adaptation des niveaux entre l’ordinateur (Norme RS232) et le μC (Signaux compatibles TTL). En l’absence de transmission, les lignes TXD et RXD se trouvent au niveau logique haut. 

Format de transmission : 

– 1 bit de start : Front descendant puis niveau « 0 » pendant la durée de transmission d’un bit. 

– 8 ou 9 bits de données : Bit de poids faible transmis en 1er . 

– 1 bit de stop : niveau « 1 » pendant la durée de transmission d’un bit. 

Sofiene SAIDI 15 © 

La vitesse de transmission de l’émetteur doit être identique à la vitesse d’acquisition du récepteur. Ces vitesses sont exprimées en BAUDS (1 baud correspond à 1 bit / seconde, dans notre cas). Il existe différentes vitesses normalisées: 9600, 4800, 2400, 12000… bauds 

  1. Travail de l’étudiant : 
  2. Application 1 : Le but d’application est de développer une application sur CoIDE qui envoie au PC le message « Institut Supérieur des Technologies de l’Information et de la Communication» 

-Utilisez le périphérique USRTx avec cette configuration: (voir annexe) 

-Utilisez le convertisseur USART-USB pour communiquer avec PC et un terminal pour lire les données envoyées.(exemple : https://sites.google.com/site/terminalbpp/ 

– Créer la fonction «void init_usart(void)» pour configurer l’USART 

– Créer la fonction « USART_puts() » pour transmettre une chaine de caractères 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 16 © 

void void init_usart(void){ GPIO_InitTypeDef GPIO_InitStructure; 

USART_puts(volatile char *s){ while(*s){ USART_InitTypeDef USART_InitStructure; RCC_APBxPeriphClockCmd(RCC_APBxPeriph_USARTx,ENABLE); RCC_AHBxPeriphClockCmd(RCC_AHBxPeriph_GPIOx, GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; 

ENABLE); 

while( !(USARTx->SR & 0x00000040) USART_SendData(USARTx, *s); 

); 

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_xx; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

*s++; 

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ; GPIO_Init(GPIOx, &GPIO_InitStructure); 

} } GPIO_PinAFConfig(GPIOx, GPIO_PinSourcex, GPIO_AF_USARTx); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx; USART_Init(USARTx, &USART_InitStructure); USART_Cmd(USARTx, ENABLE);

2-Application 2 : Le travail demandé est d’envoyer la valeur de la température d’un TMP36 à un PC et ce à travers l’UART d’un STM32 

. ANNEXE Pins pack 1 Pins pack 2 Pins pack 3 U(S)ARTx TX RX TX RX TX RX APB USART1 PA9 PA10 PB6 PB7 2 USART2 PA2 PA3 PD5 PD6 1 USART3 PB10 PB11 PC10 PC11 PD8 PD9 1 UART4 PA0 PA1 PC10 PC11 1 UART5 PC12 PD2 1 USART6 PC6 PC7 PG14 PG9 2 

Atelier N°=4 Mise en œuvre d’un TIMER(PWM) 

Objectifs : l’objectif de ce TP est d’exploiter le périphériques Timer d’un microcontrôleur STM32F407VG, afin de générer un signal carré avec une fréquence et un rapport cyclique variables –PWM-.

Introduction : 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 17 © 

Un signal PWM est un signal carré dont la largeur du niveau haut Ton et la période T sont réglables. Le PWM est beaucoup utilisé en électronique de puissance pour commander les hacheurs ou les onduleurs 

  1. Travail de l’étudiant : 

Application 1 : générer un PWM de fréquence 1KHz et un rapport cyclique égale à 50%. 

Le STM32F407VG dispose de 14 timers. 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 18 © 

1- Créer la fonction «void init_tim(void)» pour configurer le timer 2- Créer la fonction «void PWM(void)» pour générer un signal PWM 

3-Utiliser les équations au-dessus pour fixer la fréquence du signal PWM à 1KHz et un rapport cyclique pulse_length=50% Application 2 : Faire varier la largeur de l’impulsion à l’aide d’un potentiomètre

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 19 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

ANNEXE 

Sofiene SAIDI 20 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Annexe 

Sofiene SAIDI 21 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Création d’un projet sous l’environnement CooCox 

La figure suivante représente l’interface du logiciel CooCox dont : 

1) Projet vue de l’explorateur: l’explorateur de projet donne une vue du projet actuel. 2) Éditeur: la fenêtre de l’éditeur de code est affichée et peut être modifié. 3) Volet du panneau: des panneaux supplémentaires peuvent être stockés 4) Console: Les informations de la console et sur la compilation et le débogage 

Pour démarrer, il faut créer un projet sous cocoox. A partir de la fenêtre de démarrage vous sélectionnez Create a New Project” 

Sofiene SAIDI 22 © 

Un nouvel écran se affichera demander un nom de projet et le chemin de projet. Vous choisissez le nom et le chemin du projet et vous cliquez sur « Suivant> ». 

Maintenant, le projet a été nommé, vous devez choisir votre processeur. Tout d’abord, sélectionnez « Chip » puis cliquez sur « Suivant> ». Vous sélectionnez le processeur « STM32F407VG » 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 23 © 

Ensuite, vous devez décider quels périphériques que vous souhaitez utiliser dans votre projet dans le référentiel (ouvre automatiquement). Vous devriez toujours vérifier M4 CMSIS Core et CMSIS BOOT et RCC. Vous pouvez ajouter GPIO aussi parce que la commutation des broches d’E / S est le plus souvent la première chose à faire pour les débutants. 

Maintenant, ouvrez votre main.c, inclure ‘stm32f4xx.h’, Vous êtes maintenant prêt à programmer la carte STM32F4 Discovery

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 24 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 25 © 

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université de Carthage Institut Supérieur des Technologies de l’Information et de la Communication 

Sofiene SAIDI 26 © 

télécharger gratuitement Étude des microcontrôleurs STM32 : GPIO

Quitter la version mobile