diff --git a/MDK-ARM/Project.uvoptx b/MDK-ARM/Project.uvoptx
index 920a74d..6e6df50 100644
--- a/MDK-ARM/Project.uvoptx
+++ b/MDK-ARM/Project.uvoptx
@@ -130,7 +130,7 @@
0
DLGTARM
- (1010=668,263,1044,820,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=1027,281,1448,686,0)(121=-1,-1,-1,-1,0)(122=348,235,769,640,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=87,183,486,528,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=621,97,1215,791,0)(131=-1,-1,-1,-1,0)(132=784,58,1378,752,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)(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=668,263,1044,820,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=1027,281,1448,686,0)(121=-1,-1,-1,-1,0)(122=348,235,769,640,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=87,183,486,528,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=621,97,1215,791,0)(131=738,113,1332,807,0)(132=784,58,1378,752,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)(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
@@ -669,6 +669,18 @@
0
0
+
+ 2
+ 14
+ 5
+ 0
+ 0
+ 0
+ ..\Src\Gouvernail.h
+ Gouvernail.h
+ 0
+ 0
+
@@ -679,7 +691,7 @@
0
3
- 14
+ 15
1
0
0
@@ -691,7 +703,7 @@
3
- 15
+ 16
1
0
0
@@ -703,7 +715,7 @@
3
- 16
+ 17
1
0
0
@@ -715,7 +727,7 @@
3
- 17
+ 18
1
0
0
@@ -727,7 +739,7 @@
3
- 18
+ 19
1
0
0
@@ -755,7 +767,7 @@
0
5
- 19
+ 20
1
0
0
@@ -775,7 +787,7 @@
0
6
- 20
+ 21
2
0
0
diff --git a/MDK-ARM/Project.uvprojx b/MDK-ARM/Project.uvprojx
index d85880a..298b8ab 100644
--- a/MDK-ARM/Project.uvprojx
+++ b/MDK-ARM/Project.uvprojx
@@ -452,6 +452,11 @@
1
..\Src\maths.c
+
+ Gouvernail.h
+ 5
+ ..\Src\Gouvernail.h
+
@@ -958,6 +963,11 @@
1
..\Src\maths.c
+
+ Gouvernail.h
+ 5
+ ..\Src\Gouvernail.h
+
diff --git a/Src/Gouvernail.c b/Src/Gouvernail.c
index e69de29..e094159 100644
--- a/Src/Gouvernail.c
+++ b/Src/Gouvernail.c
@@ -0,0 +1,63 @@
+#include "stm32f1xx_ll_gpio.h" // GPIO
+#include "stm32f1xx_ll_bus.h" // RCC
+#include "stm32f1xx_ll_tim.h" // TIMER
+
+/**
+ * @brief Configure le récepteur de la télécommande ainsi que le plateau rotatif.
+ * @note Configuration du port PB6 et 7 en alternate input pour récupérer les signaux
+ Configuration des deux channels du TIM4 pour la lecture de la PWM
+ Configuration du PA1 en alternate output (commande PWM vitesse) et PA2 en output push pull pour commander le sens
+ Configuration du TIM2_CH2 pour la sortie PWM
+ * @param None
+ * @retval None
+ */
+void ConfGouvernail(void) {
+ // Configuration des IO
+ // Liberation de la clock du port A et B
+ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
+ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
+
+ // Configuration des IO -> pin B6 et 7 en alternate input, pin A1 en alternate output, et, pin A2 en output push pull
+ LL_GPIO_SetPinMode(GPIOB, LL_GPIO_PIN_6, LL_GPIO_MODE_FLOATING);
+ LL_GPIO_SetPinMode(GPIOB, LL_GPIO_PIN_7, LL_GPIO_MODE_FLOATING);
+ LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_1, LL_GPIO_MODE_ALTERNATE);
+ LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_1, LL_GPIO_OUTPUT_PUSHPULL);
+ LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT);
+ LL_GPIO_SetPinOutputType(GPIOA, LL_GPIO_PIN_2, LL_GPIO_OUTPUT_PUSHPULL);
+
+
+ //Configuration des timers
+ // Libération de la clock du timer
+ LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2);
+ LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM4);
+
+ // Configuration des canaux du timer -> TIM2 CH2 et PWM output (plages de 20ms)
+ LL_TIM_OC_InitTypeDef Tim2Initializer;
+ LL_TIM_OC_StructInit(&Tim2Initializer);
+ Tim2Initializer.OCMode = LL_TIM_OCMODE_PWM1;
+ LL_TIM_OC_Init(TIM2, LL_TIM_CHANNEL_CH2, &Tim2Initializer);
+ LL_TIM_SetAutoReload(TIM2, 19999);
+ LL_TIM_SetPrescaler(TIM2, 71);
+ LL_TIM_OC_SetCompareCH2(TIM2, 0);
+ LL_TIM_EnableCounter(TIM2);
+ LL_TIM_CC_EnableChannel(TIM2, LL_TIM_CHANNEL_CH2);
+}
+
+/**
+ * @brief Renvoi la valeur envoyée par la télécommande
+ * @note Représentation de la donnée en % bidirectionnel -> int entre -100 et 100 (sens codé par le signe, vitesse par la valeur absolue)
+ * @param None
+ * @retval La commande de la télécommande, représenté en % bidirectionnel -> int entre -100 et 100 (sens codé par le signe, vitesse par la valeur absolue)
+ */
+int LireTelecommande(void) {
+ return 0;
+}
+
+/**
+ * @brief Commande le moteur en fonction de la commande donnée.
+ * @note Commande le sens et la vitesse
+ * @param Commande en % bidirectionnel -> int entre -100 et 100 (sens codé par le signe, vitesse par la valeur absolue)
+ * @retval None
+ */
+void CommanderMoteur(int commande) {
+}
diff --git a/Src/Gouvernail.h b/Src/Gouvernail.h
index e69de29..eeb3d15 100644
--- a/Src/Gouvernail.h
+++ b/Src/Gouvernail.h
@@ -0,0 +1,31 @@
+#ifndef GOUVERNAIL_H
+#define GOUVERNAIL_H
+
+/**
+ * @brief Configure le récepteur de la télécommande ainsi que le plateau rotatif.
+ * @note Configuration du port PB6 et 7 en alternate input pour récupérer les signaux
+ Configuration des deux channels du TIM4 pour la lecture de la PWM
+ Configuration du PA1 en alternate output (commande PWM vitesse) et PA2 en output push pull pour commander le sens
+ Configuration du TIM2_CH2 pour la sortie PWM
+ * @param None
+ * @retval None
+ */
+void ConfGouvernail(void);
+
+/**
+ * @brief Renvoi la valeur envoyée par la télécommande
+ * @note Représentation de la donnée en % bidirectionnel -> int entre -100 et 100 (sens codé par le signe, vitesse par la valeur absolue)
+ * @param None
+ * @retval La commande de la télécommande, représenté en % bidirectionnel -> int entre -100 et 100 (sens codé par le signe, vitesse par la valeur absolue)
+ */
+int LireTelecommande(void);
+
+/**
+ * @brief Commande le moteur en fonction de la commande donnée.
+ * @note Commande le sens et la vitesse
+ * @param Commande en % bidirectionnel -> int entre -100 et 100 (sens codé par le signe, vitesse par la valeur absolue)
+ * @retval None
+ */
+void CommanderMoteur(int commande);
+
+#endif
diff --git a/Src/Voilier.c b/Src/Voilier.c
index 92008ad..5b057e5 100644
--- a/Src/Voilier.c
+++ b/Src/Voilier.c
@@ -25,7 +25,7 @@ void Setup(){
//ConfAntiChavirement();
ConfAllure();
ConfVoile();
- //ConfGouvernail();
+ ConfGouvernail();
}