diff --git a/Drivers/Sources/Driver_ADC.c b/Drivers/Sources/Driver_ADC.c index 2218bc9..57ae975 100644 --- a/Drivers/Sources/Driver_ADC.c +++ b/Drivers/Sources/Driver_ADC.c @@ -1,21 +1,61 @@ -#ifndef MYADC_H -#define MYADC_H - -#include "stm32f10x.h" +#include "Driver_ADC.h" #include "Driver_GPIO.h" -typedef struct -{ - ADC_TypeDef * ADC; - char Channel; -} MyADC_Struct_TypeDef; + +void (*PtrfctADC)(void); //Déclaration du pointeur de fonction ADC + +//---------------------INIT-------------------// +void MyADC_Base_Init(MyADC_Struct_TypeDef * ADC){ + + MyGPIO_Struct_TypeDef * GPIO_ADC; //Déclaration du GPIO de l'ADC + + + RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; //Division par 6 de la clock (72MHz) pour l'ADC (12MHz) + RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; //Start clock ADC1 + + GPIO_ADC->GPIO = GPIOC; //Initialisation du GPIO de l'ADC + GPIO_ADC->GPIO_Conf = In_Analog; + GPIO_ADC->GPIO_Pin = 0; + MyGPIO_Init(GPIO_ADC); + + + ADC1->SQR1 &= ADC_SQR1_L; //fixe le nombre de conversion à 1 + ADC1->SQR3|= ADC->Channel; //indique la voie à convertir + ADC1->CR2 |= ADC_CR2_EXTTRIG; //activation du trigger externe + ADC1->CR2 |= ADC_CR2_EXTSEL; //event externe choisis : SWSTART + + MyADC_Base_Start(ADC->ADC); //Sart ADC1 et Horloge ADC1 + +} -void MyADC_Base_Init(MyADC_Struct_TypeDef * ADC); -void MyADC_Base_Start(ADC_TypeDef * ADC); -void MyADC_Base_Stop(ADC_TypeDef * ADC); -void MyADC_Base_Interuption(ADC_TypeDef * ADC); -int MyADC_Base_Result (MyADC_Struct_TypeDef * ADC); -void MyADC_Init_Periph (void (*fct)(void)); +//--------------------START-------------------// +void MyADC_Base_Start(ADC_TypeDef * ADC){ + ADC1->CR2 |= ADC_CR2_ADON; +} -#endif +//------------------INTERRUPTION--------------// +void MyADC_Base_Interuption(ADC_TypeDef * ADC){ + //Activation du trigger externe + ADC->CR1 |= ADC_CR1_EOCIE; //Interruption de l'ADC autorisée + NVIC->ISER[0] |= (0x1<IP[ADC1_2_IRQn] |= 1<<4; //Affectation du niveau de priorité +} + +//--------------------HANDLER-----------------// +void ADC1_2_IRQHandler (void) { + (*PtrfctADC)(); //Appel de la fonction pointée par le pointeur fonction ADC + MyADC_Base_Start(ADC1); + ADC1->SR &= ~ADC_SR_EOC; //RAZ du flag end of conversion +} + +//--------------------DATA--------------------// +int MyADC_Base_Result (MyADC_Struct_TypeDef * ADC){ + return ADC1->DR & ~((0x0F)<<12); //Retour de la conversion de l'ADC +} + +//-------------------POINTEUR-----------------// +void MyADC_Init_Periph (void (*fct)(void)){ + PtrfctADC=fct; //Affectation du pointeur de fonction ADC + +} \ No newline at end of file diff --git a/Drivers/Voilier_fonction/Girouette.c b/Drivers/Voilier_fonction/Girouette.c new file mode 100644 index 0000000..064df54 --- /dev/null +++ b/Drivers/Voilier_fonction/Girouette.c @@ -0,0 +1,39 @@ +#include "Girouette.h" +#include "Driver_ADC.h" +#include "Driver_Timer.h" +#include "Driver_GPIO.h" + +void init_encoder_timer (void){ + + //Déclaration du Timer et de ses GPIO + MyGPIO_Struct_TypeDef * GPIO_PB6; + MyGPIO_Struct_TypeDef * GPIO_PB7; + MyTimer_Struct_TypeDef * Encoder_Timer; + + //Parametrage des GPIO + GPIO_PB6->GPIO = GPIOB; + GPIO_PB6->GPIO_Conf = In_Floating; + GPIO_PB6->GPIO_Pin = 6; + MyGPIO_Init(GPIO_PB6); + + GPIO_PB7->GPIO = GPIOB; + GPIO_PB7->GPIO_Conf = In_Floating; + GPIO_PB7->GPIO_Pin = 7; + MyGPIO_Init(GPIO_PB7); + + //Parametrage du Timer + Encoder_Timer->Timer = TIM4; + Encoder_Timer->ARR = 400; //ARR doit être supérieur à 360° puisque la RAZ du Timer se fait au tour complet de la girouette + Encoder_Timer->PSC = 0; //On ne divise pas la précision de notre mesure + MyTimer_Base_Init(Encoder_Timer); + + //Passage du Timer en mode Encoder + TIM4->SMCR &= ~(0x0007); + TIM4->SMCR |= TIM_SMCR_SMS_1; + TIM4->CCMR1 &= ~(0xF2F2); + TIM4->CCMR1 |= TIM_CCMR1_CC1S_0; + TIM4->CCMR1 |= TIM_CCMR1_CC2S_0; + TIM4->CCER &= TIM_CCER_CC1P; + TIM4->CCER &= TIM_CCER_CC2P; + TIM4->CR1 |= TIM_CR1_CEN; +} diff --git a/Drivers/Voilier_fonction/Girouette.h b/Drivers/Voilier_fonction/Girouette.h new file mode 100644 index 0000000..5ee6b25 --- /dev/null +++ b/Drivers/Voilier_fonction/Girouette.h @@ -0,0 +1,3 @@ + + +void init_encoder_timer (void); diff --git a/GPIO_Test/GPIO_Test.uvoptx b/GPIO_Test/GPIO_Test.uvoptx index 181a686..2d84122 100644 --- a/GPIO_Test/GPIO_Test.uvoptx +++ b/GPIO_Test/GPIO_Test.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 8000000 + 12000000 1 1 @@ -79,8 +79,8 @@ 18 - 1 - 0 + 0 + 1 1 1 1 @@ -103,7 +103,7 @@ 1 0 0 - 6 + 0 @@ -114,65 +114,28 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ARMRTXEVENTFLAGS - -L70 -Z18 -C0 -M0 -T1 - - - 0 - DLGDARM - (1010=937,133,1313,690,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=1357,482,1778,909,0)(121=-1,-1,-1,-1,0)(122=546,289,967,716,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=911,135,1505,886,0)(131=997,343,1591,1094,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=1375,56,1823,470,0)(161=1383,268,1831,682,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)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=240,283,843,1034,0)(151=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - -T0 - - - 0 - ST-LINKIII-KEIL_SWO - -U066FFF575256867067031930 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM) - 0 UL2CM3 - -U -O206 -S8 -C0 -P00 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)) - - - 0 - 0 - 69 - 1 -
134219582
- 0 - 0 - 0 - 0 - 0 - 1 - U:\INSA\Microcontrôleur\Projet_Voilier_grp\Voilier\GPIO_Test\Sources\Main.c - - \\GPIO_Test\Sources/Main.c\69 -
-
+ 0 0 - 1 + 0 0 0 - 1 + 0 0 0 - 1 + 0 0 0 0 @@ -203,16 +166,9 @@ - - - 0 - ((PORTA & 0x00000020) >> 5 & 0x20) >> 5 - FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028504F5254412026203078303030303030323029203E3E2035000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F1700000000000000000000000000000000000000DA040008 - - 1 - 0 + 1 0 2 10000000 @@ -225,12 +181,12 @@ 0x4 ARM-ADS - 8000000 + 12000000 - 1 + 0 1 - 0 - 1 + 1 + 0 0 @@ -272,14 +228,14 @@ 0 - 1 + 0 0 0 18 - 0 - 1 + 1 + 0 1 1 1 @@ -288,7 +244,7 @@ 1 1 1 - 1 + 0 1 1 1 @@ -302,7 +258,7 @@ 1 0 0 - 6 + -1 @@ -313,53 +269,21 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + - - - 0 - ARMRTXEVENTFLAGS - -L70 -Z18 -C0 -M0 -T1 - - - 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=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=-1,-1,-1,-1,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 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - ST-LINKIII-KEIL_SWO - -U066FFF575256867067031930 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM) - - - 0 - UL2CM3 - -U -O206 -S8 -C0 -P00 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM) - - 0 0 - 1 + 0 0 0 - 1 + 0 0 0 - 1 + 0 0 0 0 @@ -390,13 +314,6 @@ - - 1 - 0 - 0 - 2 - 10000000 - @@ -446,14 +363,10 @@ 1 4 1 -<<<<<<< HEAD 0 -======= - 1 ->>>>>>> feature-branch 0 0 - C:\Users\chanfreau\Downloads\voilier\Drivers\Sources\Driver_ADC.c + ..\Drivers\Sources\Driver_ADC.c Driver_ADC.c 0 0 @@ -462,7 +375,7 @@ SRC - 0 + 1 0 0 0 @@ -480,6 +393,26 @@ + + Voilier_fonction + 1 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\Drivers\Voilier_fonction\Girouette.c + Girouette.c + 0 + 0 + + + ::CMSIS 0 diff --git a/GPIO_Test/GPIO_Test.uvprojx b/GPIO_Test/GPIO_Test.uvprojx index 61c2421..d3c3d49 100644 --- a/GPIO_Test/GPIO_Test.uvprojx +++ b/GPIO_Test/GPIO_Test.uvprojx @@ -339,7 +339,7 @@ - ..\Drivers\Include + ..\Drivers\Include;..\Drivers\Voilier_fonction;..\Drivers\Sources @@ -401,7 +401,7 @@ Driver_ADC.c 1 - C:\Users\chanfreau\Downloads\voilier\Drivers\Sources\Driver_ADC.c + ..\Drivers\Sources\Driver_ADC.c @@ -415,6 +415,16 @@ + + Voilier_fonction + + + Girouette.c + 1 + ..\Drivers\Voilier_fonction\Girouette.c + + + ::CMSIS @@ -818,7 +828,7 @@ Driver_ADC.c 1 - C:\Users\chanfreau\Downloads\voilier\Drivers\Sources\Driver_ADC.c + ..\Drivers\Sources\Driver_ADC.c @@ -832,6 +842,16 @@ + + Voilier_fonction + + + Girouette.c + 1 + ..\Drivers\Voilier_fonction\Girouette.c + + + ::CMSIS diff --git a/GPIO_Test/Sources/Main.c b/GPIO_Test/Sources/Main.c index 5563abb..bad301f 100644 --- a/GPIO_Test/Sources/Main.c +++ b/GPIO_Test/Sources/Main.c @@ -6,7 +6,7 @@ int main (void){ - //Déclaration d'une LED et d'un BP par structure GPIO + while(1){