HAL_LPUART.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. /*
  2. ******************************************************************************
  3. * @file HAL_LPUART.h
  4. * @version V1.0.0
  5. * @date 2020
  6. * @brief Header file of CAN HAL module.
  7. ******************************************************************************
  8. */
  9. #ifndef __HAL_LPUART_H__
  10. #define __HAL_LPUART_H__
  11. #include "ACM32Fxx_HAL.h"
  12. #define IS_LPUART_INSTANCE(INSTANCE) ((INSTANCE) == LPUART)
  13. #define LPUART_PEN_INDEX 0
  14. #define LPUART_SPS_INDEX 1
  15. #define LPUART_EPS_INDEX 2
  16. #define LPUART_IE_RX_INDEX 0 //has wakeup function
  17. #define LPUART_IE_TX_FINISH_INDEX 1
  18. #define LPUART_IE_TX_EMPTY_INDEX 2
  19. #define LPUART_SR_RX_INDEX 0
  20. #define LPUART_SR_TX_FINISH_INDEX 1
  21. #define LPUART_SR_TX_EMPTY_INDEX 2
  22. #define LPUART_SR_RX_FULL_INDEX 6
  23. #define LPUART_SR_MATCH_INDEX 8 //has wakeup function
  24. #define LPUART_SR_START_INDEX 9 //has wakeup function
  25. #define LPUART_SR_BITS_ALL 0x1FFU
  26. #define LPUART_WAKEUP_RX_BIT BIT0
  27. #define LPUART_WAKEUP_MATCH_BIT BIT8
  28. #define LPUART_WAKEUP_START_BIT BIT9
  29. #define LPUART_CR_RXE_INDEX 0
  30. #define LPUART_CR_TXE_INDEX 1
  31. #define LPUART_CR_DMA_EN_INDEX 2
  32. /** @defgroup GPIO Private Macros
  33. * @{
  34. */
  35. typedef enum
  36. {
  37. LPUART_RXWKS_START = 0x00,
  38. LPUART_RXWKS_OneByte = 0x01,
  39. LPUART_RXWKS_DataCompare = 0x02,
  40. LPUART_RXWKS_NoWake = 0x03,
  41. } LPUART_RXWKS;
  42. typedef enum
  43. {
  44. LPUART_WKCK_Check = 0x00,
  45. LPUART_WKCK_NoCheck = 0x01,
  46. } LPUART_WKCK ;
  47. /**
  48. * @}
  49. */
  50. /*
  51. * @brief LPUART DATABITS definition
  52. */
  53. typedef enum
  54. {
  55. LPUART_DATABITS_8 = 0x00,
  56. LPUART_DATABITS_7 = 0x01,
  57. } LPUART_DATABITS;
  58. /*
  59. * @brief LPUART STOPBITS definition
  60. */
  61. typedef enum
  62. {
  63. LPUART_STOPBITS_ONE = 0x00U,
  64. LPUART_STOPBITS_TWO = 0x01U,
  65. }LPUART_STOPBITS;
  66. /*
  67. * @brief LPUART CLOCK_SOURCE definition
  68. */
  69. typedef enum
  70. {
  71. LPUART_CLOCK_SOURCE_RC32K = 0x00U,
  72. LPUART_CLOCK_SOURCE_XTAL = 0x01U,
  73. LPUART_CLOCK_SOURCE_PLL_DIV = 0x02U,
  74. }LPUART_CLOCK_SOURCE;
  75. /*
  76. * @brief LPUART PARITY definition
  77. */
  78. typedef enum
  79. {
  80. LPUART_PARITY_NONE = 0x00U,
  81. LPUART_PARITY_SELECT_ODD = 0x01U,
  82. LPUART_PARITY_SELECT_EVEN = 0x02U,
  83. LPUART_PARITY_SELECT_ONE = 0x03U,
  84. LPUART_PARITY_SELECT_ZERO = 0x04U,
  85. }LPUART_PARITY_SELECT;
  86. /**
  87. * @brief LPUART Config structure definition
  88. */
  89. typedef struct
  90. {
  91. uint8_t WordLength; // LPUART_DATABITS
  92. uint8_t StopBits; // LPUART_STOPBITS
  93. uint8_t Parity; // LPUART_PARITY_SELECT
  94. uint8_t ClockSrc; // LPUART_CLOCK_SOURCE
  95. uint32_t BaudRate;
  96. }LPUART_ConfigParam;
  97. /**
  98. * @brief LPUART Config structure definition
  99. */
  100. typedef struct
  101. {
  102. uint8_t Wakeup_Source; // Wakeup_Source
  103. uint8_t Wakeup_Check; // Wakeup_Check
  104. uint8_t Wakeup_Addr; // Wakeup_Addr
  105. }LPUART_StopWakeupDef;
  106. /**
  107. * @brief LPUART init structure definition
  108. */
  109. typedef struct
  110. {
  111. LPUART_TypeDef *Instance;
  112. LPUART_ConfigParam ConfigParam;
  113. LPUART_StopWakeupDef StopWakeup;
  114. volatile uint8_t *rx_buffer;
  115. volatile uint16_t rx_buffer_size;
  116. volatile uint16_t rx_write_index;
  117. volatile uint16_t rx_read_index;
  118. volatile uint16_t tx_busy;
  119. DMA_HandleTypeDef *dma_rx_handler;
  120. DMA_HandleTypeDef *dma_tx_handler;
  121. }LPUART_HandleTypeDef;
  122. /* HAL_LPUART_Init */
  123. HAL_StatusTypeDef HAL_LPUART_Init(LPUART_HandleTypeDef *hlpuart);
  124. HAL_StatusTypeDef HAL_LPUART_DeInit(LPUART_HandleTypeDef *hlpuart);
  125. void HAL_LPUART_MSPInit(LPUART_HandleTypeDef *hlpuart);
  126. void HAL_LPUART_MspDeInit(LPUART_HandleTypeDef *hlpuart);
  127. /* HAL_LPUART_Send_Bytes */
  128. void HAL_LPUART_Send_Bytes(LPUART_HandleTypeDef *hlpuart, uint8_t *buff, uint32_t length);
  129. /* HAL_LPUART_IRQHander */
  130. void HAL_LPUART_IRQHander(LPUART_HandleTypeDef *hlpuart);
  131. /* HAL_LPUART_Receive_Bytes_Timeout */
  132. uint32_t HAL_LPUART_Receive_Bytes_Timeout(LPUART_HandleTypeDef *hlpuart, uint8_t * rxbuff, uint32_t length, uint32_t ms);
  133. /* HAL_LPUART_Receive_Bytes */
  134. uint32_t HAL_LPUART_Receive_Bytes(LPUART_HandleTypeDef *hlpuart, uint8_t * rxbuff, uint32_t length);
  135. /* HAL_LPUART_DMA_Send_Bytes */
  136. void HAL_LPUART_DMA_Send_Bytes(LPUART_HandleTypeDef *hlpuart, uint8_t *buff, uint32_t length);
  137. /* HAL_LPUART_Clear_Wakeup_Flags */
  138. void HAL_LPUART_Clear_Wakeup_Flags(LPUART_HandleTypeDef *hlpuart, uint32_t Wakeup_Bits);
  139. #endif