From 9e9fc9eb4e156461ac642cd95de7244252d97ae4 Mon Sep 17 00:00:00 2001 From: Louis Rousset Date: Tue, 11 Apr 2023 13:52:20 +0200 Subject: [PATCH] =?UTF-8?q?Mettre=20=C3=A0=20jour=20'Drivers/Sources/Drive?= =?UTF-8?q?r=5FGPIO.c'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Drivers/Sources/Driver_GPIO.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Drivers/Sources/Driver_GPIO.c b/Drivers/Sources/Driver_GPIO.c index bac8120..52dd29d 100644 --- a/Drivers/Sources/Driver_GPIO.c +++ b/Drivers/Sources/Driver_GPIO.c @@ -5,26 +5,26 @@ void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr ) { - /* Activation of the GPIO port specific clock */ + /* Activation de la clock liée au GPIO sélectionné */ if (GPIOStructPtr->GPIO == GPIOA) { - RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; - } + RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; + } else if (GPIOStructPtr->GPIO == GPIOB) { RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; - } + } else if (GPIOStructPtr->GPIO == GPIOC) { RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; - } + } else if (GPIOStructPtr->GPIO == GPIOD) { RCC->APB2ENR |= RCC_APB2ENR_IOPDEN; } - /* Reset, and then configuration writing of the selected GPIO Pin */ + /* Reset & configuration de la pin avec le mode adéquat */ if(GPIOStructPtr->GPIO_Pin <= 8) { GPIOStructPtr->GPIO->CRL &= ~0xF<<(4*(GPIOStructPtr->GPIO_Pin)); @@ -36,6 +36,7 @@ void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr ) GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf)<<(4*((GPIOStructPtr->GPIO_Pin)%8)); } + /* Ecriture de l'ODR pour choisir entre pulldown & pushpull*/ if(GPIOStructPtr->GPIO_Conf == (char)In_PullDown) { GPIOStructPtr->GPIO->ODR &= ~(0x1<<(GPIOStructPtr->GPIO_Pin)); @@ -49,7 +50,8 @@ void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr ) //----------------------------READ--------------------------// int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ){ int etatbit; -//On vérifie si la valeur lue dans l'IDR est un 0 ou un 1 + + /* Verification de la valeur de l'IDR */ if((GPIO->IDR & (1<BSRR |= (1 << GPIO_Pin); } //---------------------RESET-----------------// void MyGPIO_Reset ( GPIO_TypeDef * GPIO , char GPIO_Pin ){ + + /*Ecriture du 1 sur le numéro de la pin dans le registre BRR*/ GPIO->BRR = (1 << GPIO_Pin); - //Pas besoin de | puisque les 0 n'impactent pas la fonction reset } //---------------------TOGGLE-----------------//