serial.c 576 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "hal/uart2.h"
  2. #include "libs/circle_buffer.h"
  3. #include "serial.h"
  4. static c_buffer_t c_buff;
  5. static u8 _tx_buf[512];
  6. static u8 _rx_buf[256];
  7. void serial_init(void){
  8. UART2_Init();
  9. circle_buffer_init(&c_buff , _tx_buf, sizeof(_tx_buf));
  10. }
  11. void serial_write(u8 *data, int len){
  12. circle_put_data(&c_buff, data, len);
  13. UART2_EnableTx();
  14. }
  15. bool uart_tx_finished(void) {
  16. u8 data;
  17. if (circle_get_one_data(&c_buff, &data) <= 0){
  18. return true;
  19. }
  20. UART2_TxData(data);
  21. return false;
  22. }
  23. int fputc(int c, FILE *fp){
  24. u8 data = c;
  25. serial_write(&data, 1);
  26. return 1;
  27. }