diff --git a/CantoOrvikPilotes/ADC.c b/CantoOrvikPilotes/ADC.c deleted file mode 100644 index 06d7405..0000000 Binary files a/CantoOrvikPilotes/ADC.c and /dev/null differ diff --git a/CantoOrvikPilotes/DriverGPIO.c b/CantoOrvikPilotes/DriverGPIO.c deleted file mode 100644 index d2ea090..0000000 --- a/CantoOrvikPilotes/DriverGPIO.c +++ /dev/null @@ -1,80 +0,0 @@ -#include "stm32f10x.h" - -#define In_Floating 0x4 -#define In_PullDown 0x8 -#define In_PullUp 0x8 -#define In_Analog 0x0 -#define Out_Ppull 0x3 -#define Out_OD 0x7 -#define AltOut_Ppull 0xB -#define AltOut_OD 0xF - -void MyGPIO_Init(GPIO_TypeDef * GPIO, char pin, char conf ){ -int shift_pin; -//Start clock -if(GPIO == GPIOA){ -RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN; -} -else if(GPIO == GPIOB){ -RCC -> APB2ENR |= RCC_APB2ENR_IOPBEN; -} -else if(GPIO == GPIOC){ -RCC -> APB2ENR |= RCC_APB2ENR_IOPCEN; -} -else if(GPIO == GPIOD){ -RCC -> APB2ENR |= RCC_APB2ENR_IOPDEN; -} -if(pin < 8){//CRL zone -shift_pin = pin*4; -GPIO -> CRL &= ~(0xF << shift_pin); -//PullUp and PullDown have the same conf number, so we need to change the ODR to diferenciate them both -if(conf == In_PullUp){ -GPIO -> CRL |= ( In_PullUp << shift_pin); -GPIO -> ODR |= (1< CRL |= ( In_PullDown << shift_pin); -GPIO -> ODR &= ~(1< CRL |= ( conf << shift_pin); -} -} -else{//CRH zone -shift_pin = (pin-8)*4; -GPIO -> CRH &= ~(0xF << shift_pin); -if(conf == In_PullUp){ -GPIO -> CRH |= ( In_PullUp << shift_pin); -GPIO -> ODR |= (1< CRH |= ( In_PullDown << shift_pin); -GPIO -> ODR &= ~(1< CRH |= ( conf << shift_pin); -} -} -} -int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){ -if(GPIO -> IDR & (1 << GPIO_Pin)){ -return 1; -} -else{ -return 0; -} -} -void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin){ -GPIO -> BSRR = (1< BSRR = (1<<(GPIO_Pin+16));//1 on reset zone -} -void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin){ -if((GPIO-> ODR & (1< BSRR = (1<<(GPIO_Pin+16)); -} -else{ -GPIO -> BSRR = (1< -#include "../Include/GPIO.h" - -int ChercherEtat(GPIO_TypeDef * GPIO, int pin){ // Trouvons la valeur d'un broche sur un certain GPIO -return((GPIO -> IDR & (0x01 << pin))); -} - -void ResetBroche(uint32_t GPIO, int Broche){ // Mettre à zero d'un certain broche d'un certain GPIO - GPIO -> BSRR |= BS Broche; -} - -void SetBroche(uint32_t GPIO, int Broche){ // Mettre à zero d'un certain broche d'un certain GPIO - GPIO -> BSRR |= BSBroche << 16; -} - -void TogglePin(GPIO_TypeDef*GPIO, int Broche){ // Inverser la valueur de broche sur GPIO - GPIO -> ODR = GPIO -> ODR ^ (0x1 << Broche); -} - -void ConfigureGPIO(uint32_t GPIO, int Broche, int IO, char * Mode){ // Mettre un broche d'un GPIO sur un mode - // Possble de améliorer avec des int à la place de string - //Start clock pour les GPIO concernés -if(GPIO == GPIOA){ - RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN; -} -else if(GPIO == GPIOB){ - RCC -> APB2ENR |= RCC_APB2ENR_IOPBEN; -} -else if(GPIO == GPIOC){ - RCC -> APB2ENR |= RCC_APB2ENR_IOPCEN; -} -else if(GPIO == GPIOD){ - RCC -> APB2ENR |= RCC_APB2ENR_IOPDEN; -} - // Cas d'u CRL, broche 0 à 7 - if (Broche < 8) { - GPIO -> CRL &= ~(0x1 << Broche *4) & ~(0x1 << Broche *4 +1) & ~(0x1 << Broche *4 + 2) & ~(0x1 << Broche *4 + 3); // Clean bits - if (IO == 0){ //Input - if (strcmp(Mode,"Floating")) { - GPIO -> CRL |= (0x1 << Broche *4) | (0x1 << Broche * 4 + 1); - } - else if (strcmp(Mode,"Pull-Up") || strcmp(Mode,"Pull-Down")){ - GPIO -> CRL |= (0x1 << 6*4 + 1); - } - else { - return; // Mode invalid - } - } - else if ( IO < 5) { // Output - GPIO -> CRL |= (0xIO << Broche * 4 + 2); // Frequency mode - if (strcmp(Mode, "Open-Drain")){ - GPIO -> CRL |= (0x1 << Broche *4); - } - else if (strcmp(Mode, "Push-Pull Alterne")){ - GPIO -> CRL |= (0x1 << Broche *4 + 1); - RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // Alternate Function I/O clock enable GPIOA - } - else if (strcmp(Mode, "Open-Drain Alterne")){ - GPIO -> CRL |= (0x1 << Broche * 4) | (0x1 << Broche * 4 + 1); - } - else { - return; // Mode invalid - } - } - else{ - return; - } - } - else if (Broche < 16) { - GPIO -> CRH &= ~(0x1 << Broche *4) & ~(0x1 << Broche *4 +1) & ~(0x1 << Broche *4 + 2) & ~(0x1 << Broche *4 + 3); // Clean bits - if (IO == 0){ //Input - if (strcmp(Mode,"Floating")) { - GPIO -> CRH |= (0x1 << Broche *4) | (0x1 << Broche * 4 + 1); - } - else if (strcmp(Mode,"Pull-Up") || strcmp(Mode,"Pull-Down")){ - GPIO -> CRH |= (0x1 << 6*4 + 1); - } - else { - return; // Mode invalid or doesn't exist - } - } - else if ( IO < 5) { // Output - GPIO -> CRH |= (0xIO << Broche * 4 + 2); // Frequency mode - if (strcmp(Mode, "Open-Drain")){ - GPIO -> CRH |= (0x1 << Broche *4); - } - else if (strcmp(Mode, "Push-Pull Alterne")){ - GPIO -> CRH |= (0x1 << Broche *4 + 1); - } - else if (strcmp(Mode, "Open-Drain Alterne")){ - GPIO -> CRH |= (0x1 << Broche * 4) | (0x1 << Broche * 4 + 1); - } - else { - return; // Mode invalid or doesn't exits - } - } - else{ - return; // IO invalid - } - } - else{ - return; // Pin number invalid - } -} - diff --git a/CantoOrvikPilotes/Gironde.c b/CantoOrvikPilotes/Gironde.c deleted file mode 100644 index bee82ad..0000000 --- a/CantoOrvikPilotes/Gironde.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "stm32f10x.h" -#include "MyTimer.h" -#include "Nucleo.h" -#include "Timer.h" -#include "DriverGPIO.h" -#include "Gironde.h" - -void configEncoder(TIM_TypeDef * Timer){ - Timer -> CCMR1 |= TIM_CCMR1_CC1S; - Timer -> CCMR2 |= TIM_CCMR1_CC2S; - Timer -> CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - Timer -> CCMR1 &= ~(TIM_CCMR1_IC1F); - Timer -> CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - Timer -> CCMR2 &= ~(TIM_CCMR1_IC2F); - Timer -> SMCR &= ~TIM_SMCR_SMS; - Timer -> SMCR |= TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1; - Timer -> CR1 |= TIM_CR1_CEN; - Timer -> ARR = 0xFFFF; -} -void configChannel(){ - MyGPIO_Init(GPIOA,7,In_Floating ); - MyGPIO_Init(GPIOA,8,In_Floating ); - -} \ No newline at end of file diff --git a/CantoOrvikPilotes/MyTimer.c b/CantoOrvikPilotes/MyTimer.c deleted file mode 100644 index 2873065..0000000 --- a/CantoOrvikPilotes/MyTimer.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "stm32f10x.h" -#include "../Include/Timer.h" -#include "../Include/PWM.h" -#include "../Include/DriverGPIO.h" -// Variables -#define ARR_TIM1 0xFFAD -#define PSC_TIM1 0xFF -#define ARR_TIM2 0xFFAD -#define PSC_TIM2 0x0225 -#define ARR_TIM3 0x2CF -#define PSC_TIM3 0x0 - -volatile int g_tick_count; -void Test(void){ - // Signal - g_tick_count++; - MyGPIO_Toggle(GPIOA, 8); -} - -void ConfigureTimers(){ -MyTimer_Base_Init(TIM2, ARR_TIM2, PSC_TIM2); -MyTimer_Base_Init(TIM1, ARR_TIM1, PSC_TIM1); -MyTimer_Base_Init(TIM3, ARR_TIM2, PSC_TIM2); -EnableTimer(TIM1); -EnableTimer(TIM2); -EnableTimer(TIM3); -} -void ConfigureIT(){ -//MyTimer_ActiveIT(TIM2, 4, Test); //start interruption with priority 4 -//MyTimer_ActiveIT(TIM1, 4, Test); //start interruption with priority 4 -MyTimer_ActiveIT(TIM3, 4, Test); //start interruption with priority 4 -} -void ConfigurePWM(){ -MyTimer_PWM(TIM1, 1); -MyTimer_Set_DutyCycle(TIM1, 1, 20.0); -} diff --git a/CantoOrvikPilotes/Source/ADC.c b/CantoOrvikPilotes/Source/ADC.c index e69de29..06d7405 100644 Binary files a/CantoOrvikPilotes/Source/ADC.c and b/CantoOrvikPilotes/Source/ADC.c differ diff --git a/CantoOrvikPilotes/Source/DriverGPIO.c b/CantoOrvikPilotes/Source/DriverGPIO.c index 2755285..d2ea090 100644 --- a/CantoOrvikPilotes/Source/DriverGPIO.c +++ b/CantoOrvikPilotes/Source/DriverGPIO.c @@ -10,71 +10,71 @@ #define AltOut_OD 0xF void MyGPIO_Init(GPIO_TypeDef * GPIO, char pin, char conf ){ -      int shift_pin; -      //Start clock -      if(GPIO == GPIOA){ -            RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN; -      } -      else if(GPIO == GPIOB){ -            RCC -> APB2ENR |= RCC_APB2ENR_IOPBEN; -      } -      else if(GPIO == GPIOC){ -            RCC -> APB2ENR |= RCC_APB2ENR_IOPCEN; -      } -      else if(GPIO == GPIOD){ -            RCC -> APB2ENR |= RCC_APB2ENR_IOPDEN; -      } -      if(pin < 8){//CRL zone -            shift_pin = pin*4; -            GPIO -> CRL &= ~(0xF << shift_pin); -            //PullUp and PullDown have the same conf number, so we need to change the ODR to diferenciate them both -            if(conf == In_PullUp){ -                  GPIO -> CRL |= ( In_PullUp << shift_pin); -                  GPIO -> ODR |= (1< CRL |= ( In_PullDown << shift_pin); -                  GPIO -> ODR &= ~(1< CRL |= ( conf << shift_pin); -            } -      } -      else{//CRH zone -      shift_pin = (pin-8)*4; -            GPIO -> CRH &= ~(0xF << shift_pin); -            if(conf == In_PullUp){ -                  GPIO -> CRH |= ( In_PullUp << shift_pin); -                  GPIO -> ODR |= (1< CRH |= ( In_PullDown << shift_pin); -                  GPIO -> ODR &= ~(1< CRH |= ( conf << shift_pin); -            } -      } +int shift_pin; +//Start clock +if(GPIO == GPIOA){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN; +} +else if(GPIO == GPIOB){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPBEN; +} +else if(GPIO == GPIOC){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPCEN; +} +else if(GPIO == GPIOD){ +RCC -> APB2ENR |= RCC_APB2ENR_IOPDEN; +} +if(pin < 8){//CRL zone +shift_pin = pin*4; +GPIO -> CRL &= ~(0xF << shift_pin); +//PullUp and PullDown have the same conf number, so we need to change the ODR to diferenciate them both +if(conf == In_PullUp){ +GPIO -> CRL |= ( In_PullUp << shift_pin); +GPIO -> ODR |= (1< CRL |= ( In_PullDown << shift_pin); +GPIO -> ODR &= ~(1< CRL |= ( conf << shift_pin); +} +} +else{//CRH zone +shift_pin = (pin-8)*4; +GPIO -> CRH &= ~(0xF << shift_pin); +if(conf == In_PullUp){ +GPIO -> CRH |= ( In_PullUp << shift_pin); +GPIO -> ODR |= (1< CRH |= ( In_PullDown << shift_pin); +GPIO -> ODR &= ~(1< CRH |= ( conf << shift_pin); +} +} } int MyGPIO_Read(GPIO_TypeDef * GPIO, char GPIO_Pin){ -      if(GPIO -> IDR & (1 << GPIO_Pin)){ -            return 1; -      } -      else{ -            return 0; -      } +if(GPIO -> IDR & (1 << GPIO_Pin)){ +return 1; +} +else{ +return 0; +} } void MyGPIO_Set(GPIO_TypeDef * GPIO, char GPIO_Pin){ -      GPIO -> BSRR = (1< BSRR = (1< BSRR = (1<<(GPIO_Pin+16));//1 on reset zone +GPIO -> BSRR = (1<<(GPIO_Pin+16));//1 on reset zone } void MyGPIO_Toggle(GPIO_TypeDef * GPIO, char GPIO_Pin){ -      if((GPIO-> ODR & (1< BSRR = (1<<(GPIO_Pin+16)); -            } -      else{ -            GPIO -> BSRR = (1< ODR & (1< BSRR = (1<<(GPIO_Pin+16)); +} +else{ +GPIO -> BSRR = (1< IDR & (0x01 << pin))); } -void ResetBroche(uint32_t GPIO, int Broche){ // Mettre à zero d'un certain broche d'un certain GPIO - GPIO -> BSRR |= BSBroche; +void ResetBroche(GPIO_TypeDef * GPIO, int Broche){ // Mettre à zero d'un certain broche d'un certain GPIO + GPIO -> BSRR |= BS Broche; } -void SetBroche(uint32_t GPIO, int Broche){ // Mettre à zero d'un certain broche d'un certain GPIO +void SetBroche(uint32_t * GPIO, int Broche){ // Mettre à zero d'un certain broche d'un certain GPIO GPIO -> BSRR |= BSBroche << 16; } -void TogglePin(GPIO_TypeDef*GPIO, int Broche){ // Inverser la valueur de broche sur GPIO +void TogglePin(GPIO_TypeDef * GPIO, int Broche){ // Inverser la valueur de broche sur GPIO GPIO -> ODR = GPIO -> ODR ^ (0x1 << Broche); } -void ConfigureGPIO(uint32_t GPIO, int Broche, int IO, char Mode){ // Mettre un broche d'un GPIO sur un mode +void ConfigureGPIO(uint32_t * GPIO, int Broche, int IO, char * Mode){ // Mettre un broche d'un GPIO sur un mode // Possble de améliorer avec des int à la place de string //Start clock pour les GPIO concernés if(GPIO == GPIOA){ diff --git a/CantoOrvikPilotes/Source/MyTimer.c b/CantoOrvikPilotes/Source/MyTimer.c index 21e0846..2873065 100644 --- a/CantoOrvikPilotes/Source/MyTimer.c +++ b/CantoOrvikPilotes/Source/MyTimer.c @@ -1,7 +1,7 @@ #include "stm32f10x.h" #include "../Include/Timer.h" #include "../Include/PWM.h" -#include "../Include/GPIO.h" +#include "../Include/DriverGPIO.h" // Variables #define ARR_TIM1 0xFFAD #define PSC_TIM1 0xFF @@ -14,13 +14,16 @@ volatile int g_tick_count; void Test(void){ // Signal g_tick_count++; - TogglePin(GPIOA, 8); + MyGPIO_Toggle(GPIOA, 8); } void ConfigureTimers(){ MyTimer_Base_Init(TIM2, ARR_TIM2, PSC_TIM2); MyTimer_Base_Init(TIM1, ARR_TIM1, PSC_TIM1); MyTimer_Base_Init(TIM3, ARR_TIM2, PSC_TIM2); +EnableTimer(TIM1); +EnableTimer(TIM2); +EnableTimer(TIM3); } void ConfigureIT(){ //MyTimer_ActiveIT(TIM2, 4, Test); //start interruption with priority 4