diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f77ef35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +*.obj +*.o +*.bin +*.list +*.map +*.mk +*.makefile +*.o +*.su +*.d +*.elf +*.scvd +*.crf +*.map +*.sct +*.dbgconf +*.axf +*.htm +*.lnp +*.dep +*.uvguix.* +*.lst +*.iex +**/Objects/ +**/Listings/ +**/Debug/ + + + diff --git a/driver/Driver_ADC.c b/driver/Driver_ADC.c new file mode 100644 index 0000000..c1c0829 --- /dev/null +++ b/driver/Driver_ADC.c @@ -0,0 +1,67 @@ +#include "stm32f10x.h" +#include "stdio.h" +#include "Driver_ADC.h" +void erreur (void) +{ + while(1); +} + +void (*ADC1_2_fx) (void) = &erreur; + + +/** +************************************************************************************************* +* @brief Activation et configuration de l'ADC1. +* @param -> Priorité de l'intérruption. +* @Note -> Fonction à lancer systématiquement avant d’aller plus en détail dans les conf plus fines (PWM, codeur inc...) +************************************************************************************************* +*/ +void driver_adc_1_init (char Prio, void (*IT_function)(void)) +{ + //On règle la fréquence à 12Mhz + RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; + //Validation de l'horloge ACD1 + RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; + //Activation de l'external trig + ADC1->CR2 |= ADC_CR2_EXTTRIG; + //Activation SWSTART + ADC1->CR2 |= ADC_CR2_EXTSEL; + //Validation de l'horloge ACD1 + RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; + //Activation de l'ADC1 + ADC1->CR2 |= ADC_CR2_ADON; + //Fixe le nb de conversion, ici 1 + ADC1->SQR1 &= ADC_SQR1_L; + //Numéro de voie à convertir + ADC1->SQR3 |= 1; + //Lancement de la calibration + ADC1->CR2 |= ADC_CR2_CAL; + //Attente de la fin de la calibration + while((ADC1->CR2 & ADC_CR2_CAL)); + //Activation de l'intéruption sur le flag EOC + ADC1->CR1 |= ADC_CR1_EOCIE; + //Activation de l'intéruption et configuration du niveau de priorité + NVIC_EnableIRQ(ADC1_2_IRQn); + NVIC_SetPriority(ADC1_2_IRQn, Prio); + //Fonction à appeler à l'intéruption + ADC1_2_fx = IT_function; +} + +void driver_adc_1_launch_read (void) +{ + //Lancement de la conversion + ADC1->CR2 |= ADC_CR2_SWSTART; +} + +uint16_t driver_adc_1_read (void) +{ + //Retour de la conversion + return ADC1->DR &~ ((0x0F) << 12); +} +void ADC1_2_IRQHandler(void) +{ + //On abaisse le flag pour la prochaine lecture + ADC1->SR &= ~ADC_SR_EOC; + //On lance la fonction de l'utilisateur + (*ADC1_2_fx)(); +} diff --git a/driver/Driver_ADC.h b/driver/Driver_ADC.h new file mode 100644 index 0000000..f1b80d0 --- /dev/null +++ b/driver/Driver_ADC.h @@ -0,0 +1,9 @@ +#ifndef DRIVER_ADC_H +#define DRIVER_ADC_H +#include "stm32f10x.h" + +void driver_adc_1_init (char Prio, void (*IT_function)(void)); +void driver_adc_1_launch_read (void); +uint16_t driver_adc_1_read (void); + +#endif diff --git a/projet-voilier/Driver_ADC.c b/projet-voilier/Driver_ADC.c new file mode 100644 index 0000000..f9f7bdf --- /dev/null +++ b/projet-voilier/Driver_ADC.c @@ -0,0 +1,40 @@ +#include "Driver_ADC.h" +#include "stm32f10x.h" +#include "stdio.h" + +void init_adc1 (void) +{ + //Activation de l'external trig + ADC1->CR2 |= ADC_CR2_EXTTRIG; + //Activation SWSTART + ADC1->CR2 |= ADC_CR2_EXTSEL; + //On règle la fréquence à 12Mhz + RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; + //Activation de l'ADC + ADC1->CR2 |= ADC_CR2_ADON; + //Fixe le nb de conversion, ici 1 + ADC1->SQR1 &= ADC_SQR1_L; + //Numéro de voie à convertir + ADC1->SQR3 |= 1; + //Lancement de la calibration + ADC1->CR2 |= ADC_CR2_CAL; + //Attente de la fin de la calibration + while((ADC1->CR2 & ADC_CR2_CAL)); + //Activation de l'intéruption sur le flag EOC + ADC1->CR1 |= ADC_CR1_EOCIE; +} + +void launch_read_adc1 (void) +{ + //Lancement de la conversion + ADC1->CR2 |= ADC_CR2_SWSTART; +} + +int read_adc1 (void) +{ + + //On abaisse le flag pour la prochaine lecture + ADC1->SR &= ~ADC_SR_EOC; + //Retour de la conversion + return ADC1->DR &~ ((0x0F) << 12); +} diff --git a/projet-voilier/Listings/projet-voilier_reel.map b/projet-voilier/Listings/projet-voilier_reel.map index 1729b9e..4118379 100644 --- a/projet-voilier/Listings/projet-voilier_reel.map +++ b/projet-voilier/Listings/projet-voilier_reel.map @@ -70,6 +70,7 @@ Section Cross References Removing Unused input sections from the image. +<<<<<<< HEAD Removing main.o(.text), (0 bytes). Removing main.o(.ARM.exidx.text.main), (8 bytes). Removing main.o(.ARM.use_no_argv), (4 bytes). @@ -99,6 +100,32 @@ Removing Unused input sections from the image. Removing driver_uart.o(.ARM.exidx.text.MyUART_SendByte), (8 bytes). Removing driver_uart.o(.text.MyUART_ReceiveByte), (16 bytes). Removing driver_uart.o(.ARM.exidx.text.MyUART_ReceiveByte), (8 bytes). +======= + Removing main.o(.rev16_text), (4 bytes). + Removing main.o(.revsh_text), (4 bytes). + Removing main.o(.rrx_text), (6 bytes). + Removing driver_gpio.o(.rev16_text), (4 bytes). + Removing driver_gpio.o(.revsh_text), (4 bytes). + Removing driver_gpio.o(.rrx_text), (6 bytes). + Removing driver_gpio.o(i.MyGPIO_Read), (14 bytes). + Removing driver_gpio.o(i.MyGPIO_Reset), (12 bytes). + Removing driver_gpio.o(i.MyGPIO_Toggle), (12 bytes). + Removing driver_timer.o(.rev16_text), (4 bytes). + Removing driver_timer.o(.revsh_text), (4 bytes). + Removing driver_timer.o(.rrx_text), (6 bytes). + Removing driver_timer.o(i.MyTimer_ActiveIT), (112 bytes). + Removing driver_timer.o(i.MyTimer_Base_Init), (116 bytes). + Removing driver_timer.o(i.MyTimer_Start), (10 bytes). + Removing driver_timer.o(i.MyTimer_Stop), (10 bytes). + Removing driver_timer.o(i.__NVIC_EnableIRQ), (34 bytes). + Removing driver_timer.o(i.__NVIC_SetPriority), (40 bytes). + Removing driver_adc.o(.rev16_text), (4 bytes). + Removing driver_adc.o(.revsh_text), (4 bytes). + Removing driver_adc.o(.rrx_text), (6 bytes). + Removing driver_adc.o(i.init_adc1), (132 bytes). + Removing driver_adc.o(i.launch_read_adc1), (20 bytes). + Removing driver_adc.o(i.read_adc1), (28 bytes). +>>>>>>> 26e44a6d5ba2eda12f591ccdce71c8c854107110 Removing startup_stm32f10x_md.o(HEAP), (512 bytes). Removing system_stm32f10x.o(.text), (0 bytes). Removing system_stm32f10x.o(.ARM.exidx.text.SystemInit), (8 bytes). @@ -107,7 +134,11 @@ Removing Unused input sections from the image. Removing system_stm32f10x.o(.data.SystemCoreClock), (4 bytes). Removing system_stm32f10x.o(.rodata.AHBPrescTable), (16 bytes). +<<<<<<< HEAD 36 unused section(s) (total 1026 bytes) removed from the image. +======= +30 unused section(s) (total 1306 bytes) removed from the image. +>>>>>>> 26e44a6d5ba2eda12f591ccdce71c8c854107110 ============================================================================== @@ -117,6 +148,7 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) +<<<<<<< HEAD ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE @@ -134,6 +166,32 @@ Image Symbol Table Driver_Timer.c 0x00000000 Number 0 driver_timer.o ABSOLUTE Driver_UART.c 0x00000000 Number 0 driver_uart.o ABSOLUTE RTE/Device/STM32F103RB/startup_stm32f10x_md.s 0x00000000 Number 0 startup_stm32f10x_md.o ABSOLUTE +======= + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ..\\driver\\Driver_ADC.c 0x00000000 Number 0 driver_adc.o ABSOLUTE + ..\\driver\\Driver_GPIO.c 0x00000000 Number 0 driver_gpio.o ABSOLUTE + ..\\driver\\Driver_Timer.c 0x00000000 Number 0 driver_timer.o ABSOLUTE + ..\driver\Driver_ADC.c 0x00000000 Number 0 driver_adc.o ABSOLUTE + ..\driver\Driver_GPIO.c 0x00000000 Number 0 driver_gpio.o ABSOLUTE + ..\driver\Driver_Timer.c 0x00000000 Number 0 driver_timer.o ABSOLUTE + RTE\Device\STM32F103RB\startup_stm32f10x_md.s 0x00000000 Number 0 startup_stm32f10x_md.o ABSOLUTE + RTE\Device\STM32F103RB\system_stm32f10x.c 0x00000000 Number 0 system_stm32f10x.o ABSOLUTE + RTE\\Device\\STM32F103RB\\system_stm32f10x.c 0x00000000 Number 0 system_stm32f10x.o ABSOLUTE +>>>>>>> 26e44a6d5ba2eda12f591ccdce71c8c854107110 dc.s 0x00000000 Number 0 dc.o ABSOLUTE handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE init.s 0x00000000 Number 0 init.o ABSOLUTE @@ -281,6 +339,7 @@ Memory Map of the image Exec Addr Load Addr Size Type Attr Idx E Section Name Object +<<<<<<< HEAD 0x08000000 0x08000000 0x000000ec Data RO 73 RESET startup_stm32f10x_md.o 0x080000ec 0x080000ec 0x00000000 Code RO 94 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) 0x080000ec 0x080000ec 0x00000004 Code RO 97 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) @@ -314,22 +373,61 @@ Memory Map of the image 0x0800059c 0x0800059c 0x00000002 Code RO 116 i.__scatterload_null mc_w.l(handlers.o) 0x0800059e 0x0800059e 0x0000000e Code RO 117 i.__scatterload_zeroinit mc_w.l(handlers.o) 0x080005ac 0x080005ac 0x00000020 Data RO 114 Region$$Table anon$$obj.o +======= + 0x08000000 0x08000000 0x000000ec Data RO 236 RESET startup_stm32f10x_md.o + 0x080000ec 0x080000ec 0x00000000 Code RO 287 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 290 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 293 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 295 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 297 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 298 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 305 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) + 0x08000100 0x08000100 0x00000000 Code RO 300 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) + 0x08000100 0x08000100 0x00000000 Code RO 302 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) + 0x08000100 0x08000100 0x00000004 Code RO 291 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x08000104 0x08000104 0x00000024 Code RO 237 * .text startup_stm32f10x_md.o + 0x08000128 0x08000128 0x00000024 Code RO 306 .text mc_w.l(init.o) + 0x0800014c 0x0800014c 0x00000004 Code RO 118 i.Bug driver_timer.o + 0x08000150 0x08000150 0x00000108 Code RO 66 i.MyGPIO_Init driver_gpio.o + 0x08000258 0x08000258 0x0000000c Code RO 69 i.MyGPIO_Set driver_gpio.o + 0x08000264 0x08000264 0x00000008 Code RO 244 i.SetSysClock system_stm32f10x.o + 0x0800026c 0x0800026c 0x000000e0 Code RO 245 i.SetSysClockTo72 system_stm32f10x.o + 0x0800034c 0x0800034c 0x00000060 Code RO 247 i.SystemInit system_stm32f10x.o + 0x080003ac 0x080003ac 0x00000020 Code RO 123 i.TIM2_IRQHandler driver_timer.o + 0x080003cc 0x080003cc 0x00000020 Code RO 124 i.TIM3_IRQHandler driver_timer.o + 0x080003ec 0x080003ec 0x00000020 Code RO 125 i.TIM4_IRQHandler driver_timer.o + 0x0800040c 0x0800040c 0x0000000e Code RO 310 i.__scatterload_copy mc_w.l(handlers.o) + 0x0800041a 0x0800041a 0x00000002 Code RO 311 i.__scatterload_null mc_w.l(handlers.o) + 0x0800041c 0x0800041c 0x0000000e Code RO 312 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x0800042a 0x0800042a 0x00000002 PAD + 0x0800042c 0x0800042c 0x0000002c Code RO 4 i.main main.o + 0x08000458 0x08000458 0x00000020 Data RO 308 Region$$Table anon$$obj.o +>>>>>>> 26e44a6d5ba2eda12f591ccdce71c8c854107110 Execution Region ER_RW (Exec base: 0x20000000, Load base: 0x080005cc, Size: 0x0000000c, Max: 0xffffffff, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object +<<<<<<< HEAD 0x20000000 0x080005cc 0x00000004 Data RW 47 .data.TIM2_fx driver_timer.o 0x20000004 0x080005d0 0x00000004 Data RW 48 .data.TIM3_fx driver_timer.o 0x20000008 0x080005d4 0x00000004 Data RW 49 .data.TIM4_fx driver_timer.o +======= + 0x20000000 0x08000478 0x0000000c Data RW 128 .data driver_timer.o +>>>>>>> 26e44a6d5ba2eda12f591ccdce71c8c854107110 Execution Region ER_ZI (Exec base: 0x20000010, Load base: 0x080005d8, Size: 0x00000400, Max: 0xffffffff, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object +<<<<<<< HEAD 0x20000010 - 0x00000400 Zero RW 71 STACK startup_stm32f10x_md.o +======= + 0x2000000c 0x08000484 0x00000004 PAD + 0x20000010 - 0x00000400 Zero RW 234 STACK startup_stm32f10x_md.o +>>>>>>> 26e44a6d5ba2eda12f591ccdce71c8c854107110 ============================================================================== diff --git a/projet-voilier/Objects/main.crf b/projet-voilier/Objects/main.crf index 5599ca6..d0ee215 100644 Binary files a/projet-voilier/Objects/main.crf and b/projet-voilier/Objects/main.crf differ diff --git a/projet-voilier/Objects/main.d b/projet-voilier/Objects/main.d index d9e2675..05cd3e8 100644 --- a/projet-voilier/Objects/main.d +++ b/projet-voilier/Objects/main.d @@ -1,3 +1,4 @@ +<<<<<<< HEAD ./objects/main.o: src\main.c \ C:\Users\robin\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include\stm32f10x.h \ RTE\_sim\RTE_Components.h \ @@ -9,3 +10,17 @@ C:\Users\robin\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include\system_stm32f10x.h \ ..\driver\Driver_GPIO.h ..\driver\Driver_Timer.h \ ..\driver\Driver_UART.h +======= +.\objects\main.o: src\main.c +.\objects\main.o: C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h +.\objects\main.o: .\RTE\_reel\RTE_Components.h +.\objects\main.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\core_cm3.h +.\objects\main.o: C:\Keil_v5\ARM\ARMCC\Bin\..\include\stdint.h +.\objects\main.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_version.h +.\objects\main.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_compiler.h +.\objects\main.o: C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\cmsis_armcc.h +.\objects\main.o: C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\system_stm32f10x.h +.\objects\main.o: ..\driver\Driver_GPIO.h +.\objects\main.o: ..\driver\Driver_Timer.h +.\objects\main.o: ..\driver\Driver_ADC.h +>>>>>>> 26e44a6d5ba2eda12f591ccdce71c8c854107110 diff --git a/projet-voilier/Objects/projet-voilier_reel.build_log.htm b/projet-voilier/Objects/projet-voilier_reel.build_log.htm index a1e08e3..d1490bb 100644 --- a/projet-voilier/Objects/projet-voilier_reel.build_log.htm +++ b/projet-voilier/Objects/projet-voilier_reel.build_log.htm @@ -25,9 +25,20 @@ C:\Users\robin\OneDrive\Documents\Dev\Projet-Voilier-3\projet-voilier\projet-voi Project File Date: 03/27/2023