log.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * log.c
  3. *
  4. * Created on: Nov 7, 2022
  5. * Author: tangm
  6. */
  7. #include "log.h"
  8. #include <stdarg.h>
  9. #include <stdio.h>
  10. #include "usart.h"
  11. ///重定向c库函数printf到串口,重定向后可使用printf函数
  12. int fputc(int ch, FILE *f)
  13. {
  14. /* 发送一个字节数据到串口 */
  15. USART_SendData(USART_232, (uint8_t) ch);
  16. /* 等待发送完毕 */
  17. while (USART_GetFlagStatus(USART_232, USART_FLAG_TXE) == RESET);
  18. return (ch);
  19. }
  20. ///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
  21. int fgetc(FILE *f)
  22. {
  23. /* 等待串口输入数据 */
  24. while (USART_GetFlagStatus(USART_232, USART_FLAG_RXNE) == RESET);
  25. return (int)USART_ReceiveData(USART_232);
  26. }
  27. void LogPrint(logLevel_t logLevel, const char *func, const int line, char * fmt, ...)
  28. {
  29. va_list args;
  30. va_start(args, fmt);
  31. char buf[LOG_LEN_MAX];
  32. vsnprintf(buf, sizeof(buf), fmt, args);
  33. va_end(args);
  34. switch (logLevel)
  35. {
  36. #ifdef _LOG_INFO
  37. case LOG_INFO:
  38. printf("LOG[%-5s][%-20s:%4d] %s\r\n", "INFO", func, line, buf);
  39. break;
  40. #endif
  41. #ifdef _LOG_DEBUG
  42. case LOG_DEBUG:
  43. printf("LOG[%-5s][%-20s:%4d] %s\r\n", "DEBUG", func, line, buf);
  44. break;
  45. #endif
  46. #ifdef _LOG_WARN
  47. case LOG_WARN:
  48. printf("LOG[%-5s][%-20s:%4d] %s\r\n", "WARN", func, line, buf);
  49. break;
  50. #endif
  51. case LOG_ERROR:
  52. printf("LOG[%-5s][%-20s:%4d] %s\r\n", "ERROR", func, line, buf);
  53. break;
  54. default:
  55. break;
  56. }
  57. }