Compare commits

..

No commits in common. "1e9f281f4d7d02b48338607739da4c356d6573f8" and "c011e4174209144a093ba922bf075d5131595f12" have entirely different histories.

13 changed files with 97 additions and 341 deletions

View file

@ -25,6 +25,6 @@ int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; // renvoie 0 ou 1
void MyGPIO_Set ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; void MyGPIO_Set ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ;
void MyGPIO_Reset ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; void MyGPIO_Reset ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ;
void MyGPIO_Toggle ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; void MyGPIO_Toggle ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ;
void MyGPIO_ActiveIT (GPIO_TypeDef * GPIO, char GPIO_Pin, char Prio, void (*IT_function)(void)) ; void MyGPIO_ActiveIT (GPIO_TypeDef * GPIO, char GPIO_Pin, char Prio, void (*IT_function)(void))
#endif #endif

View file

@ -1,9 +1,7 @@
#ifndef MYTIMER_H #ifndef MYTIMER_H
#define MYTIMER_H #define MYTIMER_H
#include "GPIO.h"
#include "stm32f10x.h" #include "stm32f10x.h"
typedef struct typedef struct
{ {
TIM_TypeDef * Timer ; // TIM1 à TIM4 TIM_TypeDef * Timer ; // TIM1 à TIM4
@ -40,8 +38,5 @@ void MyTimer_ActiveIT (TIM_TypeDef * Timer, char Prio, void (*IT_function)(void)
void MyPWM_init ( TIM_TypeDef * Timer,char Channel); void MyPWM_init ( TIM_TypeDef * Timer,char Channel);
void MyPWM_Duty (TIM_TypeDef * Timer,char Channel, unsigned short CRR ); void MyPWM_Duty (TIM_TypeDef * Timer,char Channel, unsigned short CRR );
void init_encoder_timer(void (*IT_function)(void));
void Reset_degree (void);
int Read_CNT (void);
#endif #endif

View file

@ -117,9 +117,9 @@ void MyADC_init(MyADC_Struct_TypeDef* myADC)
} }
else if(myADC->ADC==ADC2) else if(myADC->ADC==ADC2)
{ {
RCC->APB2ENR |= RCC_APB2ENR_ADC2EN; // validation horloge ADC2 RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // validation horloge ADC1
RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; // passage de l'horloge ADC1 à 12MHz RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; // passage de l'horloge ADC1 à 12MHz
ADC2->CR2|= ADC_CR2_ADON; // démarrage ADC2 ADC2->CR2|= ADC_CR2_ADON; // démarrage ADC1
ADC2->SQR1&= ADC_SQR1_L; // fixe le nombre de conversion à 1 ADC2->SQR1&= ADC_SQR1_L; // fixe le nombre de conversion à 1
ADC2->SQR3|= myADC->channel; // indique la voie à convertir ADC2->SQR3|= myADC->channel; // indique la voie à convertir
ADC2->CR2 |= ADC_CR2_CAL; // début de la calibration ADC2->CR2 |= ADC_CR2_CAL; // début de la calibration

View file

@ -38,7 +38,7 @@ void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr )
} }
else // Si le numéro de pin est inférieur à 8 alors on écrit dans le registre CRLow else // Si le numéro de pin est inférieur à 8 alors on écrit dans le registre CRLow
{ {
GPIOStructPtr->GPIO->CRL &= ~(0xF<<(4*((GPIOStructPtr->GPIO_Pin)%8))); //on met a 0 les bit de config du pin GPIOStructPtr->GPIO->CRL &= ~0xF<<(4*((GPIOStructPtr->GPIO_Pin)%8)); //on met a 0 les bit de config du pin
GPIOStructPtr->GPIO->CRL |= GPIOStructPtr->GPIO_Conf<<(4*((GPIOStructPtr->GPIO_Pin)%8)); // On met à 1 les bons bits pour obtenir la config souhaité sur le pin GPIOStructPtr->GPIO->CRL |= GPIOStructPtr->GPIO_Conf<<(4*((GPIOStructPtr->GPIO_Pin)%8)); // On met à 1 les bons bits pour obtenir la config souhaité sur le pin
} }
} }
@ -74,32 +74,37 @@ void MyGPIO_Toggle ( GPIO_TypeDef * GPIO , char GPIO_Pin )
void MyGPIO_ActiveIT (GPIO_TypeDef * GPIO, char GPIO_Pin, char Prio, void (*IT_function)(void)) //p210 void MyGPIO_ActiveIT (GPIO_TypeDef * GPIO, char GPIO_Pin, char Prio, void (*IT_function)(void)) //p210
{ {
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // On active l'horloge pour AFIO RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // On active l'horloge pour AFIO
if (GPIO==GPIOC) if (GPIO==GPIOA)
{ {
AFIO->EXTICR[GPIO_Pin] |= AFIO_EXTICR1_EXTI3_PC ; AFIO->EXTICR[0] |= (AFIO_EXTICR1_EXTI0_PA << (4*GPIO_Pin));
} }
EXTI->RTSR |= GPIO_Pin; else if (GPIO==GPIOB)
// EXTI->FTSR |= ~(0x01<<GPIO_Pin);
EXTI->EMR |= GPIO_Pin;
NVIC->ISER[0] |= 0x01<<EXTI3_IRQn; // On précise quelle interruption on souhaite activer
NVIC->IP[EXTI3_IRQn] |= Prio << 4; // On précise la priorité qu'on souhaite lui donner
}
void EXTI3_IRQHandler(void)
{
if(gpio_ptr_func!=0)
{ {
(*gpio_ptr_func)(); AFIO->EXTICR[0] |= (AFIO_EXTICR1_EXTI0_PB << (4*GPIO_Pin));
} }
EXTI->PR &= ~(AFIO_EXTICR1_EXTI3_PC << (4*4)); // car c'est le pin4 else if (GPIO==GPIOC)
{
AFIO->EXTICR[0] |= (AFIO_EXTICR1_EXTI0_PC << (4*GPIO_Pin));
}
else if (GPIO==GPIOD)
{
AFIO->EXTICR[0] |= (AFIO_EXTICR1_EXTI0_PD << (4*GPIO_Pin));
}
// manque ligne pour activer l'interruption
NVIC->ISER[0] |= 0x01<<EXTI0_IRQn; // On précise quelle interruption on souhaite activé
NVIC->IP[EXTI0_IRQn] |= Prio << 4; // On précise la priorité qu'on souhaite lui donner
} }
void EXTI0_IRQHandler(void) void EXTI0_IRQHandler(void)
{ {
if(gpio_ptr_func!=0) if (EXTI->RTSR) //on test si RTSR est différent de 0
{ {
(*gpio_ptr_func)(); if(gpio_ptr_func!=0)
{
(*gpio_ptr_func)();
}
} }
EXTI->PR &= ~(AFIO_EXTICR1_EXTI0_PC << (4*4)); // car c'est le pin4 EXTI->RTSR &=0xFFFFF; // On reset le flag lmevé
//reset flag
} }

