diff --git a/ProjetsKEIL/Drivers/Driver_GPIO.c b/ProjetsKEIL/Drivers/Driver_GPIO.c
index 476a1c1..ab70997 100644
--- a/ProjetsKEIL/Drivers/Driver_GPIO.c
+++ b/ProjetsKEIL/Drivers/Driver_GPIO.c
@@ -1,5 +1,43 @@
#include "Driver_GPIO.h"
void MyGPIO_Init(MyGPIO_Struct_TypeDef * GPIOStructPtr) {
+ //Configurer les horloges
+ if(GPIOStructPtr->GPIO == GPIOA){
+ RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;//RCC->APB2ENR = 0x02;
+ }
+ else if(GPIOStructPtr->GPIO == GPIOB){
+ RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;//RCC->APB2ENR = 0x03;
+ }
+ else if (GPIOStructPtr->GPIO == GPIOC){
+ RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; //RCC->APB2ENR = 0x04;
+ }
+ //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));
+ } else {
+ GPIOStructPtr->GPIO->CRH &= ~(0xF << (4 * GPIOStructPtr->GPIO_Pin));
+ GPIOStructPtr->GPIO->CRH |= (GPIOStructPtr->GPIO_Conf << (4* GPIOStructPtr->GPIO_Pin));
+ }
+}
+
+int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){
+ if((GPIO->IDR) &= (1 << GPIO_Pin)!=0)
+ {
+ return 1;
+ }else{
+ return 0;
+ }
+}
+
+void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin){
-}
\ No newline at end of file
+}
+
+void MyGPIO_Reset(GPIO_TypeDef * GPIO, char GPIO_Pin){
+
+}
+
+void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin){
+
+}
diff --git a/ProjetsKEIL/Drivers/Driver_GPIO.h b/ProjetsKEIL/Drivers/Driver_GPIO.h
index 062e9e9..8449253 100644
--- a/ProjetsKEIL/Drivers/Driver_GPIO.h
+++ b/ProjetsKEIL/Drivers/Driver_GPIO.h
@@ -9,14 +9,14 @@ typedef struct {
} MyGPIO_Struct_TypeDef;
-#define In_Floating 0x4 // 0x0100
-#define In_PullDown 0x... // a completer
-#define In_PullUp 0x... // a completer
-#define In_Analog 0x... // a completer
-#define Out_Ppull 0x... // a completer
-#define Out_OD 0x... // a completer
-#define AltOut_Ppull 0x... // a completer
-#define AltOut_OD 0x... // a completer
+#define In_Floating 0x4 // 0b0100
+#define In_PullDown 0x8
+#define In_PullUp 0x8
+#define In_Analog 0x0
+#define Out_Ppull 0x1
+#define Out_OD 0x6
+#define AltOut_Ppull 0x5
+#define AltOut_OD 0xD
void MyGPIO_Init(MyGPIO_Struct_TypeDef * GPIOStructPtr);
int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin); // renvoie 0 ou autre chose d i f f e r e n t de 0
diff --git a/ProjetsKEIL/Projet_1/Src/Principal.c b/ProjetsKEIL/Projet_1/Src/Principal.c
index 77f09a6..9933439 100644
--- a/ProjetsKEIL/Projet_1/Src/Principal.c
+++ b/ProjetsKEIL/Projet_1/Src/Principal.c
@@ -1,26 +1,32 @@
#include "stm32f10x.h"
#include "Driver_GPIO.h"
+
+// PA5 LED
+// PC13 BP
+
+MyGPIO_Struct_TypeDef LED;
+
int main ( void )
{
// Clocks des ports A, B, C
- RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ;
+ //RCC->APB2ENR |= (0x01 << 2) | (0x01 << 3) | (0x01 << 4) ;
GPIOA->CRL &= ~(0xF << 20); // Mise à 0
GPIOA->CRL |= (0x1 << 20); // Output
GPIOA->BSRR |= (0x01 << 5);
// Configure PC13 as input with pull-up
- GPIOC->CRH &=~ (1<<)
+ GPIOC->CRH &=~ (1<<13);
- GPIOC->CRH &= ~(0x1 << 22)
- GPIOC->CRH |= GPIO_CRH_CNF13_1;
+ GPIOC->CRH &= ~(0x1 << 22);
+ GPIOC->CRH |= GPIO_CRH_CNF13_1; // BP = PC13
GPIOC->ODR |= GPIO_ODR_ODR13;
//GPIOA->BSRR |= (1 << 21);
- for (;;)
+ while(1)
{
}
diff --git a/ProjetsKEIL/Projet_1/TP.uvoptx b/ProjetsKEIL/Projet_1/TP.uvoptx
index 7c02db8..68c044a 100644
--- a/ProjetsKEIL/Projet_1/TP.uvoptx
+++ b/ProjetsKEIL/Projet_1/TP.uvoptx
@@ -406,7 +406,7 @@
2
2
1
- 1
+ 0
0
0
..\Drivers\Driver_GPIO.c