diff --git a/Drivers/Inc/GPIO.h b/Drivers/Inc/GPIO.h index d84a12b..75faf06 100644 --- a/Drivers/Inc/GPIO.h +++ b/Drivers/Inc/GPIO.h @@ -2,7 +2,7 @@ #define MYGPIO_H #include "stm32f10x.h" -#define In_Floating 0x4 // a completer +#define In_Floating 0x4 #define In_PullDown 0x8 #define In_PullUp 0x9 #define In_Analog 0x0 @@ -21,7 +21,7 @@ typedef struct void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr ) ; -int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; // renvoie 0 ou autre chose different de 0 +int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; // renvoie 0 ou 1 void MyGPIO_Set ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; void MyGPIO_Reset ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; void MyGPIO_Toggle ( GPIO_TypeDef * GPIO , char GPIO_Pin ) ; diff --git a/Drivers/Src/ADC.c b/Drivers/Src/ADC.c index 55fdf88..3b9000e 100644 --- a/Drivers/Src/ADC.c +++ b/Drivers/Src/ADC.c @@ -6,7 +6,7 @@ void (*adc2_ptr_func)(void); void MyADC_init(MyADC_Struct_TypeDef* myADC) { MyGPIO_Struct_TypeDef Port_ADC; - switch (myADC->channel) + switch (myADC->channel) // On initialise et configure le port correspondant au channel choisi { case 0: Port_ADC.GPIO=GPIOA; @@ -142,17 +142,17 @@ void MyADC_start_conversion(ADC_TypeDef* ADC) void ADC1_2_IRQHandler(void) { - if(ADC1->SR & ~ADC_SR_EOC) + if(ADC1->SR & ~ADC_SR_EOC) // On vérifie si le flag levé est celui de l'ADC1 { - ADC1->SR &= ~ADC_SR_EOC ; + ADC1->SR &= ~ADC_SR_EOC ; // On remet à 0 le drapeau if(adc1_ptr_func!=0) { (*adc1_ptr_func)(); } } - else if(ADC2->SR & ~ADC_SR_EOC) + else if(ADC2->SR & ~ADC_SR_EOC) // On vérifie si le flag levé est celui de l'ADC2 { - ADC2->SR &= ~ADC_SR_EOC ; + ADC2->SR &= ~ADC_SR_EOC ; // On remet à 0 le drapeau if(adc2_ptr_func!=0) { (*adc2_ptr_func)(); @@ -163,7 +163,7 @@ void ADC1_2_IRQHandler(void) void MyADC_ActiveIT (ADC_TypeDef * ADC, char Prio, void (*IT_function)(void)) { - ADC->CR1 |= ADC_CR1_EOCIE; + ADC->CR1 |= ADC_CR1_EOCIE; // On autorise l'interruption sur les ADC// On précise quelle interruption on souhaite activé// On précise la priorité qu'on souhaite lui donner if(ADC==ADC1) { adc1_ptr_func=IT_function; @@ -172,8 +172,8 @@ void MyADC_ActiveIT (ADC_TypeDef * ADC, char Prio, void (*IT_function)(void)) { adc2_ptr_func=IT_function; } - NVIC->ISER[0] |= 0x01<IP[ADC1_2_IRQn] |= Prio << 4; + NVIC->ISER[0] |= 0x01<IP[ADC1_2_IRQn] |= Prio << 4; // On précise la priorité qu'on souhaite lui donner } diff --git a/Drivers/Src/GPIO.c b/Drivers/Src/GPIO.c index e7b522f..e4e3334 100644 --- a/Drivers/Src/GPIO.c +++ b/Drivers/Src/GPIO.c @@ -5,9 +5,9 @@ void (*gpio_ptr_func)(void); void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr ) { - if(GPIOStructPtr->GPIO==GPIOA) + if(GPIOStructPtr->GPIO==GPIOA) { - RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; + RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Active l'horloge pour } else if (GPIOStructPtr->GPIO==GPIOB) { @@ -22,41 +22,41 @@ void MyGPIO_Init ( MyGPIO_Struct_TypeDef * GPIOStructPtr ) RCC->APB2ENR |= RCC_APB2ENR_IOPDEN; } - if(GPIOStructPtr->GPIO_Conf==0x9) + if(GPIOStructPtr->GPIO_Conf==In_PullUp) { - GPIOStructPtr->GPIO_Conf=GPIOStructPtr->GPIO_Conf-1; + GPIOStructPtr->GPIO_Conf=GPIOStructPtr->GPIO_Conf-1; GPIOStructPtr->GPIO->ODR |= 0x1<<(((GPIOStructPtr->GPIO_Pin))); } - else if(GPIOStructPtr->GPIO_Conf==0x8) + else if(GPIOStructPtr->GPIO_Conf==In_PullDown) { GPIOStructPtr->GPIO->ODR &= ~0x1<<(((GPIOStructPtr->GPIO_Pin))); } - if(GPIOStructPtr->GPIO_Pin>=8) + if(GPIOStructPtr->GPIO_Pin>=8) // Si le numéro de pin est supérieur ou égal à 8 alors on écrit dans le registre CRHigh { GPIOStructPtr->GPIO->CRH &= ~0xF<<(4*((GPIOStructPtr->GPIO_Pin)%8)); //on met a 0 les bit de config du pin - GPIOStructPtr->GPIO->CRH |= GPIOStructPtr->GPIO_Conf<<(4*((GPIOStructPtr->GPIO_Pin)%8)); + GPIOStructPtr->GPIO->CRH |= GPIOStructPtr->GPIO_Conf<<(4*((GPIOStructPtr->GPIO_Pin)%8)); // On met à 1 les bons bits pour obtenir la config souhaité sur le pin } - else + 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 |= GPIOStructPtr->GPIO_Conf<<(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 } } -int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ) // renvoie 0 ou autre chose different de 0 +int MyGPIO_Read ( GPIO_TypeDef * GPIO , char GPIO_Pin ) // renvoie 0 ou 1 { int bit=0; - bit = (GPIO->IDR>>GPIO_Pin)&0x01; + bit = (GPIO->IDR>>GPIO_Pin)&0x01; // On récupère la donnée stocké dans le data register d'entré pour le pin souhaité return bit; } void MyGPIO_Set ( GPIO_TypeDef * GPIO , char GPIO_Pin ) { - GPIO->ODR |=(0x01<ODR |=(0x01<ODR &= ((~0x01)<ODR &= ((~0x01)<APB2ENR |= RCC_APB2ENR_AFIOEN; + RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // On active l'horloge pour AFIO if (GPIO==GPIOA) { AFIO->EXTICR[0] |= (AFIO_EXTICR1_EXTI0_PA << (4*GPIO_Pin)); @@ -91,8 +91,8 @@ void MyGPIO_ActiveIT (GPIO_TypeDef * GPIO, char GPIO_Pin, char Prio, void (*IT_f AFIO->EXTICR[0] |= (AFIO_EXTICR1_EXTI0_PD << (4*GPIO_Pin)); } // manque ligne pour activer l'interruption - NVIC->ISER[0] |= 0x01<IP[EXTI0_IRQn] |= Prio << 4; + NVIC->ISER[0] |= 0x01<IP[EXTI0_IRQn] |= Prio << 4; // On précise la priorité qu'on souhaite lui donner } void EXTI0_IRQHandler(void) @@ -104,7 +104,7 @@ void EXTI0_IRQHandler(void) (*gpio_ptr_func)(); } } - EXTI->RTSR &=0xFFFFF; + EXTI->RTSR &=0xFFFFF; // On reset le flag lmevé //reset flag } diff --git a/Drivers/Src/TIMER.c b/Drivers/Src/TIMER.c index 84c2075..7ec2b8d 100644 --- a/Drivers/Src/TIMER.c +++ b/Drivers/Src/TIMER.c @@ -1,10 +1,5 @@ #include "TIMER.h" -/*periode_timer=peridoe_horloge*prescaler*resolution -debordement stocké dans registre UIF -fixer val prescaler+ autoreload(equivalent resolution) -demarrage timer => CEN=1*/ - void (*tim_ptr1_func)(void); void (*tim_ptr2_func)(void); void (*tim_ptr3_func)(void); @@ -14,22 +9,22 @@ void MyTimer_Base_Init ( MyTimer_Struct_TypeDef * Timer) { if(Timer->Timer==TIM1) { - RCC->APB2ENR |= 0x01<<11; + RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; } else if (Timer->Timer==TIM2) { - RCC->APB1ENR |= 0x01; + RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; } else if (Timer->Timer==TIM3) { - RCC->APB1ENR |= 0x01<<1; + RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; } else if (Timer->Timer==TIM4) { - RCC->APB1ENR |= 0x01<<2; + RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; } - Timer->Timer->ARR=Timer->ARR; - Timer->Timer->PSC=Timer->PSC; + Timer->Timer->ARR=Timer->ARR; // On set la donnée d'autoreload + Timer->Timer->PSC=Timer->PSC; // On set la donnée de prescaler (ce qui va nous permettre de diviser la valeur d'autoreaload) } void MyPWM_init ( TIM_TypeDef * Timer,char Channel) @@ -93,7 +88,7 @@ void MyPWM_Duty (TIM_TypeDef * Timer,char Channel, unsigned short CRR ) void MyTimer_ActiveIT (TIM_TypeDef * Timer, char Prio, void (*IT_function)(void)) { int num_tim; - Timer->DIER |= 0x01; + Timer->DIER |= 0x01; // On autorise les interruptions sur timer if(Timer==TIM1) { num_tim=TIM1_UP_IRQn; @@ -114,8 +109,8 @@ void MyTimer_ActiveIT (TIM_TypeDef * Timer, char Prio, void (*IT_function)(void) num_tim=TIM4_IRQn; tim_ptr4_func=IT_function; } - NVIC->ISER[0] |= 0x01<IP[num_tim] |= Prio << 4; + NVIC->ISER[0] |= 0x01<IP[num_tim] |= Prio << 4; // On précise la priorité qu'on souhaite lui donner } @@ -131,7 +126,7 @@ void TIM2_IRQHandler (void) { (*tim_ptr2_func)(); } - TIM2->SR &= ~(1<<0) ; + TIM2->SR &= ~(1<<0) ; // Remet à 0 le flag de l'interruption } void TIM3_IRQHandler (void) diff --git a/Drivers/Src/UART.c b/Drivers/Src/UART.c index 0aa7a02..d844831 100644 --- a/Drivers/Src/UART.c +++ b/Drivers/Src/UART.c @@ -2,7 +2,6 @@ #include "GPIO.h" void (*uart_rx_ptr_func)(void); -char buffer[1000]={0}; void MyUART_init(void) // que pour du 9600 bauds { @@ -32,7 +31,7 @@ void MyUART_init(void) // que pour du 9600 bauds void UART_send(char data) { - while(!(USART1->SR & USART_SR_TXE)) + while(!(USART1->SR & USART_SR_TXE)) // Tant que le buffer d'envoi n'est pas vide, on n'envoie pas plus de données { } USART1->DR = data; // Ecriture de la donnée dans le registre DR @@ -40,18 +39,17 @@ void UART_send(char data) void MyUART_ActiveIT(char Prio, void (*IT_function)(void)) { - //activer l'interrupt sur reception - USART1->CR1 |= USART_CR1_RXNEIE; + USART1->CR1 |= USART_CR1_RXNEIE; // On autorise l'interruption sur réception de l'UART uart_rx_ptr_func=IT_function; - NVIC->ISER[1] |= 0x01<<(USART1_IRQn%32); - NVIC->IP[USART1_IRQn] |= Prio << 4; + NVIC->ISER[1] |= 0x01<<(USART1_IRQn%32); // On précise quelle interruption on souhaite activé + NVIC->IP[USART1_IRQn] |= Prio << 4; // On précise la priorité qu'on souhaite lui donner } void USART1_IRQHandler() { if (USART1->SR & USART_SR_RXNE) { - USART1->SR &= ~USART_SR_RXNE; + USART1->SR &= ~USART_SR_RXNE; // On abaisse le flag d'interruption if(uart_rx_ptr_func!=0) { (*uart_rx_ptr_func)(); diff --git a/Projet_voile/TP1.uvoptx b/Projet_voile/TP1.uvoptx index 01989d2..79e4a30 100644 --- a/Projet_voile/TP1.uvoptx +++ b/Projet_voile/TP1.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 8000000 + 12000000 1 1 @@ -77,10 +77,10 @@ 0 1 - 18 + 0 - 1 - 0 + 0 + 1 1 1 1 @@ -103,7 +103,7 @@ 1 0 0 - 6 + 0 @@ -114,96 +114,28 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ARMRTXEVENTFLAGS - -L70 -Z18 -C0 -M0 -T1 - - - 0 - DLGDARM -<<<<<<< HEAD:Projet_DevDrivers/TP1.uvoptx - (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=873,10,1294,437,1)(121=-1,-1,-1,-1,0)(122=1345,565,1766,992,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=862,435,1456,1186,0)(132=870,423,1464,1174,1)(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) -======= - (1010=984,109,1360,666,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=1084,185,1505,612,0)(121=-1,-1,-1,-1,0)(122=939,341,1360,768,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=335,17,929,768,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=1177,417,1625,831,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=298,17,901,768,0)(151=-1,-1,-1,-1,0) ->>>>>>> Noel_Olivier:Projet_voile/TP1.uvoptx - - - 0 - ARMDBGFLAGS - -T0 - 0 UL2CM3 UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)) - - - 0 - 0 - 15 - 1 -
0
- 0 - 0 - 0 - 0 - 0 - 0 - .\Sources\Principal.c - - -
-
- - - 0 - 1 - mode - - - 1 - 1 - ADC - - - 2 - 1 - MyChar - - - 3 - 1 - RX_pin - - - 4 - 1 - RX_pin - - - 5 - 1 - MyChar - - + 0 0 - 1 + 0 0 0 0 0 0 - 1 + 0 0 0 0 @@ -234,13 +166,6 @@ - - - 0 - ((PORTA & 0x00000020) >> 5 & 0x20) >> 5 - FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028504F5254412026203078303030303030323029203E3E2035000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F170000000000000000000000000000000000000090020008 - - 1 1 @@ -256,12 +181,12 @@ 0x4 ARM-ADS - 8000000 + 12000000 - 1 + 0 1 - 0 - 1 + 1 + 0 0 @@ -303,14 +228,14 @@ 0 - 1 + 0 0 0 - 18 + 0 - 0 - 1 + 1 + 0 1 1 1 @@ -319,7 +244,7 @@ 1 1 1 - 1 + 0 1 1 1 @@ -333,7 +258,7 @@ 1 0 0 - 6 + -1 @@ -344,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=318,388,739,793,0)(121=1101,403,1522,808,0)(122=1281,393,1702,798,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=1106,213,1554,627,1)(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 - ST-LINKIII-KEIL_SWO - -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) - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)) - - 0 0 - 1 - 1 + 0 + 0 0 - 1 + 0 0 0 - 1 + 0 0 0 0 @@ -421,13 +314,6 @@ - - 1 - 0 - 0 - 2 - 10000000 - @@ -453,7 +339,7 @@ 1 2 1 - 1 + 0 0 0 .\Sources\Girouette.c @@ -465,7 +351,7 @@ 1 3 1 - 1 + 0 0 0 ..\DRIVERS\Src\GPIO.c @@ -477,7 +363,7 @@ 1 4 1 - 1 + 0 0 0 ..\Drivers\Src\TIMER.c @@ -489,7 +375,7 @@ 1 5 1 - 1 + 0 0 0 ..\Drivers\Src\ADC.c @@ -521,7 +407,7 @@ ::Device - 1 + 0 0 0 1 diff --git a/Projet_voile/TP1.uvprojx b/Projet_voile/TP1.uvprojx index dec9999..2d4f63a 100644 --- a/Projet_voile/TP1.uvprojx +++ b/Projet_voile/TP1.uvprojx @@ -10,13 +10,13 @@ Simulé 0x4 ARM-ADS - 5060960::V5.06 update 7 (build 960)::.\ARMCC - 0 + 6190000::V6.19::ARMCLANG + 1 STM32F103RB STMicroelectronics - Keil.STM32F1xx_DFP.2.3.0 + Keil.STM32F1xx_DFP.2.4.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00005000) IROM(0x08000000,0x00020000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE @@ -186,6 +186,7 @@ 0 0 0 + 0 0 0 8 @@ -313,7 +314,7 @@ 1 - 1 + 2 0 0 1 @@ -322,7 +323,7 @@ 0 0 0 - 2 + 3 0 0 0 @@ -603,6 +604,7 @@ 0 0 0 + 0 0 0 8 @@ -845,15 +847,15 @@ - - + + - + @@ -864,7 +866,7 @@ RTE\Device\STM32F103RB\RTE_Device.h - + @@ -873,7 +875,7 @@ RTE\Device\STM32F103RB\startup_stm32f10x_md.s - + @@ -882,7 +884,7 @@ RTE\Device\STM32F103RB\system_stm32f10x.c - +