View file

@ -114,59 +114,10 @@ void MyTimer_ActiveIT (TIM_TypeDef * Timer, char Prio, void (*IT_function)(void)
} }
void init_encoder_timer(void (*IT_function)(void)) //voir page 391 void init_encoder_timer(TIM_TypeDef * Timer) //voir page 391
{ {
MyGPIO_Struct_TypeDef GPIO_PB6; Timer->SMCR = 0x1;
MyGPIO_Struct_TypeDef GPIO_PB7;
MyTimer_Struct_TypeDef Timer;
GPIO_PB6.GPIO = GPIOB;
GPIO_PB6.GPIO_Conf = In_Floating;
GPIO_PB6.GPIO_Pin = 6;
GPIO_PB7.GPIO = GPIOB;
GPIO_PB7.GPIO_Conf = In_Floating;
GPIO_PB7.GPIO_Pin = 7;
/*GPIO_PC3.GPIO = GPIOC;
GPIO_PC3.GPIO_Conf = In_Floating;
GPIO_PC3.GPIO_Pin = 3;*/
Timer.Timer=TIM4;
Timer.ARR = 719;
Timer.PSC = 0;
MyTimer_Base_Init(&Timer);
MyGPIO_Init (&GPIO_PB6);
MyGPIO_Init (&GPIO_PB7);
//MyGPIO_Init (&GPIO_PC3);
//MyGPIO_ActiveIT (GPIO_PC3.GPIO, GPIO_PC3.GPIO_Pin, 4, IT_function);
TIM4-> SMCR &= ~0x0007;
TIM4-> SMCR |= TIM_SMCR_SMS_1;
TIM4-> CCMR1 &= ~0xF2F2; // Mise à 0 des CC1S, CC2S, IC1F et IC2F
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;
}
void Reset_degree (void)
{
TIM4->CNT = 0x0000;
}
int Read_CNT (void)
{
return TIM4->CNT;
} }
void TIM2_IRQHandler (void) void TIM2_IRQHandler (void)

