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] 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