driver_uart.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * @File name : driver_uart.h
  3. * @Author : Bluetrum IOT Team
  4. * @Date : 2023-02-14
  5. * @Description : This file contains all the functions prototypes for the UART library.
  6. *
  7. * Copyright (c) by Bluetrum, All Rights Reserved.
  8. */
  9. #ifndef _DRIVER_UART_H
  10. #define _DRIVER_UART_H
  11. #include "driver_com.h"
  12. /**
  13. * @brief UART IT Flag Definition
  14. */
  15. typedef enum {
  16. UART_IT_TX = 0x01,
  17. UART_IT_RX = 0x02,
  18. UART_IT_ERR = 0x04,
  19. UART_IT_KEY = 0x08,
  20. UART_IT_RSTKEY = 0x10,
  21. } UART_IT_TYPEDEF;
  22. /**
  23. * @brief Rx Enable enumeration
  24. */
  25. typedef enum {
  26. UART_SEND_MODE = 0x00000000,
  27. UART_SEND_RECV_MODE = 0x00000080,
  28. } UART_MODE_TYPEDEF;
  29. /**
  30. * @brief One-line Mode Enumeration
  31. */
  32. typedef enum {
  33. UART_SEPARATE = 0x00000000,
  34. UART_ONE_LINE = 0x00000040,
  35. } UART_ONELINE_TYPEDEF;
  36. /**
  37. * @brief Clock select Enumeration
  38. */
  39. typedef enum {
  40. UART_SYSTEM_CLOCK = 0x00000000,
  41. UART_INC_CLOCK = 0x00000020,
  42. } UART_CLOCK_TYPEDEF;
  43. /**
  44. * @brief Stop Bit Select Enumeration
  45. */
  46. typedef enum {
  47. UART_STOP_BIT_1BIT = 0x00000000,
  48. UART_STOP_BIT_2BIT = 0x00000010,
  49. } UART_STOP_BIT_TYPEDEF;
  50. /**
  51. * @brief Word Length Enumeration
  52. */
  53. typedef enum {
  54. UART_WORD_LENGTH_8b = 0x00000000,
  55. UART_WORD_LENGTH_9b = 0x00000002,
  56. } UART_WORD_LENGTH;
  57. /**
  58. * @brief Baud Fix Enumeration, only UDET Can Use.
  59. */
  60. typedef enum {
  61. UART_BAUD_AUTO = 0x00000000,
  62. UART_BAUD_FIX = 0x00000020,
  63. } UART_BAUD_FIX_TYPEDEF;
  64. /**
  65. * @brief UART Init Structure
  66. */
  67. typedef struct {
  68. uint32_t baud;
  69. UART_MODE_TYPEDEF mode;
  70. UART_ONELINE_TYPEDEF one_line_enable;
  71. UART_CLOCK_TYPEDEF clock_source;
  72. UART_STOP_BIT_TYPEDEF stop_bits;
  73. UART_WORD_LENGTH word_len;
  74. /* Only UDET */
  75. UART_BAUD_FIX_TYPEDEF baud_fix;
  76. } uart_init_typedef;
  77. /************************* Function used to configure UART *************************/
  78. void uart_init(uart_typedef *uartx, uart_init_typedef *uart_init_struct);
  79. void uart_deinit(uart_typedef *uartx);
  80. void uart_cmd(uart_typedef *uartx, FUNCTIONAL_STATE state);
  81. void uart_send_data(uart_typedef *uartx, uint16_t data);
  82. uint16_t uart_receive_data(uart_typedef *uartx);
  83. void uart_pic_config(uart_typedef *uartx, isr_t isr, int pr, UART_IT_TYPEDEF interrupt_type, FUNCTIONAL_STATE state);
  84. FLAG_STATE uart_get_flag(uart_typedef *uartx, UART_IT_TYPEDEF interrupt_type);
  85. void uart_clear_flag(uart_typedef *uartx, UART_IT_TYPEDEF interrupt_type);
  86. void uart_baud_config(uart_typedef *uartx, uint32_t baud);
  87. #endif // _DRIVER_UART_H