View file

@ -2,9 +2,7 @@
#define MYGIROUETTE_H #define MYGIROUETTE_H
#include "stm32f10x.h" #include "stm32f10x.h"
#include "GPIO.h" #include "GPIO.h"
#include "TIMER.h"
void init_girouette (void);
void Test_tour_girouette(void);
#endif #endif

View file

@ -1,9 +0,0 @@
#ifndef MYPWMVOILE_H
#define MYPWMVOILE_H
#include "stm32f10x.h"
#include "GPIO.h"
#include "TIMER.h"
void init_pwm_voile(void);
#endif

View file

@ -1,26 +1,13 @@
#include "Girouette.h" #include "Girouette.h"
MyGPIO_Struct_TypeDef GPIOC3; int bordage(void){
/*MyGPIO_Struct_TypeDef signalA = (GPIOC, 6, In_PullDown);
void Test_Encoder (void) MyGPIO_Struct_TypeDef signalB = (GPIOC, 7, In_PullDown);
{ MyGPIO_Struct_TypeDef signalI = (GPIOC, 8, In_PullDown);
Reset_degree();
}
void init_girouette (void)
{
GPIOC3.GPIO = GPIOC; MyGPIO_Init(&signalA);
GPIOC3.GPIO_Conf = In_Floating; MyGPIO_Init(&signalB);
GPIOC3.GPIO_Pin = 3; MyGPIO_Init(&signalI);*/
MyGPIO_Init (&GPIOC3);
init_encoder_timer(&Test_Encoder);
} }
void Test_tour_girouette(void){
if(MyGPIO_Read(GPIOC3.GPIO, GPIOC3.GPIO_Pin))
{
Reset_degree();
}
}

View file

@ -3,9 +3,6 @@
#include <string.h> #include <string.h>
#include "GPIO.h" #include "GPIO.h"
#include "UART.h" #include "UART.h"
#include "TIMER.h"
#include "Girouette.h"
#include "Pwm_voile.h"
char MyChar; char MyChar;
@ -19,21 +16,19 @@ void UART_RX_IT (void)
int main ( void ) int main ( void )
{ {
MyGPIO_Struct_TypeDef GPIOA5; MyGPIO_Struct_TypeDef myGPIO;
GPIOA5.GPIO = GPIOA; myGPIO.GPIO = GPIOA;
GPIOA5.GPIO_Conf = Out_Ppull; myGPIO.GPIO_Conf = Out_Ppull;
GPIOA5.GPIO_Pin = 5; myGPIO.GPIO_Pin = 5;
MyGPIO_Init (&GPIOA5);
init_girouette(); MyGPIO_Init (&myGPIO);
init_pwm_voile();
MyUART_init(); MyUART_init();
MyUART_ActiveIT(1, &UART_RX_IT); //mode permet d'activer soit l'interruption sur TX MyUART_ActiveIT(1, &UART_RX_IT); //mode permet d'activer soit l'interruption sur TX
while(1) while(1)
{ {
Test_tour_girouette();
//Orientation_voiles();
} }
} }

