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();
}
}