0% ont trouvé ce document utile (0 vote)
41 vues2 pages

"stm32f4xx.h": #Include #Ifndef #Define

Ce document contient la définition de fonctions pour gérer les entrées/sorties d'un port GPIO sur STM32. Il définit des fonctions pour lire et écrire des broches individuelles ou un port entier. Le code est organisé avec une partie header et une partie implementation.

Transféré par

Rima Alaya
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues2 pages

"stm32f4xx.h": #Include #Ifndef #Define

Ce document contient la définition de fonctions pour gérer les entrées/sorties d'un port GPIO sur STM32. Il définit des fonctions pour lire et écrire des broches individuelles ou un port entier. Le code est organisé avec une partie header et une partie implementation.

Transféré par

Rima Alaya
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Rima Alaya GSI2-B

mylib.h

#include "stm32f4xx.h"
#ifndef SRC_MYLIB_H_
#define SRC_MYLIB_H_

typedef enum
{ set=1, res=0}ETAT;
// Fonctions de lecture
ETAT GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint8_t pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint8_t pin);
uint16_t GPIO_ReadOutputData(uGPIO_TypeDef* GPIOx);

// Fonctions d'écriture
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t pins);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t pins);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint8_t pin, ETAT value);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t data);
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t pins);
#endif

mylib.c

#include "mylib.h"

// Fonctions de lecture

//Lit l'état d'une broche GPIO spécifique en tant qu'entrée


ETAT GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint8_t pin) {
if (GPIOx->IDR & (1U << pin)) {
return set;
} else {
return res;
}
}
//Lit l'état de toutes les broches GPIO configurées en tant qu'entrées sur un
port GPIO donné
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx) {
return (uint16_t)GPIOx->IDR;
}
//Lit l'état d'une broche GPIO spécifique en tant que sortie
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint8_t pin) {
if (GPIOx->ODR & (1U << pin)) {
return set;
} else {
return res;
}
}
//Lit l'état de toutes les broches GPIO configurées en tant que sorties sur un
port GPIO donné
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx) {
return (uint16_t)GPIOx->ODR;
}

// Fonctions d'écriture

//Définit l'état logique haut (1) sur les broches spécifiées d'un port GPIO en
utilisant un masque de broches.
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t pins) {
GPIOx->BSRR = pins;
}
//Réinitialise l'état logique bas (0) sur les broches spécifiées d'un port
GPIO en utilisant un masque de broches.
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
GPIOx->BRR = GPIO_Pin;
}
// Écrit un état logique spécifié
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint8_t pin, ETAT value) {
if (value == set) {
GPIOx->BSRR = (1U << pin);
} else {
GPIOx->BSRR = (1U << (pin + 16));
}
}
//Écrit une valeur binaire spécifiée sur toutes les broches d'un port GPIO.
Chaque bit de la valeur binaire correspond à une broche du port.
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t data) {
GPIOx->ODR = data;
}
// Inverse l'état logique des broches spécifiées sur un port GPIO donné.
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t pins) {
GPIOx->ODR ^= pins;
}

Vous aimerez peut-être aussi