View file

@ -1,44 +0,0 @@
# include "Pwm_voile.h"
MyTimer_Struct_TypeDef Timer2, Timer3;
MyGPIO_Struct_TypeDef PB0;
void write_pwm(void)
{
int val_pwm;
float cnt;
cnt=Read_CNT();
if(cnt>=360)
{
cnt=cnt-360;
val_pwm=(Timer3.ARR/20)+((Timer3.ARR/20)*(cnt/360.0));
}
else
{
val_pwm=2*(Timer3.ARR/20)-((Timer3.ARR/20)*(cnt/360.0));
}
//Timer3.ARR/20 --> 1ms, pour controler le moteur c'est entre 1ms et 2ms
//calcul angle en pwm
MyPWM_Duty(Timer3.Timer,3,val_pwm);
}
void init_pwm_voile(void)
{
Timer2.Timer=TIM2;
Timer2.ARR=1800;
Timer2.PSC=1000;
MyTimer_Base_Init(&Timer2);
MyTimer_ActiveIT(Timer2.Timer,2,&write_pwm);
MyTimer_Base_Start(Timer2.Timer);
PB0.GPIO=GPIOB;
PB0.GPIO_Conf=AltOut_Ppull;
PB0.GPIO_Pin=0;
MyGPIO_Init(&PB0);
Timer3.Timer=TIM3;
Timer3.ARR=14400;
Timer3.PSC=100;
MyTimer_Base_Init(&Timer3);
MyPWM_init(Timer3.Timer,3);
MyTimer_Base_Start(Timer3.Timer);
}

View file

