#include "USART.h" #include "GPIO.h" #include "stm32f1xx_ll_bus.h" // Pour horloge void USART_conf(USART_TypeDef *usart) { int txPin; GPIO_TypeDef *usartGpio; if (usart == USART1) { LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1); LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA); txPin = LL_GPIO_PIN_9; usartGpio = GPIOA; } else if (usart == USART2) { LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART2); LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA); txPin = LL_GPIO_PIN_2; usartGpio = GPIOA; } else if (usart == USART3) { LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3); LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB); txPin = LL_GPIO_PIN_10; usartGpio = GPIOB; } LL_USART_InitTypeDef usartInit; LL_USART_StructInit(&usartInit); usartInit.DataWidth = LL_USART_DATAWIDTH_8B; usartInit.BaudRate = 9600; usartInit.TransferDirection = LL_USART_DIRECTION_TX_RX; LL_USART_Init(usart, &usartInit); GPIO_conf(usartGpio, txPin, LL_GPIO_MODE_ALTERNATE, LL_GPIO_OUTPUT_PUSHPULL, LL_GPIO_PULL_UP); } void USART_start(USART_TypeDef *usart) { LL_USART_Enable(usart); } void sendChar(USART_TypeDef *usart, char c) { LL_USART_TransmitData8(usart, c); while (!LL_USART_IsActiveFlag_TXE(usart)) {} } void USART_send(USART_TypeDef *usart, char *msg, int length) { for (int i = 0; i < length; i++) { sendChar(usart, msg[i]); } }