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
M1_Infotronique Informatique embarquée
TP4 - Gestion USART
I. Objectifs :
Développer des applications sur l’environnement CoIDE en utilisant une liaison série sur un
STM32.
II. Travail demandé
Présentation
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. RS232 est une norme standardisant les communications séries.
La transmission de données pouvant se faire sur 7 ou 8 bits, avec ou sans contrôle de parité.
Une trame RS232 commence par un bit de start et se termine par un ou deux bits de Stop. La
figure suivante illustre une des configurations possibles. La vitesse de transmission pouvant
également varier d’une application à l’autre. La vitesse se mesure en Bauds (nombre de
symbole transmis par seconde).
Rais Ghofran 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
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.
Application 1 :
Le but de cette application est de développer une application sur Coocox CoIDE qui envoie au
PC un message « Institut Supérieur des Technologies de l’Information et de la
Communication».
Utiliser le périphérique USART2 avec cette configuration:
- USART2_TX = PA2
- USART2_RX = PA3
- Bauds=9600
- 8 Bit
- 1 Stop bit
1) Créer un nouveau projet avec un model Chip et choisir STM32F407VG.
2) Ajouter le Driver « USART » dans votre projet.
3) Inclure le Driver « usart.h » dans le programme principal.
4) Afin de configurer le periphérique USART, créer les différentes fonctions suivantes
dans le fichier « usart.c ».
a. Créer une fonction «rcc_config » pour la configuration des horloges.
void rcc_config (void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTx, ENABLE);
}
b. Créer une fonction « gpio_config » pour la configuration des entrées/sorties.
void gpio_config(void)
{
Rais Ghofran 2
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
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_ InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_ InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_ InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOx, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOx, GPIO_PinSourcex, GPIO_AF_USARTx);
}
c. Créer une fonction « usart_config » pour la configuration et l’activation de
l’USART2.
void usart_config(void)
{
USART_InitTypeDef USART_InitStructure;
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_Rx | USART_Mode_Tx;
USART_Init(USARTx, &USART_InitStructure);
USART_Cmd(USARTx, ENABLE);
5) Dans le programme principal « main.c », créer une fonction «usart_puts» qui transmet
une chaîne de caractère.
void USART_puts(USART_TypeDef* USARTx, volatile char *s)
{
while(*s){
// wait until data register is empty
while( !(USARTx->SR & 0x00000040) );
USART_SendData(USARTx, *s);
*s++;
}
}
6) Compléter votre programme puis tester le sous ISIS suivant le schéma ci-dessous.
Rais Ghofran 3
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
Application 2 :
Le but de cette application est d’envoyer un message au PC afin d’allumer et éteindre
une LED à travers une liaison USART.
Le PC affiche le message « Taper H ou L ». L’utilisateur écrit ‘H’ pour allumer la LED et
‘L’ pour l’éteindre.
1) Créer un nouveau projet.
2) Créer la fonction de configuration de la communication
USART. 3) Créer la fonction de configuration de la LED en
sortie.
4) Compléter votre programme puis tester le sous
ISIS. On donne :
Annexe
USART_ReceiveData(USART_TypeDef* USARTx)// Réception des données
USART_SendData(USART_TypeDef* USARTx, uint16_t Data) )//
Transmission des données
USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t
USART_FLAG)// configuration du Flag
Rais Ghofran 4
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
Pins pack 1 Pins pack 2 Pins pack 3
USARTx 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
Rais Ghofran 5