@ -75,12 +75,12 @@
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget> <IsCurrentTarget>1</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>0</CpuCode>
<DebugOpt> <DebugOpt>
<uSim>1</uSim> <uSim>0</uSim>
<uTrg>0</uTrg> <uTrg>1</uTrg>
<sLdApp>1</sLdApp> <sLdApp>1</sLdApp>
<sGomain>1</sGomain> <sGomain>1</sGomain>
<sRbreak>1</sRbreak> <sRbreak>1</sRbreak>
@ -117,73 +117,25 @@
<pMon>BIN\UL2CM3.DLL</pMon> <pMon>BIN\UL2CM3.DLL</pMon>
</DebugOpt> </DebugOpt>
<TargetDriverDllRegistry> <TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMRTXEVENTFLAGS</Key>
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGDARM</Key>
<Name>(1010=710,304,1086,861,1)(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=1161,471,1582,898,1)(121=-1,-1,-1,-1,0)(122=1317,323,1738,750,0)(123=-1,-1,-1,-1,0)(140=1117,100,1805,440,1)(240=263,238,662,583,1)(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)(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=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMDBGFLAGS</Key>
<Name>-T0</Name>
</SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>UL2CM3</Key> <Key>UL2CM3</Key>
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name> <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint> <Breakpoint/>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>90</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134218190</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\DRIVERS\Src\GPIO.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\TP1\../DRIVERS/Src/GPIO.c\90</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>100</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134218154</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\DRIVERS\Src\GPIO.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\TP1\../DRIVERS/Src/GPIO.c\100</Expression>
</Bp>
</Breakpoint>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
</Tracepoint> </Tracepoint>
<DebugFlag> <DebugFlag>
<trace>0</trace> <trace>0</trace>
<periodic>1</periodic> <periodic>0</periodic>
<aLwin>1</aLwin> <aLwin>0</aLwin>
<aCover>0</aCover> <aCover>0</aCover>
<aSer1>1</aSer1> <aSer1>0</aSer1>
<aSer2>0</aSer2> <aSer2>0</aSer2>
<aPa>0</aPa> <aPa>0</aPa>
<viewmode>1</viewmode> <viewmode>0</viewmode>
<vrSel>0</vrSel> <vrSel>0</vrSel>
<aSym>0</aSym> <aSym>0</aSym>
<aTbox>0</aTbox> <aTbox>0</aTbox>
@ -192,7 +144,7 @@
<AscS3>0</AscS3> <AscS3>0</AscS3>
<aSer3>0</aSer3> <aSer3>0</aSer3>
<eProf>0</eProf> <eProf>0</eProf>
<aLa>1</aLa> <aLa>0</aLa>
<aPa1>0</aPa1> <aPa1>0</aPa1>
<AscS4>0</AscS4> <AscS4>0</AscS4>
<aSer4>0</aSer4> <aSer4>0</aSer4>
@ -229,12 +181,12 @@
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<TargetOption> <TargetOption>
<CLKADS>8000000</CLKADS> <CLKADS>12000000</CLKADS>
<OPTTT> <OPTTT>
<gFlags>1</gFlags> <gFlags>0</gFlags>
<BeepAtEnd>1</BeepAtEnd> <BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim> <RunSim>1</RunSim>
<RunTarget>1</RunTarget> <RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc> <RunAbUc>0</RunAbUc>
</OPTTT> </OPTTT>
<OPTHX> <OPTHX>
@ -276,14 +228,14 @@
<LExpSel>0</LExpSel> <LExpSel>0</LExpSel>
</OPTXL> </OPTXL>
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget> <IsCurrentTarget>0</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>0</CpuCode>
<DebugOpt> <DebugOpt>
<uSim>0</uSim> <uSim>1</uSim>
<uTrg>1</uTrg> <uTrg>0</uTrg>
<sLdApp>1</sLdApp> <sLdApp>1</sLdApp>
<sGomain>1</sGomain> <sGomain>1</sGomain>
<sRbreak>1</sRbreak> <sRbreak>1</sRbreak>
@ -292,7 +244,7 @@
<sRfunc>1</sRfunc> <sRfunc>1</sRfunc>
<sRbox>1</sRbox> <sRbox>1</sRbox>
<tLdApp>1</tLdApp> <tLdApp>1</tLdApp>
<tGomain>1</tGomain> <tGomain>0</tGomain>
<tRbreak>1</tRbreak> <tRbreak>1</tRbreak>
<tRwatch>1</tRwatch> <tRwatch>1</tRwatch>
<tRmem>1</tRmem> <tRmem>1</tRmem>
@ -306,7 +258,7 @@
<bEvRecOn>1</bEvRecOn> <bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf> <bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf> <bTchkAxf>0</bTchkAxf>
<nTsel>6</nTsel> <nTsel>-1</nTsel>
<sDll></sDll> <sDll></sDll>
<sDllPa></sDllPa> <sDllPa></sDllPa>
<sDlgDll></sDlgDll> <sDlgDll></sDlgDll>
@ -317,60 +269,21 @@
<tDlgDll></tDlgDll> <tDlgDll></tDlgDll>
<tDlgPa></tDlgPa> <tDlgPa></tDlgPa>
<tIfile></tIfile> <tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon> <pMon></pMon>
</DebugOpt> </DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMRTXEVENTFLAGS</Key>
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGTARM</Key>
<Name>(1010=457,337,833,894,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=1002,18,1423,423,0)(121=235,274,656,679,1)(122=353,663,774,1068,0)(123=-1,-1,-1,-1,0)(140=1031,78,1719,418,0)(240=1050,425,1449,770,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=377,147,971,841,1)(133=139,242,733,936,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)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMDBGFLAGS</Key>
<Name></Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ST-LINKIII-KEIL_SWO</Key>
<Name>-U-O206 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name>(105=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>UL2CM3</Key>
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM))</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/> <Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>cnt,0x0A</ItemText>
</Ww>
</WatchWindow1>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
</Tracepoint> </Tracepoint>
<DebugFlag> <DebugFlag>
<trace>0</trace> <trace>0</trace>
<periodic>1</periodic> <periodic>0</periodic>
<aLwin>1</aLwin> <aLwin>0</aLwin>
<aCover>0</aCover> <aCover>0</aCover>
<aSer1>1</aSer1> <aSer1>0</aSer1>
<aSer2>0</aSer2> <aSer2>0</aSer2>
<aPa>0</aPa> <aPa>0</aPa>
<viewmode>1</viewmode> <viewmode>0</viewmode>
<vrSel>0</vrSel> <vrSel>0</vrSel>
<aSym>0</aSym> <aSym>0</aSym>
<aTbox>0</aTbox> <aTbox>0</aTbox>
@ -379,7 +292,7 @@
<AscS3>0</AscS3> <AscS3>0</AscS3>
<aSer3>0</aSer3> <aSer3>0</aSer3>
<eProf>0</eProf> <eProf>0</eProf>
<aLa>1</aLa> <aLa>0</aLa>
<aPa1>0</aPa1> <aPa1>0</aPa1>
<AscS4>0</AscS4> <AscS4>0</AscS4>
<aSer4>0</aSer4> <aSer4>0</aSer4>
@ -401,19 +314,6 @@
<pszMrulep></pszMrulep> <pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp> <pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp> <pMultCmdsp></pMultCmdsp>
<SystemViewers>
<Entry>
<Name>System Viewer\TIM4</Name>
<WinId>35905</WinId>
</Entry>
</SystemViewers>
<DebugDescription>
<Enable>1</Enable>
<EnableFlashSeq>0</EnableFlashSeq>
<EnableLog>0</EnableLog>
<Protocol>2</Protocol>
<DbgClock>10000000</DbgClock>
</DebugDescription>
</TargetOption> </TargetOption>
</Target> </Target>
@ -439,7 +339,7 @@
<GroupNumber>1</GroupNumber> <GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber> <FileNumber>2</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\Sources\Girouette.c</PathWithFileName> <PathWithFileName>.\Sources\Girouette.c</PathWithFileName>
@ -451,7 +351,7 @@
<GroupNumber>1</GroupNumber> <GroupNumber>1</GroupNumber>
<FileNumber>3</FileNumber> <FileNumber>3</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\DRIVERS\Src\GPIO.c</PathWithFileName> <PathWithFileName>..\DRIVERS\Src\GPIO.c</PathWithFileName>
@ -463,7 +363,7 @@
<GroupNumber>1</GroupNumber> <GroupNumber>1</GroupNumber>
<FileNumber>4</FileNumber> <FileNumber>4</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Drivers\Src\TIMER.c</PathWithFileName> <PathWithFileName>..\Drivers\Src\TIMER.c</PathWithFileName>
@ -487,7 +387,7 @@
<GroupNumber>1</GroupNumber> <GroupNumber>1</GroupNumber>
<FileNumber>6</FileNumber> <FileNumber>6</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Drivers\Src\UART.c</PathWithFileName> <PathWithFileName>..\Drivers\Src\UART.c</PathWithFileName>
@ -495,18 +395,6 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\Sources\Pwm_voile.c</PathWithFileName>
<FilenameWithoutPath>Pwm_voile.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@ -519,7 +407,7 @@
<Group> <Group>
<GroupName>::Device</GroupName> <GroupName>::Device</GroupName>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>1</RteFlg> <RteFlg>1</RteFlg>

