diff --git a/MDK-ARM/Project.uvoptx b/MDK-ARM/Project.uvoptx index 56fe5a8..842febe 100644 --- a/MDK-ARM/Project.uvoptx +++ b/MDK-ARM/Project.uvoptx @@ -75,7 +75,7 @@ 1 0 - 0 + 1 18 @@ -101,7 +101,9 @@ 0 0 1 - 5 + 0 + 0 + 6 @@ -148,41 +150,41 @@ 0 ST-LINKIII-KEIL_SWO - -U-O142 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM) + -U-O142 -O2254 -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 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM) 0 0 - 47 + 44 1 -
134219058
+
0
0 0 0 0 0 - 1 + 0 ../Src/main.c - \\NUCLEO_F103RB\../Src/main.c\47 +
1 0 - 44 + 47 1 -
134219052
+
0
0 0 0 0 0 - 1 + 0 ../Src/main.c - \\NUCLEO_F103RB\../Src/main.c\44 +
@@ -191,6 +193,11 @@ 1 Main_Time + + 1 + 1 + Chrono_Time + 0 @@ -230,8 +237,13 @@ + + + + 1 + 0 0 2 10000000 @@ -293,7 +305,7 @@ 1 0 - 1 + 0 18 @@ -319,6 +331,8 @@ 0 0 1 + 0 + 0 5 @@ -336,7 +350,7 @@ 0 DLGDARM - (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)(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=-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=908,72,1329,499,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=854,46,1448,797,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) 0 @@ -373,9 +387,41 @@ 0 0 + 153 + 1 +
134217996
+ 0 + 0 + 0 + 0 + 0 + 1 + startup_stm32f103xb.s + + \\NUCLEO_F103RB\startup_stm32f103xb.s\153 +
+ + 1 + 0 + 143 + 1 +
134217992
+ 0 + 0 + 0 + 0 + 0 + 1 + startup_stm32f103xb.s + + \\NUCLEO_F103RB\startup_stm32f103xb.s\143 +
+ + 2 + 0 46 1 -
134219406
+
134219942
0 0 0 @@ -387,6 +433,18 @@ \\NUCLEO_F103RB\../Src/main.c\46
+ + + 0 + 1 + Chrono_Time + + + 1 + 1 + Reset_Button_Last_State + + 0 @@ -425,8 +483,13 @@ + + + + 1 + 0 0 2 10000000 @@ -536,6 +599,18 @@ 0 0 + + 4 + 7 + 1 + 1 + 0 + 0 + ..\LLDrivers\src\stm32f1xx_ll_gpio.c + stm32f1xx_ll_gpio.c + 0 + 0 + @@ -546,7 +621,7 @@ 0 5 - 7 + 8 5 0 0 @@ -560,13 +635,13 @@ Drivers/CMSIS - 0 + 1 0 0 0 6 - 8 + 9 1 0 0 @@ -586,7 +661,7 @@ 0 7 - 9 + 10 2 0 0 diff --git a/MDK-ARM/Project.uvprojx b/MDK-ARM/Project.uvprojx index 10bdafa..faf19d8 100644 --- a/MDK-ARM/Project.uvprojx +++ b/MDK-ARM/Project.uvprojx @@ -10,12 +10,13 @@ NUCLEO-F103RB 0x4 ARM-ADS - 5060422::V5.06 update 4 (build 422)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 STM32F103RB STMicroelectronics - Keil.STM32F1xx_DFP.2.2.0 + Keil.STM32F1xx_DFP.2.3.0 http://www.keil.com/pack/ IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") @@ -183,6 +184,7 @@ 0 0 0 + 0 0 0 8 @@ -323,6 +325,7 @@ 0 0 0 + 0 0 1 1 @@ -424,6 +427,11 @@ 1 ..\LLDrivers\src\stm32f1xx_ll_tim.c + + stm32f1xx_ll_gpio.c + 1 + ..\LLDrivers\src\stm32f1xx_ll_gpio.c + @@ -465,12 +473,13 @@ Simulateur 0x4 ARM-ADS - 5060422::V5.06 update 4 (build 422)::ARMCC + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 STM32F103RB STMicroelectronics - Keil.STM32F1xx_DFP.2.2.0 + Keil.STM32F1xx_DFP.2.3.0 http://www.keil.com/pack/ IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") @@ -638,6 +647,7 @@ 0 0 0 + 0 0 0 8 @@ -778,6 +788,7 @@ 0 0 0 + 0 0 1 1 @@ -879,6 +890,11 @@ 1 ..\LLDrivers\src\stm32f1xx_ll_tim.c + + stm32f1xx_ll_gpio.c + 1 + ..\LLDrivers\src\stm32f1xx_ll_gpio.c + diff --git a/Services/Chrono.c b/Services/Chrono.c index 615a4c6..137e6b5 100644 --- a/Services/Chrono.c +++ b/Services/Chrono.c @@ -10,6 +10,9 @@ Utilise la lib MyTimers.h /.c #include "Chrono.h" #include "MyTimer.h" +#include "stm32f1xx_ll_gpio.h" +#include "stm32f1xx_ll_bus.h" // CLock +#include "stm32f1xx_ll_utils.h" // variable privée de type Time qui mémorise la durée mesurée static Time Chrono_Time; // rem : static rend la visibilité de la variable Chrono_Time limitée à ce fichier @@ -20,6 +23,50 @@ static TIM_TypeDef * Chrono_Timer=TIM1; // init par d // déclaration callback appelé toute les 10ms void Chrono_Task_10ms(void); +void Chrono_Conf_io(void) { + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC); + + LL_GPIO_SetPinMode(GPIOC, LL_GPIO_PIN_8, LL_GPIO_MODE_FLOATING); + LL_GPIO_SetPinMode(GPIOC, LL_GPIO_PIN_13, LL_GPIO_MODE_FLOATING); + LL_GPIO_SetPinMode(GPIOC, LL_GPIO_PIN_10, LL_GPIO_MODE_OUTPUT_2MHz); + LL_GPIO_SetPinOutputType(GPIOC, LL_GPIO_PIN_10, LL_GPIO_OUTPUT_OPENDRAIN); + LL_GPIO_SetOutputPin(GPIOC, LL_GPIO_PIN_10); // Car logique négative +} + +void Chrono_Background(void) { + static int isAllume = 1; + static int Start_Stop_Button_Last_State = 0; + static int Reset_Button_Last_State = 1; + + if (LL_GPIO_IsInputPinSet(GPIOC, LL_GPIO_PIN_8)) { + Start_Stop_Button_Last_State = 1; + } + + if (!LL_GPIO_IsInputPinSet(GPIOC, LL_GPIO_PIN_8) && Start_Stop_Button_Last_State) { + Start_Stop_Button_Last_State = 0; + if (isAllume) { + isAllume = 0; + Chrono_Stop(); + } else { + isAllume = 1; + Chrono_Start(); + } + LL_mDelay(1); + } + + if (!LL_GPIO_IsInputPinSet(GPIOC, LL_GPIO_PIN_13)) { + Reset_Button_Last_State = 0; + } + + if (LL_GPIO_IsInputPinSet(GPIOC, LL_GPIO_PIN_13) && !Reset_Button_Last_State) { + Reset_Button_Last_State = 1; + Chrono_Reset(); + if (isAllume) { + Chrono_Start(); + } + } +} + /** * @brief Configure le chronomètre. * @note A lancer avant toute autre fonction. @@ -44,7 +91,9 @@ void Chrono_Conf(TIM_TypeDef * Timer) // Validation IT MyTimer_IT_Enable(Chrono_Timer); - + + // Configuration des IO + Chrono_Conf_io(); } @@ -113,11 +162,19 @@ Time * Chrono_Read(void) */ void Chrono_Task_10ms(void) { + static int LED_OFF = 1; Chrono_Time.Hund++; if (Chrono_Time.Hund==100) { Chrono_Time.Sec++; Chrono_Time.Hund=0; + if (LED_OFF) { + LL_GPIO_ResetOutputPin(GPIOC, LL_GPIO_PIN_10); + LED_OFF = 0; + } else { + LL_GPIO_SetOutputPin(GPIOC, LL_GPIO_PIN_10); + LED_OFF = 1; + } } if (Chrono_Time.Sec==60) { diff --git a/Src/main.c b/Src/main.c index 5a11db1..b209102 100644 --- a/Src/main.c +++ b/Src/main.c @@ -50,6 +50,7 @@ int main(void) /* Infinite loop */ while (1) { + Chrono_Background(); } }