diff --git a/ProjetsKEIL/Drivers/Driver_GPIO.c b/ProjetsKEIL/Drivers/Driver_GPIO.c index ab70997..e6eed35 100644 --- a/ProjetsKEIL/Drivers/Driver_GPIO.c +++ b/ProjetsKEIL/Drivers/Driver_GPIO.c @@ -13,16 +13,23 @@ void MyGPIO_Init(MyGPIO_Struct_TypeDef * GPIOStructPtr) { } //Initialiser le registre urilisé if (GPIOStructPtr->GPIO_Pin < 8) { - GPIOStructPtr->GPIO->CRL &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin)); - GPIOStructPtr->GPIO->CRL |= (GPIOStructPtr->GPIO_Conf << (4 * GPIOStructPtr->GPIO_Pin)); + GPIOStructPtr->GPIO->CRL &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin)); //Mettre le port du registre à 0 + GPIOStructPtr->GPIO->CRL |= (GPIOStructPtr->GPIO_Conf << (4 * GPIOStructPtr->GPIO_Pin)); //Mettre la conf sélectionné dans le registre } else { - GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin)); - GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf << (4* GPIOStructPtr->GPIO_Pin)); + GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin - 8)); //Mettre le port du registre à 0 / -8 car CRH commence à 8 + GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf << (4* GPIOStructPtr->GPIO_Pin - 8)); } + + + if (GPIOStructPtr->GPIO_Conf == In_PullUp) { + GPIOStructPtr->GPIO->ODR |= (1<GPIO_Pin); //Mettre à 1 pour le push pull le registre + }else{ + GPIOStructPtr->GPIO->ODR &= ~(1<GPIO_Pin); //Mettre à 0 pour le pull down le registre + } } int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){ - if((GPIO->IDR) &= (1 << GPIO_Pin)!=0) + if((GPIO->IDR & (1 << GPIO_Pin)) != 0) //Retourne si la Pin a été sélectionné { return 1; }else{ @@ -30,14 +37,16 @@ int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){ } } +//BSRR registre permettant de Set la Pin void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin){ - + GPIO->BSRR |= (1 << GPIO_Pin); //Mettre à 1 la PIN } +//BRR registre permettant de ReSet la Pin void MyGPIO_Reset(GPIO_TypeDef * GPIO, char GPIO_Pin){ - + GPIO->BRR |= (1 << GPIO_Pin); //Mettre à 0 la PIN } void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin){ - + GPIO->ODR ^= (1 << GPIO_Pin); //XOR, Inverser l'état de la PIN } diff --git a/ProjetsKEIL/Drivers/Driver_GPIO.h b/ProjetsKEIL/Drivers/Driver_GPIO.h index 8449253..e5bd79a 100644 --- a/ProjetsKEIL/Drivers/Driver_GPIO.h +++ b/ProjetsKEIL/Drivers/Driver_GPIO.h @@ -10,8 +10,8 @@ typedef struct { #define In_Floating 0x4 // 0b0100 -#define In_PullDown 0x8 #define In_PullUp 0x8 +#define In_PullDown 0x8 #define In_Analog 0x0 #define Out_Ppull 0x1 #define Out_OD 0x6 diff --git a/ProjetsKEIL/Projet_1/Src/Principal.c b/ProjetsKEIL/Projet_1/Src/Principal.c index 9933439..83f5588 100644 --- a/ProjetsKEIL/Projet_1/Src/Principal.c +++ b/ProjetsKEIL/Projet_1/Src/Principal.c @@ -7,28 +7,40 @@ MyGPIO_Struct_TypeDef LED; +int delay(){ + int i; + for(i=0;i<1000000;i++); +} + + int main ( void ) { - // Clocks des ports A, B, C - //RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ; - GPIOA->CRL &= ~(0xF << 20); // Mise à 0 - GPIOA->CRL |= (0x1 << 20); // Output - GPIOA->BSRR |= (0x01 << 5); + LED.GPIO=GPIOA; + LED.GPIO_Conf=Out_Ppull; + LED.GPIO_Pin=5; - // Configure PC13 as input with pull-up - GPIOC->CRH &=~ (1<<13); + MyGPIO_Init(&LED); - GPIOC->CRH &= ~(0x1 << 22); - GPIOC->CRH |= GPIO_CRH_CNF13_1; // BP = PC13 - GPIOC->ODR |= GPIO_ODR_ODR13; + LED.GPIO=GPIOC; + LED.GPIO_Conf = In_PullUp; + LED.GPIO_Pin=13; - //GPIOA->BSRR |= (1 << 21); + + MyGPIO_Init(&LED); + + + while(1) { - + + if(MyGPIO_Read(GPIOC, 13) == 0) + { + MyGPIO_Toggle(GPIOA, 5); + delay(); + } } } diff --git a/ProjetsKEIL/Projet_1/TP.uvoptx b/ProjetsKEIL/Projet_1/TP.uvoptx index 68c044a..53076ed 100644 --- a/ProjetsKEIL/Projet_1/TP.uvoptx +++ b/ProjetsKEIL/Projet_1/TP.uvoptx @@ -290,7 +290,7 @@ 0 DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=482,345,903,750,0)(121=931,445,1352,850,0)(122=981,453,1402,858,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0) + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=703,344,1124,749,0)(121=931,445,1352,850,0)(122=409,446,830,851,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=-1,-1,-1,-1,0)(131=-1,-1,-1,-1,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=-1,-1,-1,-1,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0) 0