View file

@ -10,7 +10,7 @@
<TargetName>Simulé</TargetName> <TargetName>Simulé</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>6160000::V6.16::ARMCLANG</pCCUsed> <pCCUsed>6190000::V6.19::ARMCLANG</pCCUsed>
<uAC6>1</uAC6> <uAC6>1</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
@ -414,11 +414,6 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\Drivers\Src\UART.c</FilePath> <FilePath>..\Drivers\Src\UART.c</FilePath>
</File> </File>
<File>
<FileName>Pwm_voile.c</FileName>
<FileType>1</FileType>
<FilePath>.\Sources\Pwm_voile.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -439,7 +434,7 @@
<TargetCommonOption> <TargetCommonOption>
<Device>STM32F103RB</Device> <Device>STM32F103RB</Device>
<Vendor>STMicroelectronics</Vendor> <Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F1xx_DFP.2.4.0</PackID> <PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL> <PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x00005000) IROM(0x08000000,0x00020000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu> <Cpu>IRAM(0x20000000,0x00005000) IROM(0x08000000,0x00020000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec> <FlashUtilSpec></FlashUtilSpec>
@ -837,11 +832,6 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\Drivers\Src\UART.c</FilePath> <FilePath>..\Drivers\Src\UART.c</FilePath>
</File> </File>
<File>
<FileName>Pwm_voile.c</FileName>
<FileType>1</FileType>
<FilePath>.\Sources\Pwm_voile.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>

View file

@ -14,13 +14,13 @@ Le projet se sépare en 2 grandes parties :
## <a id="id_drivers">Réalisation des drivers</a> ## <a id="id_drivers">Réalisation des drivers</a>
Pour cela, nous avons utilisé les 3 documentations disponibles dans la première section de ce [cours moodle](https://moodle.insa-toulouse.fr/course/view.php?id=79#section-1). Pour cela, nous avons utilisé les 3 documentations disponible dans la première section de ce [cours moodle](https://moodle.insa-toulouse.fr/course/view.php?id=79#section-1).
Nous avons donc réalisé les drivers suivant : Nous avons donc réalisé les drivers suivant :
[x] l'[ADC](Drivers/Inc/ADC.h) [x] l'[ADC](Drivers/Inc/ADC.h)
[x] les [GPIOs](Drivers/Inc/GPIO.h) [x] les [GPIOs](Drivers/Inc/GPIO.h)
[x] l'[UART](Drivers/Inc/UART.h) [x] l'[UART](Drivers/Inc/UART.h)
[x] les [Timers et le PWM](Drivers/Inc/TIMER.h) [x] les [Timers et le PWM](Drivers/Inc/TIMER.h)
Les drivers pour l'utilisation du SPI et de l'I2C nous sont fournis. Les drivers pour l'utilisation du SPI et de l'I2C nous sont fournis.
@ -28,15 +28,15 @@ Les drivers pour l'utilisation du SPI et de l'I2C nous sont fournis.
Pour cela nous avons utilisé les documentations disponible dans la [section suivante](https://moodle.insa-toulouse.fr/course/view.php?id=79#section-16) du cours moodle précédemment cité. Pour cela nous avons utilisé les documentations disponible dans la [section suivante](https://moodle.insa-toulouse.fr/course/view.php?id=79#section-16) du cours moodle précédemment cité.
Nous avons donc réalisé les fonctions suivantes : Nous avons donc réalisé les fonctions suivantes :
[x] la [Girouette](Projet_voile/Includes/Girouette.h) [ ] la [Girouette](Projet_voile/Includes/Girouette.h)
[ ] l' [Horloge](Drivers/Inc/Horloge.h) [ ] l' [Horloge](Drivers/Inc/Horloge.h)
[ ] l'[IMU](Drivers/Inc/IMU.h) [ ] l'[IMU](Drivers/Inc/IMU.h)
[x] le [Moteur des voiles](Drivers/Inc/Moteur_voile.h) [ ] le [Moteur des voiles](Drivers/Inc/Moteur_voile.h)
[ ] le [Moteur du plateau](Drivers/Inc/Moteur_plateau.h) [ ] le [Moteur du plateau](Drivers/Inc/Moteur_plateau.h)
[ ] la [Mesure de tension de la batterie](Drivers/Inc/Mesure_tension.h) [ ] la [Mesure de tension de la batterie](Drivers/Inc/Mesure_tension.h)
[ ] la [télécommande](Drivers/Inc/Telecommande.h) [ ] la [télécommande](Drivers/Inc/Telecommande.h)
Evidemment chacune de ces fonctions font appel aux drivers de la couche en dessous. Evidemment chacune de cesfonctions fait appel aux drivers de la couche en dessous.
Enfin pour controler l'entiereté de ce bateau, nous utiliserons un code [principal](Projet_voile/Includes/Principal.h). Celui-ci fera appel aux sous programmes présents au dessus. Evidemment pour controler l'entiereté de ce bateau, nous utiliserons un code [principal](Projet_voile/Includes/Principal.h). Celui-ci fera appel aux sous programmes présentsau dessus.