// uart.h
#ifndef __UART_H
#define __UART_H
#include "stm32f10x.h"
#include "stm32f10x_usart.h"
#include <stdarg.h>
#include <stdio.h>

#define TXEN1_PORT      GPIOC
#define TXEN2_PORT      GPIOC
#define TXEN3_PORT      GPIOC
#define TXEN1_PIN       GPIO_Pin_14
#define TXEN2_PIN       GPIO_Pin_15
#define TXEN3_PIN       GPIO_Pin_12

#define TXEN1_ENABLE    (GPIOC->BSRR = GPIO_Pin_14)
#define TXEN1_DISABLE   (GPIOC->BRR  = GPIO_Pin_14)
#define TXEN2_ENABLE    (GPIOC->BSRR = GPIO_Pin_15)
#define TXEN2_DISABLE   (GPIOC->BRR  = GPIO_Pin_15)
#define TXEN3_ENABLE    (GPIOC->BSRR = GPIO_Pin_12)
#define TXEN3_DISABLE   (GPIOC->BRR  = GPIO_Pin_12)

void init_uart(u8 uart, u32 bps, u8 txen);
void uart1_putc_p(char c);
void uart2_putc_p(char c);
void uart3_putc_p(char c);
void uart1_puts_p(char *p);
void uart2_puts_p(char *p);
void uart3_puts_p(char *p);
void uart1_printf_p(const char *fmt,...);
void uart2_printf_p(const char *fmt,...);
void uart3_printf_p(const char *fmt,...);

void uart1_putc(char c);
void uart2_putc(char c);
void uart3_putc(char c);
void uart1_puts(char *p);
void uart2_puts(char *p);
void uart3_puts(char *p);
void uart1_printf(const char *fmt,...);
void uart2_printf(const char *fmt,...);
void uart3_printf(const char *fmt,...);

#endif /* __UART_H */
