IonizationChamber/Software/Firmware/Driver/uart.c

61 wiersze
1.2 KiB
C
Executable File

#include <assert.h>
#include <stdint.h>
#include "uart.h"
#include "pinout_conf.h"
#include "stm8s.h"
#include "stm8s_uart1.h"
#include "stm8s_gpio.h"
#define UART_SPEED 9600
static_assert(IS_UART1_BAUDRATE_OK(UART_SPEED), "UART_SPEED is NOK for STM8S_StdPeriph_Lib");
static void setup_gpio(void);
static void setup_uart1(void);
void uart_init(void)
{
setup_gpio();
setup_uart1();
}
void uart_write(
const uint8_t *output,
const uint8_t length)
{
for(uint8_t i = 0; i < length; i++)
{
/* Write a character to the UART1 */
UART1_SendData8(output[i]);
/* Loop until the end of transmission */
while(UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET)
{
/* Busy-wait until the function returns a status that signifies it's
done */
}
}
}
void setup_gpio(
void)
{
GPIO_Init(PORT_UART, PIN_TX, GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(PORT_UART, PIN_RX, GPIO_MODE_IN_PU_NO_IT);
}
void setup_uart1(
void)
{
UART1_Init(UART_SPEED,
UART1_WORDLENGTH_8D,
UART1_STOPBITS_1,
UART1_PARITY_NO,
UART1_SYNCMODE_CLOCK_DISABLE,
UART1_MODE_TXRX_ENABLE);
UART1_Cmd(ENABLE);
}