fm33lc0xx_fl_lpuart.h 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_lpuart.h
  4. * @author FMSH Application Team
  5. * @brief Head file of LPUART FL Module
  6. *******************************************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) [2021] [Fudan Microelectronics]
  10. * THIS SOFTWARE is licensed under Mulan PSL v2.
  11. * You can use this software according to the terms and conditions of the Mulan PSL v2.
  12. * You may obtain a copy of Mulan PSL v2 at:
  13. * http://license.coscl.org.cn/MulanPSL2
  14. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
  15. * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
  16. * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  17. * See the Mulan PSL v2 for more details.
  18. *
  19. *******************************************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion---------------------------------------------------------------*/
  22. #ifndef __FM33LC0XX_FL_LPUART_H
  23. #define __FM33LC0XX_FL_LPUART_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes -------------------------------------------------------------------------------------------*/
  28. #include "fm33lc0xx_fl_def.h"
  29. /** @addtogroup FM33LC0XX_FL_Driver
  30. * @{
  31. */
  32. /** @defgroup LPUART LPUART
  33. * @brief LPUART FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup LPUART_FL_ES_INIT LPUART Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief LPUART Init Sturcture definition
  42. */
  43. typedef struct
  44. {
  45. /** 时钟源选择 */
  46. uint32_t clockSrc;
  47. /** 通讯波特率*/
  48. uint32_t baudRate;
  49. /** 数据位宽*/
  50. uint32_t dataWidth;
  51. /** 停止位 */
  52. uint32_t stopBits;
  53. /** 奇偶校验 */
  54. uint32_t parity;
  55. /** 传输方向 */
  56. uint32_t transferDirection;
  57. } FL_LPUART_InitTypeDef;
  58. /**
  59. * @}
  60. */
  61. /* Exported constants ---------------------------------------------------------------------------------*/
  62. /** @defgroup LPUART_FL_Exported_Constants LPUART Exported Constants
  63. * @{
  64. */
  65. #define LPUART_CSR_BUSY_Pos (24U)
  66. #define LPUART_CSR_BUSY_Msk (0x1U << LPUART_CSR_BUSY_Pos)
  67. #define LPUART_CSR_BUSY LPUART_CSR_BUSY_Msk
  68. #define LPUART_CSR_WKBYTE_CFG_Pos (19U)
  69. #define LPUART_CSR_WKBYTE_CFG_Msk (0x1U << LPUART_CSR_WKBYTE_CFG_Pos)
  70. #define LPUART_CSR_WKBYTE_CFG LPUART_CSR_WKBYTE_CFG_Msk
  71. #define LPUART_CSR_RXEV_Pos (16U)
  72. #define LPUART_CSR_RXEV_Msk (0x3U << LPUART_CSR_RXEV_Pos)
  73. #define LPUART_CSR_RXEV LPUART_CSR_RXEV_Msk
  74. #define LPUART_CSR_IOSWAP_Pos (11U)
  75. #define LPUART_CSR_IOSWAP_Msk (0x1U << LPUART_CSR_IOSWAP_Pos)
  76. #define LPUART_CSR_IOSWAP LPUART_CSR_IOSWAP_Msk
  77. #define LPUART_CSR_DMATXIFCFG_Pos (10U)
  78. #define LPUART_CSR_DMATXIFCFG_Msk (0x1U << LPUART_CSR_DMATXIFCFG_Pos)
  79. #define LPUART_CSR_DMATXIFCFG LPUART_CSR_DMATXIFCFG_Msk
  80. #define LPUART_CSR_BITORD_Pos (9U)
  81. #define LPUART_CSR_BITORD_Msk (0x1U << LPUART_CSR_BITORD_Pos)
  82. #define LPUART_CSR_BITORD LPUART_CSR_BITORD_Msk
  83. #define LPUART_CSR_STOPCFG_Pos (8U)
  84. #define LPUART_CSR_STOPCFG_Msk (0x1U << LPUART_CSR_STOPCFG_Pos)
  85. #define LPUART_CSR_STOPCFG LPUART_CSR_STOPCFG_Msk
  86. #define LPUART_CSR_PDSEL_Pos (6U)
  87. #define LPUART_CSR_PDSEL_Msk (0x3U << LPUART_CSR_PDSEL_Pos)
  88. #define LPUART_CSR_PDSEL LPUART_CSR_PDSEL_Msk
  89. #define LPUART_CSR_PARITY_Pos (4U)
  90. #define LPUART_CSR_PARITY_Msk (0x3U << LPUART_CSR_PARITY_Pos)
  91. #define LPUART_CSR_PARITY LPUART_CSR_PARITY_Msk
  92. #define LPUART_CSR_RXPOL_Pos (3U)
  93. #define LPUART_CSR_RXPOL_Msk (0x1U << LPUART_CSR_RXPOL_Pos)
  94. #define LPUART_CSR_RXPOL LPUART_CSR_RXPOL_Msk
  95. #define LPUART_CSR_TXPOL_Pos (2U)
  96. #define LPUART_CSR_TXPOL_Msk (0x1U << LPUART_CSR_TXPOL_Pos)
  97. #define LPUART_CSR_TXPOL LPUART_CSR_TXPOL_Msk
  98. #define LPUART_CSR_RXEN_Pos (1U)
  99. #define LPUART_CSR_RXEN_Msk (0x1U << LPUART_CSR_RXEN_Pos)
  100. #define LPUART_CSR_RXEN LPUART_CSR_RXEN_Msk
  101. #define LPUART_CSR_TXEN_Pos (0U)
  102. #define LPUART_CSR_TXEN_Msk (0x1U << LPUART_CSR_TXEN_Pos)
  103. #define LPUART_CSR_TXEN LPUART_CSR_TXEN_Msk
  104. #define LPUART_IER_RXEV_IE_Pos (12U)
  105. #define LPUART_IER_RXEV_IE_Msk (0x1U << LPUART_IER_RXEV_IE_Pos)
  106. #define LPUART_IER_RXEV_IE LPUART_IER_RXEV_IE_Msk
  107. #define LPUART_IER_RXERR_IE_Pos (10U)
  108. #define LPUART_IER_RXERR_IE_Msk (0x1U << LPUART_IER_RXERR_IE_Pos)
  109. #define LPUART_IER_RXERR_IE LPUART_IER_RXERR_IE_Msk
  110. #define LPUART_IER_RXBF_IE_Pos (8U)
  111. #define LPUART_IER_RXBF_IE_Msk (0x1U << LPUART_IER_RXBF_IE_Pos)
  112. #define LPUART_IER_RXBF_IE LPUART_IER_RXBF_IE_Msk
  113. #define LPUART_IER_TXBE_IE_Pos (1U)
  114. #define LPUART_IER_TXBE_IE_Msk (0x1U << LPUART_IER_TXBE_IE_Pos)
  115. #define LPUART_IER_TXBE_IE LPUART_IER_TXBE_IE_Msk
  116. #define LPUART_IER_TXSE_IE_Pos (0U)
  117. #define LPUART_IER_TXSE_IE_Msk (0x1U << LPUART_IER_TXSE_IE_Pos)
  118. #define LPUART_IER_TXSE_IE LPUART_IER_TXSE_IE_Msk
  119. #define LPUART_ISR_RXEVF_Pos (24U)
  120. #define LPUART_ISR_RXEVF_Msk (0x1U << LPUART_ISR_RXEVF_Pos)
  121. #define LPUART_ISR_RXEVF LPUART_ISR_RXEVF_Msk
  122. #define LPUART_ISR_TXOV_Pos (19U)
  123. #define LPUART_ISR_TXOV_Msk (0x1U << LPUART_ISR_TXOV_Pos)
  124. #define LPUART_ISR_TXOV LPUART_ISR_TXOV_Msk
  125. #define LPUART_ISR_PERR_Pos (18U)
  126. #define LPUART_ISR_PERR_Msk (0x1U << LPUART_ISR_PERR_Pos)
  127. #define LPUART_ISR_PERR LPUART_ISR_PERR_Msk
  128. #define LPUART_ISR_FERR_Pos (17U)
  129. #define LPUART_ISR_FERR_Msk (0x1U << LPUART_ISR_FERR_Pos)
  130. #define LPUART_ISR_FERR LPUART_ISR_FERR_Msk
  131. #define LPUART_ISR_OERR_Pos (16U)
  132. #define LPUART_ISR_OERR_Msk (0x1U << LPUART_ISR_OERR_Pos)
  133. #define LPUART_ISR_OERR LPUART_ISR_OERR_Msk
  134. #define LPUART_ISR_RXBF_Pos (8U)
  135. #define LPUART_ISR_RXBF_Msk (0x1U << LPUART_ISR_RXBF_Pos)
  136. #define LPUART_ISR_RXBF LPUART_ISR_RXBF_Msk
  137. #define LPUART_ISR_TXBE_Pos (1U)
  138. #define LPUART_ISR_TXBE_Msk (0x1U << LPUART_ISR_TXBE_Pos)
  139. #define LPUART_ISR_TXBE LPUART_ISR_TXBE_Msk
  140. #define LPUART_ISR_TXSE_Pos (0U)
  141. #define LPUART_ISR_TXSE_Msk (0x1U << LPUART_ISR_TXSE_Pos)
  142. #define LPUART_ISR_TXSE LPUART_ISR_TXSE_Msk
  143. #define LPUART_BMR_BAUD_Pos (0U)
  144. #define LPUART_BMR_BAUD_Msk (0x7U << LPUART_BMR_BAUD_Pos)
  145. #define LPUART_BMR_BAUD LPUART_BMR_BAUD_Msk
  146. #define LPUART_BMR_MCTL_Pos (16U)
  147. #define LPUART_BMR_MCTL_Msk (0xfffU << LPUART_BMR_MCTL_Pos)
  148. #define LPUART_BMR_MCTL LPUART_BMR_MCTL_Msk
  149. #define FL_LPUART_WAKEUP_NO_CHECK (0x0U << LPUART_CSR_WKBYTE_CFG_Pos)
  150. #define FL_LPUART_WAKEUP_CHECK (0x1U << LPUART_CSR_WKBYTE_CFG_Pos)
  151. #define FL_LPUART_WAKEUP_EVENT_START (0x0U << LPUART_CSR_RXEV_Pos)
  152. #define FL_LPUART_WAKEUP_EVENT_RECV_1BYTE (0x1U << LPUART_CSR_RXEV_Pos)
  153. #define FL_LPUART_WAKEUP_EVENT_RECV_MATCH (0x2U << LPUART_CSR_RXEV_Pos)
  154. #define FL_LPUART_WAKEUP_EVENT_RX_FALLING (0x3U << LPUART_CSR_RXEV_Pos)
  155. #define FL_LPUART_TXIF_MODE_ALWAYS (0x0U << LPUART_CSR_DMATXIFCFG_Pos)
  156. #define FL_LPUART_TXIF_MODE_AFTER_DMA (0x1U << LPUART_CSR_DMATXIFCFG_Pos)
  157. #define FL_LPUART_BIT_ORDER_LSB_FIRST (0x0U << LPUART_CSR_BITORD_Pos)
  158. #define FL_LPUART_BIT_ORDER_MSB_FIRST (0x1U << LPUART_CSR_BITORD_Pos)
  159. #define FL_LPUART_STOP_BIT_WIDTH_1B (0x0U << LPUART_CSR_STOPCFG_Pos)
  160. #define FL_LPUART_STOP_BIT_WIDTH_2B (0x1U << LPUART_CSR_STOPCFG_Pos)
  161. #define FL_LPUART_DATA_WIDTH_7B (0x0U << LPUART_CSR_PDSEL_Pos)
  162. #define FL_LPUART_DATA_WIDTH_8B (0x1U << LPUART_CSR_PDSEL_Pos)
  163. #define FL_LPUART_DATA_WIDTH_9B (0x2U << LPUART_CSR_PDSEL_Pos)
  164. #define FL_LPUART_DATA_WIDTH_6B (0x3U << LPUART_CSR_PDSEL_Pos)
  165. #define FL_LPUART_PARITY_NONE (0x0U << LPUART_CSR_PARITY_Pos)
  166. #define FL_LPUART_PARITY_EVEN (0x1U << LPUART_CSR_PARITY_Pos)
  167. #define FL_LPUART_PARITY_ODD (0x2U << LPUART_CSR_PARITY_Pos)
  168. #define FL_LPUART_RX_POLARITY_NORMAL (0x0U << LPUART_CSR_RXPOL_Pos)
  169. #define FL_LPUART_RX_POLARITY_INVERT (0x1U << LPUART_CSR_RXPOL_Pos)
  170. #define FL_LPUART_TX_POLARITY_NORMAL (0x0U << LPUART_CSR_TXPOL_Pos)
  171. #define FL_LPUART_TX_POLARITY_INVERT (0x1U << LPUART_CSR_TXPOL_Pos)
  172. #define FL_LPUART_BAUDRATE_9600 (0x0U << LPUART_BMR_BAUD_Pos)
  173. #define FL_LPUART_BAUDRATE_4800 (0x1U << LPUART_BMR_BAUD_Pos)
  174. #define FL_LPUART_BAUDRATE_2400 (0x2U << LPUART_BMR_BAUD_Pos)
  175. #define FL_LPUART_BAUDRATE_1200 (0x3U << LPUART_BMR_BAUD_Pos)
  176. #define FL_LPUART_BAUDRATE_600 (0x4U << LPUART_BMR_BAUD_Pos)
  177. #define FL_LPUART_BAUDRATE_300 (0x5U << LPUART_BMR_BAUD_Pos)
  178. #define FL_LPUART_DIRECTION_NONE 0x00000000U
  179. #define FL_LPUART_DIRECTION_RX LPUART_CSR_RXEN
  180. #define FL_LPUART_DIRECTION_TX LPUART_CSR_TXEN
  181. #define FL_LPUART_DIRECTION_TX_RX (LPUART_CSR_RXEN|LPUART_CSR_TXEN)
  182. /**
  183. * @}
  184. */
  185. /* Exported functions ---------------------------------------------------------------------------------*/
  186. /** @defgroup LPUART_FL_Exported_Functions LPUART Exported Functions
  187. * @{
  188. */
  189. /**
  190. * @brief Get LPUART Busy Flag
  191. * @rmtoll CSR BUSY FL_LPUART_IsActiveFlag_Busy
  192. * @param LPUARTx LPUART instance
  193. * @retval State of bit (1 or 0).
  194. */
  195. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_Busy(LPUART_Type *LPUARTx)
  196. {
  197. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_BUSY_Msk) == (LPUART_CSR_BUSY_Msk));
  198. }
  199. /**
  200. * @brief Set Data Receive Wakeup Mode
  201. * @rmtoll CSR WKBYTE_CFG FL_LPUART_SetRXWakeupMode
  202. * @param LPUARTx LPUART instance
  203. * @param mode This parameter can be one of the following values:
  204. * @arg @ref FL_LPUART_WAKEUP_NO_CHECK
  205. * @arg @ref FL_LPUART_WAKEUP_CHECK
  206. * @retval None
  207. */
  208. __STATIC_INLINE void FL_LPUART_SetRXWakeupMode(LPUART_Type *LPUARTx, uint32_t mode)
  209. {
  210. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_WKBYTE_CFG_Msk, mode);
  211. }
  212. /**
  213. * @brief Get Data Receive Wakeup Mode Setting
  214. * @rmtoll CSR WKBYTE_CFG FL_LPUART_GetRXWakeupMode
  215. * @param LPUARTx LPUART instance
  216. * @retval Returned value can be one of the following values:
  217. * @arg @ref FL_LPUART_WAKEUP_NO_CHECK
  218. * @arg @ref FL_LPUART_WAKEUP_CHECK
  219. */
  220. __STATIC_INLINE uint32_t FL_LPUART_GetRXWakeupMode(LPUART_Type *LPUARTx)
  221. {
  222. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_WKBYTE_CFG_Msk));
  223. }
  224. /**
  225. * @brief Set Receive Wakeup Event
  226. * @rmtoll CSR RXEV FL_LPUART_SetWakeup
  227. * @param LPUARTx LPUART instance
  228. * @param event This parameter can be one of the following values:
  229. * @arg @ref FL_LPUART_WAKEUP_EVENT_START
  230. * @arg @ref FL_LPUART_WAKEUP_EVENT_RECV_1BYTE
  231. * @arg @ref FL_LPUART_WAKEUP_EVENT_RECV_MATCH
  232. * @arg @ref FL_LPUART_WAKEUP_EVENT_RX_FALLING
  233. * @retval None
  234. */
  235. __STATIC_INLINE void FL_LPUART_SetWakeup(LPUART_Type *LPUARTx, uint32_t event)
  236. {
  237. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_RXEV_Msk, event);
  238. }
  239. /**
  240. * @brief Get Receive Wakeup Event Setting
  241. * @rmtoll CSR RXEV FL_LPUART_GetWakeup
  242. * @param LPUARTx LPUART instance
  243. * @retval Returned value can be one of the following values:
  244. * @arg @ref FL_LPUART_WAKEUP_EVENT_START
  245. * @arg @ref FL_LPUART_WAKEUP_EVENT_RECV_1BYTE
  246. * @arg @ref FL_LPUART_WAKEUP_EVENT_RECV_MATCH
  247. * @arg @ref FL_LPUART_WAKEUP_EVENT_RX_FALLING
  248. */
  249. __STATIC_INLINE uint32_t FL_LPUART_GetWakeup(LPUART_Type *LPUARTx)
  250. {
  251. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_RXEV_Msk));
  252. }
  253. /**
  254. * @brief Enable LPUART Pin Swap Between TX Pin and RX Pin
  255. * @rmtoll CSR IOSWAP FL_LPUART_EnablePinSwap
  256. * @param LPUARTx LPUART instance
  257. * @retval None
  258. */
  259. __STATIC_INLINE void FL_LPUART_EnablePinSwap(LPUART_Type *LPUARTx)
  260. {
  261. SET_BIT(LPUARTx->CSR, LPUART_CSR_IOSWAP_Msk);
  262. }
  263. /**
  264. * @brief Disable LPUART Pin Swap Between TX Pin and RX Pin
  265. * @rmtoll CSR IOSWAP FL_LPUART_DisablePinSwap
  266. * @param LPUARTx LPUART instance
  267. * @retval None
  268. */
  269. __STATIC_INLINE void FL_LPUART_DisablePinSwap(LPUART_Type *LPUARTx)
  270. {
  271. CLEAR_BIT(LPUARTx->CSR, LPUART_CSR_IOSWAP_Msk);
  272. }
  273. /**
  274. * @brief Get UART Pin Swap Enable Status Between UART TX Pin and RX Pin
  275. * @rmtoll CSR IOSWAP FL_LPUART_IsEnabledPinSwap
  276. * @param LPUARTx LPUART instance
  277. * @retval State of bit (1 or 0).
  278. */
  279. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledPinSwap(LPUART_Type *LPUARTx)
  280. {
  281. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_IOSWAP_Msk) == LPUART_CSR_IOSWAP_Msk);
  282. }
  283. /**
  284. * @brief Enable DMA TX Complete Interrupt
  285. * @rmtoll CSR DMATXIFCFG FL_LPUART_SetTXIFMode
  286. * @param LPUARTx LPUART instance
  287. * @param txifMode This parameter can be one of the following values:
  288. * @arg @ref FL_LPUART_TXIF_MODE_ALWAYS
  289. * @arg @ref FL_LPUART_TXIF_MODE_AFTER_DMA
  290. * @retval None
  291. */
  292. __STATIC_INLINE void FL_LPUART_SetTXIFMode(LPUART_Type *LPUARTx, uint32_t txifMode)
  293. {
  294. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_DMATXIFCFG_Msk, txifMode);
  295. }
  296. /**
  297. * @brief Disable DMA TX Complete Interrupt
  298. * @rmtoll CSR DMATXIFCFG FL_LPUART_GetTXIFMode
  299. * @param LPUARTx LPUART instance
  300. * @retval Returned value can be one of the following values:
  301. * @arg @ref FL_LPUART_TXIF_MODE_ALWAYS
  302. * @arg @ref FL_LPUART_TXIF_MODE_AFTER_DMA
  303. */
  304. __STATIC_INLINE uint32_t FL_LPUART_GetTXIFMode(LPUART_Type *LPUARTx)
  305. {
  306. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_DMATXIFCFG_Msk));
  307. }
  308. /**
  309. * @brief Set LPUART Transfer Bit Order
  310. * @rmtoll CSR BITORD FL_LPUART_SetBitOrder
  311. * @param LPUARTx LPUART instance
  312. * @param bitOrder This parameter can be one of the following values:
  313. * @arg @ref FL_LPUART_BIT_ORDER_LSB_FIRST
  314. * @arg @ref FL_LPUART_BIT_ORDER_MSB_FIRST
  315. * @retval None
  316. */
  317. __STATIC_INLINE void FL_LPUART_SetBitOrder(LPUART_Type *LPUARTx, uint32_t bitOrder)
  318. {
  319. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_BITORD_Msk, bitOrder);
  320. }
  321. /**
  322. * @brief Get LPUART Transfer Bit Order Setting
  323. * @rmtoll CSR BITORD FL_LPUART_GetBitOrder
  324. * @param LPUARTx LPUART instance
  325. * @retval Returned value can be one of the following values:
  326. * @arg @ref FL_LPUART_BIT_ORDER_LSB_FIRST
  327. * @arg @ref FL_LPUART_BIT_ORDER_MSB_FIRST
  328. */
  329. __STATIC_INLINE uint32_t FL_LPUART_GetBitOrder(LPUART_Type *LPUARTx)
  330. {
  331. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_BITORD_Msk));
  332. }
  333. /**
  334. * @brief Set LPUART Stop Bits Length
  335. * @rmtoll CSR STOPCFG FL_LPUART_SetStopBitsWidth
  336. * @param LPUARTx LPUART instance
  337. * @param stopBits This parameter can be one of the following values:
  338. * @arg @ref FL_LPUART_STOP_BIT_WIDTH_1B
  339. * @arg @ref FL_LPUART_STOP_BIT_WIDTH_2B
  340. * @retval None
  341. */
  342. __STATIC_INLINE void FL_LPUART_SetStopBitsWidth(LPUART_Type *LPUARTx, uint32_t stopBits)
  343. {
  344. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_STOPCFG_Msk, stopBits);
  345. }
  346. /**
  347. * @brief Get LPUART Stop Bits Length Setting
  348. * @rmtoll CSR STOPCFG FL_LPUART_GetStopBitsWidth
  349. * @param LPUARTx LPUART instance
  350. * @retval Returned value can be one of the following values:
  351. * @arg @ref FL_LPUART_STOP_BIT_WIDTH_1B
  352. * @arg @ref FL_LPUART_STOP_BIT_WIDTH_2B
  353. */
  354. __STATIC_INLINE uint32_t FL_LPUART_GetStopBitsWidth(LPUART_Type *LPUARTx)
  355. {
  356. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_STOPCFG_Msk));
  357. }
  358. /**
  359. * @brief Set LPUART Data Width
  360. * @rmtoll CSR PDSEL FL_LPUART_SetDataWidth
  361. * @param LPUARTx LPUART instance
  362. * @param dataWidth This parameter can be one of the following values:
  363. * @arg @ref FL_LPUART_DATA_WIDTH_7B
  364. * @arg @ref FL_LPUART_DATA_WIDTH_8B
  365. * @arg @ref FL_LPUART_DATA_WIDTH_9B
  366. * @arg @ref FL_LPUART_DATA_WIDTH_6B
  367. * @retval None
  368. */
  369. __STATIC_INLINE void FL_LPUART_SetDataWidth(LPUART_Type *LPUARTx, uint32_t dataWidth)
  370. {
  371. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_PDSEL_Msk, dataWidth);
  372. }
  373. /**
  374. * @brief Get LPUART Stop Bits Length Setting
  375. * @rmtoll CSR PDSEL FL_LPUART_GetDataWidth
  376. * @param LPUARTx LPUART instance
  377. * @retval Returned value can be one of the following values:
  378. * @arg @ref FL_LPUART_DATA_WIDTH_7B
  379. * @arg @ref FL_LPUART_DATA_WIDTH_8B
  380. * @arg @ref FL_LPUART_DATA_WIDTH_9B
  381. * @arg @ref FL_LPUART_DATA_WIDTH_6B
  382. */
  383. __STATIC_INLINE uint32_t FL_LPUART_GetDataWidth(LPUART_Type *LPUARTx)
  384. {
  385. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_PDSEL_Msk));
  386. }
  387. /**
  388. * @brief Set LPUART Parity
  389. * @rmtoll CSR PARITY FL_LPUART_SetParity
  390. * @param LPUARTx LPUART instance
  391. * @param parity This parameter can be one of the following values:
  392. * @arg @ref FL_LPUART_PARITY_NONE
  393. * @arg @ref FL_LPUART_PARITY_EVEN
  394. * @arg @ref FL_LPUART_PARITY_ODD
  395. * @retval None
  396. */
  397. __STATIC_INLINE void FL_LPUART_SetParity(LPUART_Type *LPUARTx, uint32_t parity)
  398. {
  399. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_PARITY_Msk, parity);
  400. }
  401. /**
  402. * @brief Get LPUART Parity Setting
  403. * @rmtoll CSR PARITY FL_LPUART_GetParity
  404. * @param LPUARTx LPUART instance
  405. * @retval Returned value can be one of the following values:
  406. * @arg @ref FL_LPUART_PARITY_NONE
  407. * @arg @ref FL_LPUART_PARITY_EVEN
  408. * @arg @ref FL_LPUART_PARITY_ODD
  409. */
  410. __STATIC_INLINE uint32_t FL_LPUART_GetParity(LPUART_Type *LPUARTx)
  411. {
  412. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_PARITY_Msk));
  413. }
  414. /**
  415. * @brief Set LPUART Receive Polarity
  416. * @rmtoll CSR RXPOL FL_LPUART_SetRXPolarity
  417. * @param LPUARTx LPUART instance
  418. * @param polarity This parameter can be one of the following values:
  419. * @arg @ref FL_LPUART_RX_POLARITY_NORMAL
  420. * @arg @ref FL_LPUART_RX_POLARITY_INVERT
  421. * @retval None
  422. */
  423. __STATIC_INLINE void FL_LPUART_SetRXPolarity(LPUART_Type *LPUARTx, uint32_t polarity)
  424. {
  425. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_RXPOL_Msk, polarity);
  426. }
  427. /**
  428. * @brief Get LPUART Receive Polarity Setting
  429. * @rmtoll CSR RXPOL FL_LPUART_GetRXPolarity
  430. * @param LPUARTx LPUART instance
  431. * @retval Returned value can be one of the following values:
  432. * @arg @ref FL_LPUART_RX_POLARITY_NORMAL
  433. * @arg @ref FL_LPUART_RX_POLARITY_INVERT
  434. */
  435. __STATIC_INLINE uint32_t FL_LPUART_GetRXPolarity(LPUART_Type *LPUARTx)
  436. {
  437. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_RXPOL_Msk));
  438. }
  439. /**
  440. * @brief Set LPUART Transmit Polarity
  441. * @rmtoll CSR TXPOL FL_LPUART_SetTXPolarity
  442. * @param LPUARTx LPUART instance
  443. * @param polarity This parameter can be one of the following values:
  444. * @arg @ref FL_LPUART_TX_POLARITY_NORMAL
  445. * @arg @ref FL_LPUART_TX_POLARITY_INVERT
  446. * @retval None
  447. */
  448. __STATIC_INLINE void FL_LPUART_SetTXPolarity(LPUART_Type *LPUARTx, uint32_t polarity)
  449. {
  450. MODIFY_REG(LPUARTx->CSR, LPUART_CSR_TXPOL_Msk, polarity);
  451. }
  452. /**
  453. * @brief Get LPUART Transmit Polarity Setting
  454. * @rmtoll CSR TXPOL FL_LPUART_GetTXPolarity
  455. * @param LPUARTx LPUART instance
  456. * @retval Returned value can be one of the following values:
  457. * @arg @ref FL_LPUART_TX_POLARITY_NORMAL
  458. * @arg @ref FL_LPUART_TX_POLARITY_INVERT
  459. */
  460. __STATIC_INLINE uint32_t FL_LPUART_GetTXPolarity(LPUART_Type *LPUARTx)
  461. {
  462. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_TXPOL_Msk));
  463. }
  464. /**
  465. * @brief Enable LPUART Receive
  466. * @rmtoll CSR RXEN FL_LPUART_EnableRX
  467. * @param LPUARTx LPUART instance
  468. * @retval None
  469. */
  470. __STATIC_INLINE void FL_LPUART_EnableRX(LPUART_Type *LPUARTx)
  471. {
  472. SET_BIT(LPUARTx->CSR, LPUART_CSR_RXEN_Msk);
  473. }
  474. /**
  475. * @brief Get LPUART Receive Enable Status
  476. * @rmtoll CSR RXEN FL_LPUART_IsEnabledRX
  477. * @param LPUARTx LPUART instance
  478. * @retval State of bit (1 or 0).
  479. */
  480. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledRX(LPUART_Type *LPUARTx)
  481. {
  482. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_RXEN_Msk) == LPUART_CSR_RXEN_Msk);
  483. }
  484. /**
  485. * @brief Disable LPUART Receive
  486. * @rmtoll CSR RXEN FL_LPUART_DisableRX
  487. * @param LPUARTx LPUART instance
  488. * @retval None
  489. */
  490. __STATIC_INLINE void FL_LPUART_DisableRX(LPUART_Type *LPUARTx)
  491. {
  492. CLEAR_BIT(LPUARTx->CSR, LPUART_CSR_RXEN_Msk);
  493. }
  494. /**
  495. * @brief Enable LPUART Receive
  496. * @rmtoll CSR TXEN FL_LPUART_EnableTX
  497. * @param LPUARTx LPUART instance
  498. * @retval None
  499. */
  500. __STATIC_INLINE void FL_LPUART_EnableTX(LPUART_Type *LPUARTx)
  501. {
  502. SET_BIT(LPUARTx->CSR, LPUART_CSR_TXEN_Msk);
  503. }
  504. /**
  505. * @brief Get LPUART Receive Enable Status
  506. * @rmtoll CSR TXEN FL_LPUART_IsEnabledTX
  507. * @param LPUARTx LPUART instance
  508. * @retval State of bit (1 or 0).
  509. */
  510. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledTX(LPUART_Type *LPUARTx)
  511. {
  512. return (uint32_t)(READ_BIT(LPUARTx->CSR, LPUART_CSR_TXEN_Msk) == LPUART_CSR_TXEN_Msk);
  513. }
  514. /**
  515. * @brief Disable LPUART Receive
  516. * @rmtoll CSR TXEN FL_LPUART_DisableTX
  517. * @param LPUARTx LPUART instance
  518. * @retval None
  519. */
  520. __STATIC_INLINE void FL_LPUART_DisableTX(LPUART_Type *LPUARTx)
  521. {
  522. CLEAR_BIT(LPUARTx->CSR, LPUART_CSR_TXEN_Msk);
  523. }
  524. /**
  525. * @brief Enable LPUART Receive Event Interrupt
  526. * @rmtoll IER RXEV_IE FL_LPUART_EnableIT_RXWakeup
  527. * @param LPUARTx LPUART instance
  528. * @retval None
  529. */
  530. __STATIC_INLINE void FL_LPUART_EnableIT_RXWakeup(LPUART_Type *LPUARTx)
  531. {
  532. SET_BIT(LPUARTx->IER, LPUART_IER_RXEV_IE_Msk);
  533. }
  534. /**
  535. * @brief Get LPUART Receive Event Interrupt Enable Status
  536. * @rmtoll IER RXEV_IE FL_LPUART_IsEnabledIT_RXWakeup
  537. * @param LPUARTx LPUART instance
  538. * @retval State of bit (1 or 0).
  539. */
  540. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledIT_RXWakeup(LPUART_Type *LPUARTx)
  541. {
  542. return (uint32_t)(READ_BIT(LPUARTx->IER, LPUART_IER_RXEV_IE_Msk) == LPUART_IER_RXEV_IE_Msk);
  543. }
  544. /**
  545. * @brief Disable LPUART Receive Event Interrupt
  546. * @rmtoll IER RXEV_IE FL_LPUART_DisableIT_RXWakeup
  547. * @param LPUARTx LPUART instance
  548. * @retval None
  549. */
  550. __STATIC_INLINE void FL_LPUART_DisableIT_RXWakeup(LPUART_Type *LPUARTx)
  551. {
  552. CLEAR_BIT(LPUARTx->IER, LPUART_IER_RXEV_IE_Msk);
  553. }
  554. /**
  555. * @brief Enable LPUART Receive Error Interrupt
  556. * @rmtoll IER RXERR_IE FL_LPUART_EnableIT_RXError
  557. * @param LPUARTx LPUART instance
  558. * @retval None
  559. */
  560. __STATIC_INLINE void FL_LPUART_EnableIT_RXError(LPUART_Type *LPUARTx)
  561. {
  562. SET_BIT(LPUARTx->IER, LPUART_IER_RXERR_IE_Msk);
  563. }
  564. /**
  565. * @brief Get LPUART Receive Error Interrupt Enable Status
  566. * @rmtoll IER RXERR_IE FL_LPUART_IsEnabledIT_RXError
  567. * @param LPUARTx LPUART instance
  568. * @retval State of bit (1 or 0).
  569. */
  570. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledIT_RXError(LPUART_Type *LPUARTx)
  571. {
  572. return (uint32_t)(READ_BIT(LPUARTx->IER, LPUART_IER_RXERR_IE_Msk) == LPUART_IER_RXERR_IE_Msk);
  573. }
  574. /**
  575. * @brief Disable LPUART Receive Error Interrupt
  576. * @rmtoll IER RXERR_IE FL_LPUART_DisableIT_RXError
  577. * @param LPUARTx LPUART instance
  578. * @retval None
  579. */
  580. __STATIC_INLINE void FL_LPUART_DisableIT_RXError(LPUART_Type *LPUARTx)
  581. {
  582. CLEAR_BIT(LPUARTx->IER, LPUART_IER_RXERR_IE_Msk);
  583. }
  584. /**
  585. * @brief Enable LPUART Receive Buffer Full Interrupt
  586. * @rmtoll IER RXBF_IE FL_LPUART_EnableIT_RXBuffFull
  587. * @param LPUARTx LPUART instance
  588. * @retval None
  589. */
  590. __STATIC_INLINE void FL_LPUART_EnableIT_RXBuffFull(LPUART_Type *LPUARTx)
  591. {
  592. SET_BIT(LPUARTx->IER, LPUART_IER_RXBF_IE_Msk);
  593. }
  594. /**
  595. * @brief Get LPUART Receive Buffer Full Interrupt Enable Status
  596. * @rmtoll IER RXBF_IE FL_LPUART_IsEnabledIT_RXBuffFull
  597. * @param LPUARTx LPUART instance
  598. * @retval State of bit (1 or 0).
  599. */
  600. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledIT_RXBuffFull(LPUART_Type *LPUARTx)
  601. {
  602. return (uint32_t)(READ_BIT(LPUARTx->IER, LPUART_IER_RXBF_IE_Msk) == LPUART_IER_RXBF_IE_Msk);
  603. }
  604. /**
  605. * @brief Disable LPUART Receive Buffer Full Interrupt
  606. * @rmtoll IER RXBF_IE FL_LPUART_DisableIT_RXBufFull
  607. * @param LPUARTx LPUART instance
  608. * @retval None
  609. */
  610. __STATIC_INLINE void FL_LPUART_DisableIT_RXBufFull(LPUART_Type *LPUARTx)
  611. {
  612. CLEAR_BIT(LPUARTx->IER, LPUART_IER_RXBF_IE_Msk);
  613. }
  614. /**
  615. * @brief Enable LPUART Transmit Buffer Empty Interrupt
  616. * @rmtoll IER TXBE_IE FL_LPUART_EnableIT_TXBuffEmpty
  617. * @param LPUARTx LPUART instance
  618. * @retval None
  619. */
  620. __STATIC_INLINE void FL_LPUART_EnableIT_TXBuffEmpty(LPUART_Type *LPUARTx)
  621. {
  622. SET_BIT(LPUARTx->IER, LPUART_IER_TXBE_IE_Msk);
  623. }
  624. /**
  625. * @brief Get LPUART Transmit Buffer Empty Interrupt Enable Status
  626. * @rmtoll IER TXBE_IE FL_LPUART_IsEnabledIT_TXBuffEmpty
  627. * @param LPUARTx LPUART instance
  628. * @retval State of bit (1 or 0).
  629. */
  630. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledIT_TXBuffEmpty(LPUART_Type *LPUARTx)
  631. {
  632. return (uint32_t)(READ_BIT(LPUARTx->IER, LPUART_IER_TXBE_IE_Msk) == LPUART_IER_TXBE_IE_Msk);
  633. }
  634. /**
  635. * @brief Disable LPUART Transmit Buffer Empty Interrupt
  636. * @rmtoll IER TXBE_IE FL_LPUART_DisableIT_TXBuffEmpty
  637. * @param LPUARTx LPUART instance
  638. * @retval None
  639. */
  640. __STATIC_INLINE void FL_LPUART_DisableIT_TXBuffEmpty(LPUART_Type *LPUARTx)
  641. {
  642. CLEAR_BIT(LPUARTx->IER, LPUART_IER_TXBE_IE_Msk);
  643. }
  644. /**
  645. * @brief Enable LPUART Transmit Shift Register Interrupt
  646. * @rmtoll IER TXSE_IE FL_LPUART_EnableIT_TXShiftBuffEmpty
  647. * @param LPUARTx LPUART instance
  648. * @retval None
  649. */
  650. __STATIC_INLINE void FL_LPUART_EnableIT_TXShiftBuffEmpty(LPUART_Type *LPUARTx)
  651. {
  652. SET_BIT(LPUARTx->IER, LPUART_IER_TXSE_IE_Msk);
  653. }
  654. /**
  655. * @brief Get LPUART Transmit Shift Register Interrupt Enable Status
  656. * @rmtoll IER TXSE_IE FL_LPUART_IsEnabledIT_TXShiftBuffEmpty
  657. * @param LPUARTx LPUART instance
  658. * @retval State of bit (1 or 0).
  659. */
  660. __STATIC_INLINE uint32_t FL_LPUART_IsEnabledIT_TXShiftBuffEmpty(LPUART_Type *LPUARTx)
  661. {
  662. return (uint32_t)(READ_BIT(LPUARTx->IER, LPUART_IER_TXSE_IE_Msk) == LPUART_IER_TXSE_IE_Msk);
  663. }
  664. /**
  665. * @brief Disable LPUART Transmit Shift Register Interrupt
  666. * @rmtoll IER TXSE_IE FL_LPUART_DisableIT_TXShiftBuffEmpty
  667. * @param LPUARTx LPUART instance
  668. * @retval None
  669. */
  670. __STATIC_INLINE void FL_LPUART_DisableIT_TXShiftBuffEmpty(LPUART_Type *LPUARTx)
  671. {
  672. CLEAR_BIT(LPUARTx->IER, LPUART_IER_TXSE_IE_Msk);
  673. }
  674. /**
  675. * @brief Get LPUART Receive Event Interrupt Flag
  676. * @rmtoll ISR RXEVF FL_LPUART_IsActiveFlag_RXWakeup
  677. * @param LPUARTx LPUART instance
  678. * @retval State of bit (1 or 0).
  679. */
  680. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_RXWakeup(LPUART_Type *LPUARTx)
  681. {
  682. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_RXEVF_Msk) == (LPUART_ISR_RXEVF_Msk));
  683. }
  684. /**
  685. * @brief Clear LPUART Receive Event Interrupt Flag
  686. * @rmtoll ISR RXEVF FL_LPUART_ClearFlag_RXWakeup
  687. * @param LPUARTx LPUART instance
  688. * @retval None
  689. */
  690. __STATIC_INLINE void FL_LPUART_ClearFlag_RXWakeup(LPUART_Type *LPUARTx)
  691. {
  692. WRITE_REG(LPUARTx->ISR, LPUART_ISR_RXEVF_Msk);
  693. }
  694. /**
  695. * @brief Get LPUART Transmit Overflow Error Flag
  696. * @rmtoll ISR TXOV FL_LPUART_IsActiveFlag_TXBuffOverflow
  697. * @param LPUARTx LPUART instance
  698. * @retval State of bit (1 or 0).
  699. */
  700. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_TXBuffOverflow(LPUART_Type *LPUARTx)
  701. {
  702. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_TXOV_Msk) == (LPUART_ISR_TXOV_Msk));
  703. }
  704. /**
  705. * @brief Clear LPUART Transmit Overflow Error Flag
  706. * @rmtoll ISR TXOV FL_LPUART_ClearFlag_TXBuffOverflow
  707. * @param LPUARTx LPUART instance
  708. * @retval None
  709. */
  710. __STATIC_INLINE void FL_LPUART_ClearFlag_TXBuffOverflow(LPUART_Type *LPUARTx)
  711. {
  712. WRITE_REG(LPUARTx->ISR, LPUART_ISR_TXOV_Msk);
  713. }
  714. /**
  715. * @brief Get LPUART Parity Error Flag
  716. * @rmtoll ISR PERR FL_LPUART_IsActiveFlag_ParityError
  717. * @param LPUARTx LPUART instance
  718. * @retval State of bit (1 or 0).
  719. */
  720. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_ParityError(LPUART_Type *LPUARTx)
  721. {
  722. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_PERR_Msk) == (LPUART_ISR_PERR_Msk));
  723. }
  724. /**
  725. * @brief Clear LPUART Parity Error Flag
  726. * @rmtoll ISR PERR FL_LPUART_ClearFlag_ParityError
  727. * @param LPUARTx LPUART instance
  728. * @retval None
  729. */
  730. __STATIC_INLINE void FL_LPUART_ClearFlag_ParityError(LPUART_Type *LPUARTx)
  731. {
  732. WRITE_REG(LPUARTx->ISR, LPUART_ISR_PERR_Msk);
  733. }
  734. /**
  735. * @brief Get LPUART Frame Error Flag
  736. * @rmtoll ISR FERR FL_LPUART_IsActiveFlag_FrameError
  737. * @param LPUARTx LPUART instance
  738. * @retval State of bit (1 or 0).
  739. */
  740. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_FrameError(LPUART_Type *LPUARTx)
  741. {
  742. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_FERR_Msk) == (LPUART_ISR_FERR_Msk));
  743. }
  744. /**
  745. * @brief Clear LPUART Frame Error Flag
  746. * @rmtoll ISR FERR FL_LPUART_ClearFlag_FrameError
  747. * @param LPUARTx LPUART instance
  748. * @retval None
  749. */
  750. __STATIC_INLINE void FL_LPUART_ClearFlag_FrameError(LPUART_Type *LPUARTx)
  751. {
  752. WRITE_REG(LPUARTx->ISR, LPUART_ISR_FERR_Msk);
  753. }
  754. /**
  755. * @brief Get LPUART Receive Buffer Overflow Error Flag
  756. * @rmtoll ISR OERR FL_LPUART_IsActiveFlag_RXBuffOverflow
  757. * @param LPUARTx LPUART instance
  758. * @retval State of bit (1 or 0).
  759. */
  760. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_RXBuffOverflow(LPUART_Type *LPUARTx)
  761. {
  762. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_OERR_Msk) == (LPUART_ISR_OERR_Msk));
  763. }
  764. /**
  765. * @brief Clear LPUART Receive Buffer Overflow Error Flag
  766. * @rmtoll ISR OERR FL_LPUART_ClearFlag_RXBuffOverflow
  767. * @param LPUARTx LPUART instance
  768. * @retval None
  769. */
  770. __STATIC_INLINE void FL_LPUART_ClearFlag_RXBuffOverflow(LPUART_Type *LPUARTx)
  771. {
  772. WRITE_REG(LPUARTx->ISR, LPUART_ISR_OERR_Msk);
  773. }
  774. /**
  775. * @brief Get LPUART Receive Buffer Full Flag
  776. * @rmtoll ISR RXBF FL_LPUART_IsActiveFlag_RXBuffFull
  777. * @param LPUARTx LPUART instance
  778. * @retval State of bit (1 or 0).
  779. */
  780. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_RXBuffFull(LPUART_Type *LPUARTx)
  781. {
  782. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_RXBF_Msk) == (LPUART_ISR_RXBF_Msk));
  783. }
  784. /**
  785. * @brief Clear LPUART Receive Buffer Full Flag
  786. * @rmtoll ISR RXBF FL_LPUART_ClearFlag_RXBuffFull
  787. * @param LPUARTx LPUART instance
  788. * @retval None
  789. */
  790. __STATIC_INLINE void FL_LPUART_ClearFlag_RXBuffFull(LPUART_Type *LPUARTx)
  791. {
  792. WRITE_REG(LPUARTx->ISR, LPUART_ISR_RXBF_Msk);
  793. }
  794. /**
  795. * @brief Get LPUART Transmit Buffer Empty Flag
  796. * @rmtoll ISR TXBE FL_LPUART_IsActiveFlag_TXBuffEmpty
  797. * @param LPUARTx LPUART instance
  798. * @retval State of bit (1 or 0).
  799. */
  800. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_TXBuffEmpty(LPUART_Type *LPUARTx)
  801. {
  802. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_TXBE_Msk) == (LPUART_ISR_TXBE_Msk));
  803. }
  804. /**
  805. * @brief Clear LPUART Transmit Buffer Empty Flag
  806. * @rmtoll ISR TXBE FL_LPUART_ClearFlag_TXBuffEmpty
  807. * @param LPUARTx LPUART instance
  808. * @retval None
  809. */
  810. __STATIC_INLINE void FL_LPUART_ClearFlag_TXBuffEmpty(LPUART_Type *LPUARTx)
  811. {
  812. WRITE_REG(LPUARTx->ISR, LPUART_ISR_TXBE_Msk);
  813. }
  814. /**
  815. * @brief Get LPUART Transmit Shift register Empty Flag
  816. * @rmtoll ISR TXSE FL_LPUART_IsActiveFlag_TXShiftBuffEmpty
  817. * @param LPUARTx LPUART instance
  818. * @retval State of bit (1 or 0).
  819. */
  820. __STATIC_INLINE uint32_t FL_LPUART_IsActiveFlag_TXShiftBuffEmpty(LPUART_Type *LPUARTx)
  821. {
  822. return (uint32_t)(READ_BIT(LPUARTx->ISR, LPUART_ISR_TXSE_Msk) == (LPUART_ISR_TXSE_Msk));
  823. }
  824. /**
  825. * @brief Clear LPUART Transmit Shift register Empty Flag
  826. * @rmtoll ISR TXSE FL_LPUART_ClearFlag_TXShiftBuffEmpty
  827. * @param LPUARTx LPUART instance
  828. * @retval None
  829. */
  830. __STATIC_INLINE void FL_LPUART_ClearFlag_TXShiftBuffEmpty(LPUART_Type *LPUARTx)
  831. {
  832. WRITE_REG(LPUARTx->ISR, LPUART_ISR_TXSE_Msk);
  833. }
  834. /**
  835. * @brief Set LPUART BaudRate
  836. * @rmtoll BMR BAUD FL_LPUART_SetBaudRate
  837. * @param LPUARTx LPUART instance
  838. * @param baudRate This parameter can be one of the following values:
  839. * @arg @ref FL_LPUART_BAUDRATE_9600
  840. * @arg @ref FL_LPUART_BAUDRATE_4800
  841. * @arg @ref FL_LPUART_BAUDRATE_2400
  842. * @arg @ref FL_LPUART_BAUDRATE_1200
  843. * @arg @ref FL_LPUART_BAUDRATE_600
  844. * @arg @ref FL_LPUART_BAUDRATE_300
  845. * @retval None
  846. */
  847. __STATIC_INLINE void FL_LPUART_SetBaudRate(LPUART_Type *LPUARTx, uint32_t baudRate)
  848. {
  849. MODIFY_REG(LPUARTx->BMR, LPUART_BMR_BAUD_Msk, baudRate);
  850. }
  851. /**
  852. * @brief Get LPUART BaudRate
  853. * @rmtoll BMR BAUD FL_LPUART_GetBaudRate
  854. * @param LPUARTx LPUART instance
  855. * @retval Returned value can be one of the following values:
  856. * @arg @ref FL_LPUART_BAUDRATE_9600
  857. * @arg @ref FL_LPUART_BAUDRATE_4800
  858. * @arg @ref FL_LPUART_BAUDRATE_2400
  859. * @arg @ref FL_LPUART_BAUDRATE_1200
  860. * @arg @ref FL_LPUART_BAUDRATE_600
  861. * @arg @ref FL_LPUART_BAUDRATE_300
  862. */
  863. __STATIC_INLINE uint32_t FL_LPUART_GetBaudRate(LPUART_Type *LPUARTx)
  864. {
  865. return (uint32_t)(READ_BIT(LPUARTx->BMR, LPUART_BMR_BAUD_Msk));
  866. }
  867. /**
  868. * @brief LPUART Receive 1 byte of data
  869. * @rmtoll RXBUF FL_LPUART_ReadRXBuff
  870. * @param LPUARTx LPUART instance
  871. * @retval The LPUart received data
  872. */
  873. __STATIC_INLINE uint32_t FL_LPUART_ReadRXBuff(LPUART_Type *LPUARTx)
  874. {
  875. return (uint32_t)(READ_BIT(LPUARTx->RXBUF, 0x1ffU));
  876. }
  877. /**
  878. * @brief LPUART Transmit 1 byte of data
  879. * @rmtoll TXBUF FL_LPUART_WriteTXBuff
  880. * @param LPUARTx LPUART instance
  881. * @param data The data need to transmit through the LPUart
  882. * @retval None
  883. */
  884. __STATIC_INLINE void FL_LPUART_WriteTXBuff(LPUART_Type *LPUARTx, uint8_t data)
  885. {
  886. MODIFY_REG(LPUARTx->TXBUF, 0x1ffU, data);
  887. }
  888. /**
  889. * @brief Set LPUART Matched Data
  890. * @rmtoll DMR FL_LPUART_WriteMatchData
  891. * @param LPUARTx LPUART instance
  892. * @param data The value of match under SLEEP MODE
  893. * @retval None
  894. */
  895. __STATIC_INLINE void FL_LPUART_WriteMatchData(LPUART_Type *LPUARTx, uint8_t data)
  896. {
  897. MODIFY_REG(LPUARTx->DMR, 0x1ffU, data);
  898. }
  899. /**
  900. * @brief Get LPUART Matched Data
  901. * @rmtoll DMR FL_LPUART_ReadMatchData
  902. * @param LPUARTx LPUART instance
  903. * @retval The value of match data under SLEEP MODE
  904. */
  905. __STATIC_INLINE uint32_t FL_LPUART_ReadMatchData(LPUART_Type *LPUARTx)
  906. {
  907. return (uint32_t)(READ_BIT(LPUARTx->DMR, 0x1ffU));
  908. }
  909. /**
  910. * @brief Set LPUART Bit Modulation
  911. * @rmtoll BMR MCTL FL_LPUART_WriteBitModulation
  912. * @param LPUARTx LPUART instance
  913. * @param bitModulation The value of Bit Modulation Control
  914. * @retval None
  915. */
  916. __STATIC_INLINE void FL_LPUART_WriteBitModulation(LPUART_Type *LPUARTx, uint32_t bitModulation)
  917. {
  918. MODIFY_REG(LPUARTx->BMR, (0xfffU << 16U), (bitModulation << 16U));
  919. }
  920. /**
  921. * @brief Get LPUART Bit Modulation
  922. * @rmtoll BMR MCTL FL_LPUART_ReadBitModulation
  923. * @param LPUARTx LPUART instance
  924. * @retval The value of Bit Modulation Control
  925. */
  926. __STATIC_INLINE uint32_t FL_LPUART_ReadBitModulation(LPUART_Type *LPUARTx)
  927. {
  928. return (uint32_t)(READ_BIT(LPUARTx->BMR, (0xfffU << 16U)) >> 16U);
  929. }
  930. /**
  931. * @}
  932. */
  933. /** @defgroup LPUART_FL_EF_Init Initialization and de-initialization functions
  934. * @{
  935. */
  936. FL_ErrorStatus FL_LPUART_DeInit(LPUART_Type *LPUARTx);
  937. void FL_LPUART_StructInit(FL_LPUART_InitTypeDef *initStruct);
  938. FL_ErrorStatus FL_LPUART_Init(LPUART_Type *LPUARTx, FL_LPUART_InitTypeDef *initStruct);
  939. /**
  940. * @}
  941. */
  942. /**
  943. * @}
  944. */
  945. /**
  946. * @}
  947. */
  948. #ifdef __cplusplus
  949. }
  950. #endif
  951. #endif /* __FM33LC0XX_FL_LPUART_H*/
  952. /*************************Py_Code_Generator Version: 0.1-0.11-0.1 @ 2020-09-22*************************/
  953. /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/