From fff46d3a159ed37373d603546a2aa13af62ae62a Mon Sep 17 00:00:00 2001
From: Neluji <38362829+Neluji@users.noreply.github.com>
Date: Wed, 4 Nov 2020 09:27:31 +0100
Subject: [PATCH 1/2] USART init
---
MyDrivers/MyUSART.c | 63 +++++++++++++++++++++++++++++++++++++++++++++
MyDrivers/MyUSART.h | 44 +++++++++++++++++++++++++++++++
2 files changed, 107 insertions(+)
create mode 100644 MyDrivers/MyUSART.c
create mode 100644 MyDrivers/MyUSART.h
diff --git a/MyDrivers/MyUSART.c b/MyDrivers/MyUSART.c
new file mode 100644
index 0000000..57caff4
--- /dev/null
+++ b/MyDrivers/MyUSART.c
@@ -0,0 +1,63 @@
+#include "MyUSART.h"
+#include "stm32f1xx_ll_bus.h" // Pour l'activation des horloges
+#include "stm32f1xx_ll_usart.h"
+
+
+/**
+ * @brief Active l'horloge et règle les paramètres de transmission
+ * @note Fonction à lancer avant toute autre.
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_Conf(USART_TypeDef * USART, int TransferDir)
+{
+ LL_USART_InitTypeDef My_LL_USART_Init_Struct;
+
+ // Validation horloge locale
+ if (USART==USART1) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1);
+ else if (USART==USART2) LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART2);
+ else LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3);
+
+ //Initialisation de l'USART
+ LL_USART_StructInit(&My_LL_USART_Init_Struct);
+
+ My_LL_USART_Init_Struct.TransferDirection = TransferDir;
+
+ LL_USART_Init(USART, &My_LL_USART_Init_Struct);
+
+}
+
+/**
+ * @brief Autorise les interruptions de TXE
+ * @note
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_IT_Enable(USART_TypeDef * USART)
+{
+ LL_USART_EnableIT_TXE(USART);
+}
+
+
+/**
+ * @brief Interdit les interruptions de TXE
+ * @note
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_IT_Disable(USART_TypeDef * USART)
+{
+ LL_USART_DisableIT_TXE(USART);
+}
+
+
+/**
+ * @brief Transmet 8bits de donnée
+ * @note
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_Transmit_Data_8b(USART_TypeDef * USART, int data)
+{
+ LL_USART_TransmitData8(USART, data);
+}
diff --git a/MyDrivers/MyUSART.h b/MyDrivers/MyUSART.h
new file mode 100644
index 0000000..691a3b3
--- /dev/null
+++ b/MyDrivers/MyUSART.h
@@ -0,0 +1,44 @@
+#ifndef MY_USART_H
+#define MY_USART_H
+
+/*
+Driver pour USART 1 à 3 du STM32F103RB
+
+*/
+
+#include "stm32f103xb.h"
+
+/**
+ * @brief Active l'horloge et règle les paramètres de transmission
+ * @note Fonction à lancer avant toute autre.
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_Conf(USART_TypeDef * USART, int TransferDir);
+
+/**
+ * @brief Autorise les interruptions de TXE
+ * @note
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_IT_Enable(USART_TypeDef * USART);
+
+/**
+ * @brief Interdit les interruptions de TXE
+ * @note
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_IT_Disable(USART_TypeDef * USART);
+
+/**
+ * @brief Transmet 8bits de donnée
+ * @note
+ * @param USART_TypeDef UsDollar : indique le usart à utiliser par le uC, USART1, USART2 ou USART3
+ * @retval None
+ */
+void MyUSART_Transmit_Data_8b(USART_TypeDef * USART, int data);
+
+
+#endif
From 1556c5145f09513d7db2cf50124a92c5d226c002 Mon Sep 17 00:00:00 2001
From: Neluji <38362829+Neluji@users.noreply.github.com>
Date: Sun, 22 Nov 2020 18:49:30 +0100
Subject: [PATCH 2/2] Configuration fonct OK
---
MDK-ARM/Project.uvoptx | 32 ++++++++++++++++++++++----------
MDK-ARM/Project.uvprojx | 10 ++++++++++
MyDrivers/MyUSART.c | 10 +++++++++-
3 files changed, 41 insertions(+), 11 deletions(-)
diff --git a/MDK-ARM/Project.uvoptx b/MDK-ARM/Project.uvoptx
index dad60dc..39ec91c 100644
--- a/MDK-ARM/Project.uvoptx
+++ b/MDK-ARM/Project.uvoptx
@@ -420,7 +420,7 @@
1
1
1
- 1
+ 0
0
0
../Src/main.c
@@ -448,7 +448,7 @@
3
2
1
- 1
+ 0
0
0
..\MyDrivers\MyTimer.c
@@ -456,6 +456,18 @@
0
0
+
+ 3
+ 3
+ 1
+ 1
+ 0
+ 0
+ ..\MyDrivers\MyUSART.c
+ MyUSART.c
+ 0
+ 0
+
@@ -466,7 +478,7 @@
0
4
- 3
+ 4
1
0
0
@@ -478,7 +490,7 @@
4
- 4
+ 5
1
0
0
@@ -490,7 +502,7 @@
4
- 5
+ 6
1
0
0
@@ -502,7 +514,7 @@
4
- 6
+ 7
1
0
0
@@ -514,7 +526,7 @@
4
- 7
+ 8
1
0
0
@@ -534,7 +546,7 @@
0
5
- 8
+ 9
5
0
0
@@ -554,7 +566,7 @@
0
6
- 9
+ 10
1
0
0
@@ -574,7 +586,7 @@
0
7
- 10
+ 11
2
0
0
diff --git a/MDK-ARM/Project.uvprojx b/MDK-ARM/Project.uvprojx
index cd43e32..35d72bc 100644
--- a/MDK-ARM/Project.uvprojx
+++ b/MDK-ARM/Project.uvprojx
@@ -400,6 +400,11 @@
1
..\MyDrivers\MyTimer.c
+
+ MyUSART.c
+ 1
+ ..\MyDrivers\MyUSART.c
+
@@ -861,6 +866,11 @@
1
..\MyDrivers\MyTimer.c
+
+ MyUSART.c
+ 1
+ ..\MyDrivers\MyUSART.c
+
diff --git a/MyDrivers/MyUSART.c b/MyDrivers/MyUSART.c
index 57caff4..5a20a14 100644
--- a/MyDrivers/MyUSART.c
+++ b/MyDrivers/MyUSART.c
@@ -12,19 +12,26 @@
void MyUSART_Conf(USART_TypeDef * USART, int TransferDir)
{
LL_USART_InitTypeDef My_LL_USART_Init_Struct;
+ LL_USART_ClockInitTypeDef My_LL_USART_Clock;
// Validation horloge locale
if (USART==USART1) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1);
else if (USART==USART2) LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART2);
else LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3);
+ //Activation clk de l'USART en entrée et sortie
+ LL_USART_ClockStructInit(&My_LL_USART_Clock);
+ My_LL_USART_Clock.ClockOutput = LL_USART_CLOCK_ENABLE;
+ LL_USART_ClockInit(USART, &My_LL_USART_Clock);
+
//Initialisation de l'USART
LL_USART_StructInit(&My_LL_USART_Init_Struct);
- My_LL_USART_Init_Struct.TransferDirection = TransferDir;
+ //My_LL_USART_Init_Struct.TransferDirection = TransferDir;
LL_USART_Init(USART, &My_LL_USART_Init_Struct);
+ LL_USART_Enable(USART);
}
/**
@@ -60,4 +67,5 @@ void MyUSART_IT_Disable(USART_TypeDef * USART)
void MyUSART_Transmit_Data_8b(USART_TypeDef * USART, int data)
{
LL_USART_TransmitData8(USART, data);
+ while (LL_USART_IsActiveFlag_TC(USART) != 1){}
}