#include "bsp.h"
#include "main.h"

bsp_t bsp;
uart_t uart1;


void uart_clean(uart_t *uart){
  uart->rx_size = 0;
  memset(uart->rx_buffer, 0, sizeof(uart->rx_buffer));
}

/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
int fputc(int ch, FILE *f)
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
 
  return ch;
}

uint8_t myprintf(UART_HandleTypeDef *huart,const char *format, ...)
{

  uint8_t buf[512]; //定义临时数组，根据实际发送大小微调

  va_list args;

  va_start(args, format);

  uint16_t len = vsnprintf((char *)buf, sizeof(buf), (char *)format, args);

  va_end(args);

  return HAL_UART_Transmit(huart,buf,len,0xFFFF); //串口打印函数，可以更换为中断发送或者DMA发送

}

/**
  * @brief 重定向c库函数getchar,scanf到USARTx
  * @retval None
  */
int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
  return ch;
}
