fm33lc0xx_fl_lcd.h 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_lcd.h
  4. * @author FMSH Application Team
  5. * @brief Head file of LCD FL Module
  6. *******************************************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) [2019] [Fudan Microelectronics]
  10. * THIS SOFTWARE is licensed under the Mulan PSL v1.
  11. * can use this software according to the terms and conditions of the Mulan PSL v1.
  12. * You may obtain a copy of Mulan PSL v1 at:
  13. * http://license.coscl.org.cn/MulanPSL
  14. * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
  16. * PURPOSE.
  17. * See the Mulan PSL v1 for more details.
  18. *
  19. *******************************************************************************************************
  20. */
  21. /* Define to prevent recursive inclusion---------------------------------------------------------------*/
  22. #ifndef __FM33LC0XX_FL_LCD_H
  23. #define __FM33LC0XX_FL_LCD_H
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. /* Includes -------------------------------------------------------------------------------------------*/
  28. #include "fm33lc0xx_fl.h"
  29. /** @addtogroup FM33LC0XX_FL_Driver
  30. * @{
  31. */
  32. /** @defgroup LCD LCD
  33. * @brief LCD FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup LCD_FL_ES_INIT LCD Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief LCD Init Sturcture definition
  42. */
  43. typedef struct
  44. {
  45. /*! 电流源大小控制 */
  46. uint32_t biasCurrent;
  47. /*! 驱动模式 */
  48. uint32_t mode;
  49. /*! 偏执电平 */
  50. uint32_t biasVoltage;
  51. /*! 偏执类型 */
  52. uint32_t biasMode;
  53. /*! 驱动波形 */
  54. uint32_t waveform;
  55. /*! COM数目 */
  56. uint32_t COMxNum;
  57. /*! 显示频率 */
  58. uint32_t displayFreq;
  59. /*! 显示闪烁点亮时间(ms) */
  60. uint32_t flickOnTime;
  61. /*! 显示闪烁熄灭时间(ms) */
  62. uint32_t flickOffTime;
  63. } FL_LCD_InitTypeDef;
  64. /**
  65. * @}
  66. */
  67. /* Exported constants ---------------------------------------------------------------------------------*/
  68. /** @defgroup LCD_FL_Exported_Constants LCD Exported Constants
  69. * @{
  70. */
  71. #define LCD_CR_IC_CTRL_Pos (16U)
  72. #define LCD_CR_IC_CTRL_Msk (0x3U << LCD_CR_IC_CTRL_Pos)
  73. #define LCD_CR_IC_CTRL LCD_CR_IC_CTRL_Msk
  74. #define LCD_CR_ENMODE_Pos (15U)
  75. #define LCD_CR_ENMODE_Msk (0x1U << LCD_CR_ENMODE_Pos)
  76. #define LCD_CR_ENMODE LCD_CR_ENMODE_Msk
  77. #define LCD_CR_FLICK_Pos (14U)
  78. #define LCD_CR_FLICK_Msk (0x1U << LCD_CR_FLICK_Pos)
  79. #define LCD_CR_FLICK LCD_CR_FLICK_Msk
  80. #define LCD_CR_BIAS_Pos (8U)
  81. #define LCD_CR_BIAS_Msk (0xfU << LCD_CR_BIAS_Pos)
  82. #define LCD_CR_BIAS LCD_CR_BIAS_Msk
  83. #define LCD_CR_BIASMD_Pos (5U)
  84. #define LCD_CR_BIASMD_Msk (0x1U << LCD_CR_BIASMD_Pos)
  85. #define LCD_CR_BIASMD LCD_CR_BIASMD_Msk
  86. #define LCD_CR_ANTIPOLAR_Pos (4U)
  87. #define LCD_CR_ANTIPOLAR_Msk (0x1U << LCD_CR_ANTIPOLAR_Pos)
  88. #define LCD_CR_ANTIPOLAR LCD_CR_ANTIPOLAR_Msk
  89. #define LCD_CR_WFT_Pos (3U)
  90. #define LCD_CR_WFT_Msk (0x1U << LCD_CR_WFT_Pos)
  91. #define LCD_CR_WFT LCD_CR_WFT_Msk
  92. #define LCD_CR_LMUX_Pos (1U)
  93. #define LCD_CR_LMUX_Msk (0x3U << LCD_CR_LMUX_Pos)
  94. #define LCD_CR_LMUX LCD_CR_LMUX_Msk
  95. #define LCD_CR_EN_Pos (0U)
  96. #define LCD_CR_EN_Msk (0x1U << LCD_CR_EN_Pos)
  97. #define LCD_CR_EN LCD_CR_EN_Msk
  98. #define LCD_FCR_DF_Pos (0U)
  99. #define LCD_FCR_DF_Msk (0xffU << LCD_FCR_DF_Pos)
  100. #define LCD_FCR_DF LCD_FCR_DF_Msk
  101. #define LCD_FLKT_TOFF_Pos (8U)
  102. #define LCD_FLKT_TOFF_Msk (0xffU << LCD_FLKT_TOFF_Pos)
  103. #define LCD_FLKT_TOFF LCD_FLKT_TOFF_Msk
  104. #define LCD_FLKT_TON_Pos (0U)
  105. #define LCD_FLKT_TON_Msk (0xffU << LCD_FLKT_TON_Pos)
  106. #define LCD_FLKT_TON LCD_FLKT_TON_Msk
  107. #define LCD_IER_DONIE_Pos (1U)
  108. #define LCD_IER_DONIE_Msk (0x1U << LCD_IER_DONIE_Pos)
  109. #define LCD_IER_DONIE LCD_IER_DONIE_Msk
  110. #define LCD_IER_DOFFIE_Pos (0U)
  111. #define LCD_IER_DOFFIE_Msk (0x1U << LCD_IER_DOFFIE_Pos)
  112. #define LCD_IER_DOFFIE LCD_IER_DOFFIE_Msk
  113. #define LCD_ISR_DONIF_Pos (1U)
  114. #define LCD_ISR_DONIF_Msk (0x1U << LCD_ISR_DONIF_Pos)
  115. #define LCD_ISR_DONIF LCD_ISR_DONIF_Msk
  116. #define LCD_ISR_DOFFIF_Pos (0U)
  117. #define LCD_ISR_DOFFIF_Msk (0x1U << LCD_ISR_DOFFIF_Pos)
  118. #define LCD_ISR_DOFFIF LCD_ISR_DOFFIF_Msk
  119. #define LCD_DATA0_DSDA_Pos (0U)
  120. #define LCD_DATA0_DSDA_Msk (0xffffffffU << LCD_DATA0_DSDA_Pos)
  121. #define LCD_DATA0_DSDA LCD_DATA0_DSDA_Msk
  122. #define FL_LCD_DATA_REG0 (0x0U << 0U)
  123. #define FL_LCD_DATA_REG1 (0x1U << 0U)
  124. #define FL_LCD_DATA_REG2 (0x2U << 0U)
  125. #define FL_LCD_DATA_REG3 (0x3U << 0U)
  126. #define FL_LCD_DATA_REG4 (0x4U << 0U)
  127. #define FL_LCD_DATA_REG5 (0x5U << 0U)
  128. #define FL_LCD_DATA_REG6 (0x6U << 0U)
  129. #define FL_LCD_DATA_REG7 (0x7U << 0U)
  130. #define FL_LCD_COMEN_COM0 (0x1U << 0U)
  131. #define FL_LCD_COMEN_COM1 (0x1U << 1U)
  132. #define FL_LCD_COMEN_COM2 (0x1U << 2U)
  133. #define FL_LCD_COMEN_COM3 (0x1U << 3U)
  134. #define FL_LCD_COMEN_COM4 (0x1U << 28U)
  135. #define FL_LCD_COMEN_COM5 (0x1U << 29U)
  136. #define FL_LCD_COMEN_COM6 (0x1U << 30U)
  137. #define FL_LCD_COMEN_COM7 (0x1U << 31U)
  138. #define FL_LCD_SEGEN0_SEG0 (0x1U << 0U)
  139. #define FL_LCD_SEGEN0_SEG1 (0x1U << 1U)
  140. #define FL_LCD_SEGEN0_SEG2 (0x1U << 2U)
  141. #define FL_LCD_SEGEN0_SEG3 (0x1U << 3U)
  142. #define FL_LCD_SEGEN0_SEG4 (0x1U << 4U)
  143. #define FL_LCD_SEGEN0_SEG5 (0x1U << 5U)
  144. #define FL_LCD_SEGEN0_SEG6 (0x1U << 6U)
  145. #define FL_LCD_SEGEN0_SEG7 (0x1U << 7U)
  146. #define FL_LCD_SEGEN0_SEG8 (0x1U << 8U)
  147. #define FL_LCD_SEGEN0_SEG9 (0x1U << 9U)
  148. #define FL_LCD_SEGEN0_SEG10 (0x1U << 10U)
  149. #define FL_LCD_SEGEN0_SEG11 (0x1U << 11U)
  150. #define FL_LCD_SEGEN0_SEG12 (0x1U << 12U)
  151. #define FL_LCD_SEGEN0_SEG13 (0x1U << 13U)
  152. #define FL_LCD_SEGEN0_SEG14 (0x1U << 14U)
  153. #define FL_LCD_SEGEN0_SEG15 (0x1U << 15U)
  154. #define FL_LCD_SEGEN0_SEG16 (0x1U << 16U)
  155. #define FL_LCD_SEGEN0_SEG17 (0x1U << 17U)
  156. #define FL_LCD_SEGEN0_SEG18 (0x1U << 18U)
  157. #define FL_LCD_SEGEN0_SEG19 (0x1U << 19U)
  158. #define FL_LCD_SEGEN0_SEG20 (0x1U << 20U)
  159. #define FL_LCD_SEGEN0_SEG21 (0x1U << 21U)
  160. #define FL_LCD_SEGEN0_SEG22 (0x1U << 22U)
  161. #define FL_LCD_SEGEN0_SEG23 (0x1U << 23U)
  162. #define FL_LCD_SEGEN0_SEG24 (0x1U << 24U)
  163. #define FL_LCD_SEGEN0_SEG25 (0x1U << 25U)
  164. #define FL_LCD_SEGEN0_SEG26 (0x1U << 26U)
  165. #define FL_LCD_SEGEN0_SEG27 (0x1U << 27U)
  166. #define FL_LCD_SEGEN0_SEG28 (0x1U << 28U)
  167. #define FL_LCD_SEGEN0_SEG29 (0x1U << 29U)
  168. #define FL_LCD_SEGEN0_SEG30 (0x1U << 30U)
  169. #define FL_LCD_SEGEN0_SEG31 (0x1U << 31U)
  170. #define FL_LCD_BIAS_CURRENT_VERYHIGH (0x0U << LCD_CR_IC_CTRL_Pos)
  171. #define FL_LCD_BIAS_CURRENT_HIGH (0x1U << LCD_CR_IC_CTRL_Pos)
  172. #define FL_LCD_BIAS_CURRENT_MEDIUM (0x2U << LCD_CR_IC_CTRL_Pos)
  173. #define FL_LCD_BIAS_CURRENT_LOW (0x3U << LCD_CR_IC_CTRL_Pos)
  174. #define FL_LCD_DRIVER_MODE_INNER_RESISTER (0x1U << LCD_CR_ENMODE_Pos)
  175. #define FL_LCD_BIAS_VOLTAGE_LEVEL0 (0x0U << LCD_CR_BIAS_Pos)
  176. #define FL_LCD_BIAS_VOLTAGE_LEVEL1 (0x1U << LCD_CR_BIAS_Pos)
  177. #define FL_LCD_BIAS_VOLTAGE_LEVEL2 (0x2U << LCD_CR_BIAS_Pos)
  178. #define FL_LCD_BIAS_VOLTAGE_LEVEL3 (0x3U << LCD_CR_BIAS_Pos)
  179. #define FL_LCD_BIAS_VOLTAGE_LEVEL4 (0x4U << LCD_CR_BIAS_Pos)
  180. #define FL_LCD_BIAS_VOLTAGE_LEVEL5 (0x5U << LCD_CR_BIAS_Pos)
  181. #define FL_LCD_BIAS_VOLTAGE_LEVEL6 (0x6U << LCD_CR_BIAS_Pos)
  182. #define FL_LCD_BIAS_VOLTAGE_LEVEL7 (0x7U << LCD_CR_BIAS_Pos)
  183. #define FL_LCD_BIAS_VOLTAGE_LEVEL8 (0x8U << LCD_CR_BIAS_Pos)
  184. #define FL_LCD_BIAS_VOLTAGE_LEVEL9 (0x9U << LCD_CR_BIAS_Pos)
  185. #define FL_LCD_BIAS_VOLTAGE_LEVEL10 (0xaU << LCD_CR_BIAS_Pos)
  186. #define FL_LCD_BIAS_VOLTAGE_LEVEL11 (0xbU << LCD_CR_BIAS_Pos)
  187. #define FL_LCD_BIAS_VOLTAGE_LEVEL12 (0xcU << LCD_CR_BIAS_Pos)
  188. #define FL_LCD_BIAS_VOLTAGE_LEVEL13 (0xdU << LCD_CR_BIAS_Pos)
  189. #define FL_LCD_BIAS_VOLTAGE_LEVEL14 (0xeU << LCD_CR_BIAS_Pos)
  190. #define FL_LCD_BIAS_VOLTAGE_LEVEL15 (0xfU << LCD_CR_BIAS_Pos)
  191. #define FL_LCD_BIAS_MODE_4BIAS (0x0U << LCD_CR_BIASMD_Pos)
  192. #define FL_LCD_BIAS_MODE_3BIAS (0x1U << LCD_CR_BIASMD_Pos)
  193. #define FL_LCD_ANTIPOLAR_FLOATING (0x0U << LCD_CR_ANTIPOLAR_Pos)
  194. #define FL_LCD_ANTIPOLAR_GND (0x1U << LCD_CR_ANTIPOLAR_Pos)
  195. #define FL_LCD_WAVEFORM_TYPEA (0x0U << LCD_CR_WFT_Pos)
  196. #define FL_LCD_WAVEFORM_TYPEB (0x1U << LCD_CR_WFT_Pos)
  197. #define FL_LCD_COM_NUM_4COM (0x0U << LCD_CR_LMUX_Pos)
  198. #define FL_LCD_COM_NUM_6COM (0x1U << LCD_CR_LMUX_Pos)
  199. #define FL_LCD_COM_NUM_8COM (0x2U << LCD_CR_LMUX_Pos)
  200. /**
  201. * @}
  202. */
  203. /* Exported functions ---------------------------------------------------------------------------------*/
  204. /** @defgroup LCD_FL_Exported_Functions LCD Exported Functions
  205. * @{
  206. */
  207. /**
  208. * @brief Set Input Bias Current
  209. * @rmtoll CR IC_CTRL FL_LCD_SetBiasCurrent
  210. * @param LCDx LCD instance
  211. * @param current This parameter can be one of the following values:
  212. * @arg @ref FL_LCD_BIAS_CURRENT_VERYHIGH
  213. * @arg @ref FL_LCD_BIAS_CURRENT_HIGH
  214. * @arg @ref FL_LCD_BIAS_CURRENT_MEDIUM
  215. * @arg @ref FL_LCD_BIAS_CURRENT_LOW
  216. * @retval None
  217. */
  218. __STATIC_INLINE void FL_LCD_SetBiasCurrent(LCD_Type *LCDx, uint32_t current)
  219. {
  220. MODIFY_REG(LCDx->CR, LCD_CR_IC_CTRL_Msk, current);
  221. }
  222. /**
  223. * @brief Set Input Bias Current
  224. * @rmtoll CR IC_CTRL FL_LCD_GetBiasCurrent
  225. * @param LCDx LCD instance
  226. * @retval Returned value can be one of the following values:
  227. * @arg @ref FL_LCD_BIAS_CURRENT_VERYHIGH
  228. * @arg @ref FL_LCD_BIAS_CURRENT_HIGH
  229. * @arg @ref FL_LCD_BIAS_CURRENT_MEDIUM
  230. * @arg @ref FL_LCD_BIAS_CURRENT_LOW
  231. */
  232. __STATIC_INLINE uint32_t FL_LCD_GetBiasCurrent(LCD_Type *LCDx)
  233. {
  234. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_IC_CTRL_Msk));
  235. }
  236. /**
  237. * @brief Set LCD Enabling Mode
  238. * @rmtoll CR ENMODE FL_LCD_SetDriverMode
  239. * @param LCDx LCD instance
  240. * @param mode This parameter can be one of the following values:
  241. * @arg @ref FL_LCD_DRIVER_MODE_INNER_RESISTER
  242. * @retval None
  243. */
  244. __STATIC_INLINE void FL_LCD_SetDriverMode(LCD_Type *LCDx, uint32_t mode)
  245. {
  246. MODIFY_REG(LCDx->CR, LCD_CR_ENMODE_Msk, mode);
  247. }
  248. /**
  249. * @brief Get LCD Enabling Mode
  250. * @rmtoll CR ENMODE FL_LCD_GetDriverMode
  251. * @param LCDx LCD instance
  252. * @retval Returned value can be one of the following values:
  253. * @arg @ref FL_LCD_DRIVER_MODE_INNER_RESISTER
  254. */
  255. __STATIC_INLINE uint32_t FL_LCD_GetDriverMode(LCD_Type *LCDx)
  256. {
  257. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_ENMODE_Msk));
  258. }
  259. /**
  260. * @brief Enable LCD Blink
  261. * @rmtoll CR FLICK FL_LCD_EnableDisplayBlink
  262. * @param LCDx LCD instance
  263. * @retval None
  264. */
  265. __STATIC_INLINE void FL_LCD_EnableDisplayBlink(LCD_Type *LCDx)
  266. {
  267. SET_BIT(LCDx->CR, LCD_CR_FLICK_Msk);
  268. }
  269. /**
  270. * @brief Disable LCD Blink
  271. * @rmtoll CR FLICK FL_LCD_DisableDisplayBlink
  272. * @param LCDx LCD instance
  273. * @retval None
  274. */
  275. __STATIC_INLINE void FL_LCD_DisableDisplayBlink(LCD_Type *LCDx)
  276. {
  277. CLEAR_BIT(LCDx->CR, LCD_CR_FLICK_Msk);
  278. }
  279. /**
  280. * @brief Get LCD Blink State
  281. * @rmtoll CR FLICK FL_LCD_IsEnabledDisplayBlink
  282. * @param LCDx LCD instance
  283. * @retval State of bit (1 or 0).
  284. */
  285. __STATIC_INLINE uint32_t FL_LCD_IsEnabledDisplayBlink(LCD_Type *LCDx)
  286. {
  287. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_FLICK_Msk) == LCD_CR_FLICK_Msk);
  288. }
  289. /**
  290. * @brief Set LCD Bias Voltage Select
  291. * @rmtoll CR BIAS FL_LCD_SetBiasVoltage
  292. * @param LCDx LCD instance
  293. * @param voltage This parameter can be one of the following values:
  294. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL0
  295. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL1
  296. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL2
  297. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL3
  298. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL4
  299. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL5
  300. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL6
  301. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL7
  302. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL8
  303. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL9
  304. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL10
  305. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL11
  306. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL12
  307. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL13
  308. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL14
  309. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL15
  310. * @retval None
  311. */
  312. __STATIC_INLINE void FL_LCD_SetBiasVoltage(LCD_Type *LCDx, uint32_t voltage)
  313. {
  314. MODIFY_REG(LCDx->CR, LCD_CR_BIAS_Msk, voltage);
  315. }
  316. /**
  317. * @brief Get LCD Bias Voltage Select
  318. * @rmtoll CR BIAS FL_LCD_GetBiasVoltage
  319. * @param LCDx LCD instance
  320. * @retval Returned value can be one of the following values:
  321. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL0
  322. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL1
  323. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL2
  324. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL3
  325. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL4
  326. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL5
  327. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL6
  328. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL7
  329. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL8
  330. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL9
  331. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL10
  332. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL11
  333. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL12
  334. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL13
  335. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL14
  336. * @arg @ref FL_LCD_BIAS_VOLTAGE_LEVEL15
  337. */
  338. __STATIC_INLINE uint32_t FL_LCD_GetBiasVoltage(LCD_Type *LCDx)
  339. {
  340. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_BIAS_Msk));
  341. }
  342. /**
  343. * @brief Set LCD Bias Mode
  344. * @rmtoll CR BIASMD FL_LCD_SetBiasMode
  345. * @param LCDx LCD instance
  346. * @param mode This parameter can be one of the following values:
  347. * @arg @ref FL_LCD_BIAS_MODE_4BIAS
  348. * @arg @ref FL_LCD_BIAS_MODE_3BIAS
  349. * @retval None
  350. */
  351. __STATIC_INLINE void FL_LCD_SetBiasMode(LCD_Type *LCDx, uint32_t mode)
  352. {
  353. MODIFY_REG(LCDx->CR, LCD_CR_BIASMD_Msk, mode);
  354. }
  355. /**
  356. * @brief Get LCD Bias Mode
  357. * @rmtoll CR BIASMD FL_LCD_GetBiasMode
  358. * @param LCDx LCD instance
  359. * @retval Returned value can be one of the following values:
  360. * @arg @ref FL_LCD_BIAS_MODE_4BIAS
  361. * @arg @ref FL_LCD_BIAS_MODE_3BIAS
  362. */
  363. __STATIC_INLINE uint32_t FL_LCD_GetBiasMode(LCD_Type *LCDx)
  364. {
  365. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_BIASMD_Msk));
  366. }
  367. /**
  368. * @brief Set LCD Anti-Polarization
  369. * @rmtoll CR ANTIPOLAR FL_LCD_SetAntiPolar
  370. * @param LCDx LCD instance
  371. * @param state This parameter can be one of the following values:
  372. * @arg @ref FL_LCD_ANTIPOLAR_FLOATING
  373. * @arg @ref FL_LCD_ANTIPOLAR_GND
  374. * @retval None
  375. */
  376. __STATIC_INLINE void FL_LCD_SetAntiPolar(LCD_Type *LCDx, uint32_t state)
  377. {
  378. MODIFY_REG(LCDx->CR, LCD_CR_ANTIPOLAR_Msk, state);
  379. }
  380. /**
  381. * @brief Get LCD Anti-Polarization
  382. * @rmtoll CR ANTIPOLAR FL_LCD_GetAntiPolar
  383. * @param LCDx LCD instance
  384. * @retval Returned value can be one of the following values:
  385. */
  386. __STATIC_INLINE uint32_t FL_LCD_GetAntiPolar(LCD_Type *LCDx)
  387. {
  388. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_ANTIPOLAR_Msk));
  389. }
  390. /**
  391. * @brief Set LCD Waveform Format
  392. * @rmtoll CR WFT FL_LCD_SetWaveform
  393. * @param LCDx LCD instance
  394. * @param state This parameter can be one of the following values:
  395. * @arg @ref FL_LCD_WAVEFORM_TYPEA
  396. * @arg @ref FL_LCD_WAVEFORM_TYPEB
  397. * @retval None
  398. */
  399. __STATIC_INLINE void FL_LCD_SetWaveform(LCD_Type *LCDx, uint32_t state)
  400. {
  401. MODIFY_REG(LCDx->CR, LCD_CR_WFT_Msk, state);
  402. }
  403. /**
  404. * @brief Get LCD Waveform Format
  405. * @rmtoll CR WFT FL_LCD_GetWaveform
  406. * @param LCDx LCD instance
  407. * @retval Returned value can be one of the following values:
  408. * @arg @ref FL_LCD_WAVEFORM_TYPEA
  409. * @arg @ref FL_LCD_WAVEFORM_TYPEB
  410. */
  411. __STATIC_INLINE uint32_t FL_LCD_GetWaveform(LCD_Type *LCDx)
  412. {
  413. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_WFT_Msk));
  414. }
  415. /**
  416. * @brief Set LCD Segment Line Mux
  417. * @rmtoll CR LMUX FL_LCD_SetCOMNumber
  418. * @param LCDx LCD instance
  419. * @param number This parameter can be one of the following values:
  420. * @arg @ref FL_LCD_COM_NUM_4COM
  421. * @arg @ref FL_LCD_COM_NUM_6COM
  422. * @arg @ref FL_LCD_COM_NUM_8COM
  423. * @retval None
  424. */
  425. __STATIC_INLINE void FL_LCD_SetCOMNumber(LCD_Type *LCDx, uint32_t number)
  426. {
  427. MODIFY_REG(LCDx->CR, LCD_CR_LMUX_Msk, number);
  428. }
  429. /**
  430. * @brief Get LCD Segment Line Mux
  431. * @rmtoll CR LMUX FL_LCD_GetCOMNumber
  432. * @param LCDx LCD instance
  433. * @retval Returned value can be one of the following values:
  434. * @arg @ref FL_LCD_COM_NUM_4COM
  435. * @arg @ref FL_LCD_COM_NUM_6COM
  436. * @arg @ref FL_LCD_COM_NUM_8COM
  437. */
  438. __STATIC_INLINE uint32_t FL_LCD_GetCOMNumber(LCD_Type *LCDx)
  439. {
  440. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_LMUX_Msk));
  441. }
  442. /**
  443. * @brief Enable LCD
  444. * @rmtoll CR EN FL_LCD_Enable
  445. * @param LCDx LCD instance
  446. * @retval None
  447. */
  448. __STATIC_INLINE void FL_LCD_Enable(LCD_Type *LCDx)
  449. {
  450. SET_BIT(LCDx->CR, LCD_CR_EN_Msk);
  451. }
  452. /**
  453. * @brief Get LCD State
  454. * @rmtoll CR EN FL_LCD_IsEnabled
  455. * @param LCDx LCD instance
  456. * @retval State of bit (1 or 0).
  457. */
  458. __STATIC_INLINE uint32_t FL_LCD_IsEnabled(LCD_Type *LCDx)
  459. {
  460. return (uint32_t)(READ_BIT(LCDx->CR, LCD_CR_EN_Msk) == LCD_CR_EN_Msk);
  461. }
  462. /**
  463. * @brief Disable LCD
  464. * @rmtoll CR EN FL_LCD_Disable
  465. * @param LCDx LCD instance
  466. * @retval None
  467. */
  468. __STATIC_INLINE void FL_LCD_Disable(LCD_Type *LCDx)
  469. {
  470. CLEAR_BIT(LCDx->CR, LCD_CR_EN_Msk);
  471. }
  472. /**
  473. * @brief Set LCD Display Frequency
  474. * @rmtoll FCR DF FL_LCD_WriteDisplayFrequency
  475. * @param LCDx LCD instance
  476. * @param frequency
  477. * @retval None
  478. */
  479. __STATIC_INLINE void FL_LCD_WriteDisplayFrequency(LCD_Type *LCDx, uint32_t frequency)
  480. {
  481. MODIFY_REG(LCDx->FCR, (0xffU << 0U), (frequency << 0U));
  482. }
  483. /**
  484. * @brief Get LCD Display Frequency
  485. * @rmtoll FCR DF FL_LCD_ReadDisplayFrequency
  486. * @param LCDx LCD instance
  487. * @retval
  488. */
  489. __STATIC_INLINE uint32_t FL_LCD_ReadDisplayFrequency(LCD_Type *LCDx)
  490. {
  491. return (uint32_t)(READ_BIT(LCDx->FCR, (0xffU << 0U)) >> 0U);
  492. }
  493. /**
  494. * @brief Set LCD Display Off Time
  495. * @rmtoll FLKT TOFF FL_LCD_WriteDisplayOffTime
  496. * @param LCDx LCD instance
  497. * @param time
  498. * @retval None
  499. */
  500. __STATIC_INLINE void FL_LCD_WriteDisplayOffTime(LCD_Type *LCDx, uint32_t time)
  501. {
  502. MODIFY_REG(LCDx->FLKT, (0xffU << 8U), (time << 8U));
  503. }
  504. /**
  505. * @brief Get LCD Display Off Time
  506. * @rmtoll FLKT TOFF FL_LCD_ReadDisplayOffTime
  507. * @param LCDx LCD instance
  508. * @retval
  509. */
  510. __STATIC_INLINE uint32_t FL_LCD_ReadDisplayOffTime(LCD_Type *LCDx)
  511. {
  512. return (uint32_t)(READ_BIT(LCDx->FLKT, (0xffU << 8U)) >> 8U);
  513. }
  514. /**
  515. * @brief Set LCD Display On Time
  516. * @rmtoll FLKT TON FL_LCD_WriteDisplayOnTime
  517. * @param LCDx LCD instance
  518. * @param time
  519. * @retval None
  520. */
  521. __STATIC_INLINE void FL_LCD_WriteDisplayOnTime(LCD_Type *LCDx, uint32_t time)
  522. {
  523. MODIFY_REG(LCDx->FLKT, (0xffU << 0U), (time << 0U));
  524. }
  525. /**
  526. * @brief Get LCD Display On Time
  527. * @rmtoll FLKT TON FL_LCD_ReadDisplayOnTime
  528. * @param LCDx LCD instance
  529. * @retval
  530. */
  531. __STATIC_INLINE uint32_t FL_LCD_ReadDisplayOnTime(LCD_Type *LCDx)
  532. {
  533. return (uint32_t)(READ_BIT(LCDx->FLKT, (0xffU << 0U)) >> 0U);
  534. }
  535. /**
  536. * @brief Enable LCD Display OFF IRQ
  537. * @rmtoll IER DONIE FL_LCD_EnableIT_DisplayOff
  538. * @param LCDx LCD instance
  539. * @retval None
  540. */
  541. __STATIC_INLINE void FL_LCD_EnableIT_DisplayOff(LCD_Type *LCDx)
  542. {
  543. SET_BIT(LCDx->IER, LCD_IER_DONIE_Msk);
  544. }
  545. /**
  546. * @brief Disable LCD Display OFF IRQ
  547. * @rmtoll IER DONIE FL_LCD_DisableIT_DisplayOff
  548. * @param LCDx LCD instance
  549. * @retval None
  550. */
  551. __STATIC_INLINE void FL_LCD_DisableIT_DisplayOff(LCD_Type *LCDx)
  552. {
  553. CLEAR_BIT(LCDx->IER, LCD_IER_DONIE_Msk);
  554. }
  555. /**
  556. * @brief Getable LCD Display OFF IRQ
  557. * @rmtoll IER DONIE FL_LCD_IsEnabledIT_DisplayOff
  558. * @param LCDx LCD instance
  559. * @retval State of bit (1 or 0).
  560. */
  561. __STATIC_INLINE uint32_t FL_LCD_IsEnabledIT_DisplayOff(LCD_Type *LCDx)
  562. {
  563. return (uint32_t)(READ_BIT(LCDx->IER, LCD_IER_DONIE_Msk) == LCD_IER_DONIE_Msk);
  564. }
  565. /**
  566. * @brief Enable LCD Display ON Interrupt
  567. * @rmtoll IER DOFFIE FL_LCD_EnableIT_DisplayOn
  568. * @param LCDx LCD instance
  569. * @retval None
  570. */
  571. __STATIC_INLINE void FL_LCD_EnableIT_DisplayOn(LCD_Type *LCDx)
  572. {
  573. SET_BIT(LCDx->IER, LCD_IER_DOFFIE_Msk);
  574. }
  575. /**
  576. * @brief Disable LCD Display ON Interrupt
  577. * @rmtoll IER DOFFIE FL_LCD_DisableIT_DisplayOn
  578. * @param LCDx LCD instance
  579. * @retval None
  580. */
  581. __STATIC_INLINE void FL_LCD_DisableIT_DisplayOn(LCD_Type *LCDx)
  582. {
  583. CLEAR_BIT(LCDx->IER, LCD_IER_DOFFIE_Msk);
  584. }
  585. /**
  586. * @brief Getable LCD Display ON Interrupt
  587. * @rmtoll IER DOFFIE FL_LCD_IsEnabledIT_DisplayOn
  588. * @param LCDx LCD instance
  589. * @retval State of bit (1 or 0).
  590. */
  591. __STATIC_INLINE uint32_t FL_LCD_IsEnabledIT_DisplayOn(LCD_Type *LCDx)
  592. {
  593. return (uint32_t)(READ_BIT(LCDx->IER, LCD_IER_DOFFIE_Msk) == LCD_IER_DOFFIE_Msk);
  594. }
  595. /**
  596. * @brief Get LCD Display OFF Flag
  597. * @rmtoll ISR DONIF FL_LCD_IsActiveFlag_DisplayOff
  598. * @param LCDx LCD instance
  599. * @retval State of bit (1 or 0).
  600. */
  601. __STATIC_INLINE uint32_t FL_LCD_IsActiveFlag_DisplayOff(LCD_Type *LCDx)
  602. {
  603. return (uint32_t)(READ_BIT(LCDx->ISR, LCD_ISR_DONIF_Msk) == (LCD_ISR_DONIF_Msk));
  604. }
  605. /**
  606. * @brief Clear LCD Display OFF Flag
  607. * @rmtoll ISR DONIF FL_LCD_ClearFlag_DisplayOff
  608. * @param LCDx LCD instance
  609. * @retval None
  610. */
  611. __STATIC_INLINE void FL_LCD_ClearFlag_DisplayOff(LCD_Type *LCDx)
  612. {
  613. WRITE_REG(LCDx->ISR, LCD_ISR_DONIF_Msk);
  614. }
  615. /**
  616. * @brief Get LCD Display On Flag
  617. * @rmtoll ISR DOFFIF FL_LCD_IsActiveFlag_DisplayOn
  618. * @param LCDx LCD instance
  619. * @retval State of bit (1 or 0).
  620. */
  621. __STATIC_INLINE uint32_t FL_LCD_IsActiveFlag_DisplayOn(LCD_Type *LCDx)
  622. {
  623. return (uint32_t)(READ_BIT(LCDx->ISR, LCD_ISR_DOFFIF_Msk) == (LCD_ISR_DOFFIF_Msk));
  624. }
  625. /**
  626. * @brief Clear LCD Display On Flag
  627. * @rmtoll ISR DOFFIF FL_LCD_ClearFlag_DisplayOn
  628. * @param LCDx LCD instance
  629. * @retval None
  630. */
  631. __STATIC_INLINE void FL_LCD_ClearFlag_DisplayOn(LCD_Type *LCDx)
  632. {
  633. WRITE_REG(LCDx->ISR, LCD_ISR_DOFFIF_Msk);
  634. }
  635. /**
  636. * @brief Write LCD Display Data
  637. * @rmtoll DATA0 DSDA FL_LCD_WriteData
  638. * @param LCDx LCD instance
  639. * @param reg This parameter can be one of the following values:
  640. * @arg @ref FL_LCD_DATA_REG0
  641. * @arg @ref FL_LCD_DATA_REG1
  642. * @arg @ref FL_LCD_DATA_REG2
  643. * @arg @ref FL_LCD_DATA_REG3
  644. * @arg @ref FL_LCD_DATA_REG4
  645. * @arg @ref FL_LCD_DATA_REG5
  646. * @arg @ref FL_LCD_DATA_REG6
  647. * @arg @ref FL_LCD_DATA_REG7
  648. * @param data
  649. * @retval None
  650. */
  651. __STATIC_INLINE void FL_LCD_WriteData(LCD_Type *LCDx, uint32_t reg, uint32_t data)
  652. {
  653. volatile uint32_t *pData = &(LCDx->DATA0);
  654. MODIFY_REG(pData[reg], LCD_DATA0_DSDA_Msk, data);
  655. }
  656. /**
  657. * @brief Read LCD Display Data
  658. * @rmtoll DATA0 DSDA FL_LCD_ReadData
  659. * @param LCDx LCD instance
  660. * @param reg This parameter can be one of the following values:
  661. * @arg @ref FL_LCD_DATA_REG0
  662. * @arg @ref FL_LCD_DATA_REG1
  663. * @arg @ref FL_LCD_DATA_REG2
  664. * @arg @ref FL_LCD_DATA_REG3
  665. * @arg @ref FL_LCD_DATA_REG4
  666. * @arg @ref FL_LCD_DATA_REG5
  667. * @arg @ref FL_LCD_DATA_REG6
  668. * @arg @ref FL_LCD_DATA_REG7
  669. * @retval
  670. */
  671. __STATIC_INLINE uint32_t FL_LCD_ReadData(LCD_Type *LCDx, uint32_t reg)
  672. {
  673. volatile uint32_t *pData = &(LCDx->DATA0);
  674. return (uint32_t)(READ_BIT(pData[reg], LCD_DATA0_DSDA_Msk));
  675. }
  676. /**
  677. * @brief Get LCD COMx State
  678. * @rmtoll COMEN FL_LCD_IsEnabledCOMEN
  679. * @param LCDx LCD instance
  680. * @param COM This parameter can be one of the following values:
  681. * @arg @ref FL_LCD_COMEN_COM0
  682. * @arg @ref FL_LCD_COMEN_COM1
  683. * @arg @ref FL_LCD_COMEN_COM2
  684. * @arg @ref FL_LCD_COMEN_COM3
  685. * @arg @ref FL_LCD_COMEN_COM4
  686. * @arg @ref FL_LCD_COMEN_COM5
  687. * @arg @ref FL_LCD_COMEN_COM6
  688. * @arg @ref FL_LCD_COMEN_COM7
  689. * @retval State of bit (1 or 0).
  690. */
  691. __STATIC_INLINE uint32_t FL_LCD_IsEnabledCOMEN(LCD_Type *LCDx, uint32_t COM)
  692. {
  693. if(COM < FL_LCD_COMEN_COM4)
  694. {
  695. return (uint32_t)(READ_BIT(LCDx->COMEN, ((COM & 0xffffffff) << 0x0U)) == ((COM & 0xffffffff) << 0x0U));
  696. }
  697. else
  698. {
  699. return (uint32_t)(READ_BIT(LCDx->SEGEN0, ((COM & 0xffffffff) << 0x0U)) == ((COM & 0xffffffff) << 0x0U));
  700. }
  701. }
  702. /**
  703. * @brief Enable LCD COMx
  704. * @rmtoll COMEN FL_LCD_EnableCOMEN
  705. * @param LCDx LCD instance
  706. * @param COM This parameter can be one of the following values:
  707. * @arg @ref FL_LCD_COMEN_COM0
  708. * @arg @ref FL_LCD_COMEN_COM1
  709. * @arg @ref FL_LCD_COMEN_COM2
  710. * @arg @ref FL_LCD_COMEN_COM3
  711. * @arg @ref FL_LCD_COMEN_COM4
  712. * @arg @ref FL_LCD_COMEN_COM5
  713. * @arg @ref FL_LCD_COMEN_COM6
  714. * @arg @ref FL_LCD_COMEN_COM7
  715. * @retval None
  716. */
  717. __STATIC_INLINE void FL_LCD_EnableCOMEN(LCD_Type *LCDx, uint32_t COM)
  718. {
  719. if(COM < FL_LCD_COMEN_COM4)
  720. {
  721. SET_BIT(LCDx->COMEN, ((COM & 0xffffffff) << 0x0U));
  722. }
  723. else
  724. {
  725. SET_BIT(LCDx->SEGEN0, ((COM & 0xffffffff) << 0x0U));
  726. }
  727. }
  728. /**
  729. * @brief Disable LCD COMx
  730. * @rmtoll COMEN FL_LCD_DisableCOMEN
  731. * @param LCDx LCD instance
  732. * @param COM This parameter can be one of the following values:
  733. * @arg @ref FL_LCD_COMEN_COM0
  734. * @arg @ref FL_LCD_COMEN_COM1
  735. * @arg @ref FL_LCD_COMEN_COM2
  736. * @arg @ref FL_LCD_COMEN_COM3
  737. * @arg @ref FL_LCD_COMEN_COM4
  738. * @arg @ref FL_LCD_COMEN_COM5
  739. * @arg @ref FL_LCD_COMEN_COM6
  740. * @arg @ref FL_LCD_COMEN_COM7
  741. * @retval None
  742. */
  743. __STATIC_INLINE void FL_LCD_DisableCOMEN(LCD_Type *LCDx, uint32_t COM)
  744. {
  745. if(COM < FL_LCD_COMEN_COM4)
  746. {
  747. CLEAR_BIT(LCDx->COMEN, ((COM & 0xffffffff) << 0x0U));
  748. }
  749. else
  750. {
  751. CLEAR_BIT(LCDx->SEGEN0, ((COM & 0xffffffff) << 0x0U));
  752. }
  753. }
  754. /**
  755. * @brief Get LCD SEGx State
  756. * @rmtoll SEGEN0 FL_LCD_IsEnabledSEGEN0
  757. * @param LCDx LCD instance
  758. * @param SEG This parameter can be one of the following values:
  759. * @arg @ref FL_LCD_SEGEN0_SEG0
  760. * @arg @ref FL_LCD_SEGEN0_SEG1
  761. * @arg @ref FL_LCD_SEGEN0_SEG2
  762. * @arg @ref FL_LCD_SEGEN0_SEG3
  763. * @arg @ref FL_LCD_SEGEN0_SEG4
  764. * @arg @ref FL_LCD_SEGEN0_SEG5
  765. * @arg @ref FL_LCD_SEGEN0_SEG6
  766. * @arg @ref FL_LCD_SEGEN0_SEG7
  767. * @arg @ref FL_LCD_SEGEN0_SEG8
  768. * @arg @ref FL_LCD_SEGEN0_SEG9
  769. * @arg @ref FL_LCD_SEGEN0_SEG10
  770. * @arg @ref FL_LCD_SEGEN0_SEG11
  771. * @arg @ref FL_LCD_SEGEN0_SEG12
  772. * @arg @ref FL_LCD_SEGEN0_SEG13
  773. * @arg @ref FL_LCD_SEGEN0_SEG14
  774. * @arg @ref FL_LCD_SEGEN0_SEG15
  775. * @arg @ref FL_LCD_SEGEN0_SEG16
  776. * @arg @ref FL_LCD_SEGEN0_SEG17
  777. * @arg @ref FL_LCD_SEGEN0_SEG18
  778. * @arg @ref FL_LCD_SEGEN0_SEG19
  779. * @arg @ref FL_LCD_SEGEN0_SEG20
  780. * @arg @ref FL_LCD_SEGEN0_SEG21
  781. * @arg @ref FL_LCD_SEGEN0_SEG22
  782. * @arg @ref FL_LCD_SEGEN0_SEG23
  783. * @arg @ref FL_LCD_SEGEN0_SEG24
  784. * @arg @ref FL_LCD_SEGEN0_SEG25
  785. * @arg @ref FL_LCD_SEGEN0_SEG26
  786. * @arg @ref FL_LCD_SEGEN0_SEG27
  787. * @arg @ref FL_LCD_SEGEN0_SEG28
  788. * @arg @ref FL_LCD_SEGEN0_SEG29
  789. * @arg @ref FL_LCD_SEGEN0_SEG30
  790. * @arg @ref FL_LCD_SEGEN0_SEG31
  791. * @retval State of bit (1 or 0).
  792. */
  793. __STATIC_INLINE uint32_t FL_LCD_IsEnabledSEGEN0(LCD_Type *LCDx, uint32_t SEG)
  794. {
  795. return (uint32_t)(READ_BIT(LCDx->SEGEN0, ((SEG & 0xffffffff) << 0x0U)) == ((SEG & 0xffffffff) << 0x0U));
  796. }
  797. /**
  798. * @brief Enable LCD SEGx
  799. * @rmtoll SEGEN0 FL_LCD_EnableSEGEN0
  800. * @param LCDx LCD instance
  801. * @param SEG This parameter can be one of the following values:
  802. * @arg @ref FL_LCD_SEGEN0_SEG0
  803. * @arg @ref FL_LCD_SEGEN0_SEG1
  804. * @arg @ref FL_LCD_SEGEN0_SEG2
  805. * @arg @ref FL_LCD_SEGEN0_SEG3
  806. * @arg @ref FL_LCD_SEGEN0_SEG4
  807. * @arg @ref FL_LCD_SEGEN0_SEG5
  808. * @arg @ref FL_LCD_SEGEN0_SEG6
  809. * @arg @ref FL_LCD_SEGEN0_SEG7
  810. * @arg @ref FL_LCD_SEGEN0_SEG8
  811. * @arg @ref FL_LCD_SEGEN0_SEG9
  812. * @arg @ref FL_LCD_SEGEN0_SEG10
  813. * @arg @ref FL_LCD_SEGEN0_SEG11
  814. * @arg @ref FL_LCD_SEGEN0_SEG12
  815. * @arg @ref FL_LCD_SEGEN0_SEG13
  816. * @arg @ref FL_LCD_SEGEN0_SEG14
  817. * @arg @ref FL_LCD_SEGEN0_SEG15
  818. * @arg @ref FL_LCD_SEGEN0_SEG16
  819. * @arg @ref FL_LCD_SEGEN0_SEG17
  820. * @arg @ref FL_LCD_SEGEN0_SEG18
  821. * @arg @ref FL_LCD_SEGEN0_SEG19
  822. * @arg @ref FL_LCD_SEGEN0_SEG20
  823. * @arg @ref FL_LCD_SEGEN0_SEG21
  824. * @arg @ref FL_LCD_SEGEN0_SEG22
  825. * @arg @ref FL_LCD_SEGEN0_SEG23
  826. * @arg @ref FL_LCD_SEGEN0_SEG24
  827. * @arg @ref FL_LCD_SEGEN0_SEG25
  828. * @arg @ref FL_LCD_SEGEN0_SEG26
  829. * @arg @ref FL_LCD_SEGEN0_SEG27
  830. * @arg @ref FL_LCD_SEGEN0_SEG28
  831. * @arg @ref FL_LCD_SEGEN0_SEG29
  832. * @arg @ref FL_LCD_SEGEN0_SEG30
  833. * @arg @ref FL_LCD_SEGEN0_SEG31
  834. * @retval None
  835. */
  836. __STATIC_INLINE void FL_LCD_EnableSEGEN0(LCD_Type *LCDx, uint32_t SEG)
  837. {
  838. SET_BIT(LCDx->SEGEN0, ((SEG & 0xffffffff) << 0x0U));
  839. }
  840. /**
  841. * @brief Disable LCD SEGx
  842. * @rmtoll SEGEN0 FL_LCD_DisableSEGEN0
  843. * @param LCDx LCD instance
  844. * @param SEG This parameter can be one of the following values:
  845. * @arg @ref FL_LCD_SEGEN0_SEG0
  846. * @arg @ref FL_LCD_SEGEN0_SEG1
  847. * @arg @ref FL_LCD_SEGEN0_SEG2
  848. * @arg @ref FL_LCD_SEGEN0_SEG3
  849. * @arg @ref FL_LCD_SEGEN0_SEG4
  850. * @arg @ref FL_LCD_SEGEN0_SEG5
  851. * @arg @ref FL_LCD_SEGEN0_SEG6
  852. * @arg @ref FL_LCD_SEGEN0_SEG7
  853. * @arg @ref FL_LCD_SEGEN0_SEG8
  854. * @arg @ref FL_LCD_SEGEN0_SEG9
  855. * @arg @ref FL_LCD_SEGEN0_SEG10
  856. * @arg @ref FL_LCD_SEGEN0_SEG11
  857. * @arg @ref FL_LCD_SEGEN0_SEG12
  858. * @arg @ref FL_LCD_SEGEN0_SEG13
  859. * @arg @ref FL_LCD_SEGEN0_SEG14
  860. * @arg @ref FL_LCD_SEGEN0_SEG15
  861. * @arg @ref FL_LCD_SEGEN0_SEG16
  862. * @arg @ref FL_LCD_SEGEN0_SEG17
  863. * @arg @ref FL_LCD_SEGEN0_SEG18
  864. * @arg @ref FL_LCD_SEGEN0_SEG19
  865. * @arg @ref FL_LCD_SEGEN0_SEG20
  866. * @arg @ref FL_LCD_SEGEN0_SEG21
  867. * @arg @ref FL_LCD_SEGEN0_SEG22
  868. * @arg @ref FL_LCD_SEGEN0_SEG23
  869. * @arg @ref FL_LCD_SEGEN0_SEG24
  870. * @arg @ref FL_LCD_SEGEN0_SEG25
  871. * @arg @ref FL_LCD_SEGEN0_SEG26
  872. * @arg @ref FL_LCD_SEGEN0_SEG27
  873. * @arg @ref FL_LCD_SEGEN0_SEG28
  874. * @arg @ref FL_LCD_SEGEN0_SEG29
  875. * @arg @ref FL_LCD_SEGEN0_SEG30
  876. * @arg @ref FL_LCD_SEGEN0_SEG31
  877. * @retval None
  878. */
  879. __STATIC_INLINE void FL_LCD_DisableSEGEN0(LCD_Type *LCDx, uint32_t SEG)
  880. {
  881. CLEAR_BIT(LCDx->SEGEN0, ((SEG & 0xffffffff) << 0x0U));
  882. }
  883. /**
  884. * @}
  885. */
  886. /** @defgroup LCD_FL_EF_Init Initialization and de-initialization functions
  887. * @{
  888. */
  889. FL_ErrorStatus FL_LCD_DeInit(LCD_Type *LCDx);
  890. void FL_LCD_StructInit(FL_LCD_InitTypeDef *initStruct);
  891. FL_ErrorStatus FL_LCD_Init(LCD_Type *LCDx, FL_LCD_InitTypeDef *initStruct);
  892. /**
  893. * @}
  894. */
  895. /** @defgroup LCD_FL_EF_Operation Opeartion functions
  896. * @{
  897. */
  898. void FL_LCD_4COMDisplay(uint32_t *display, uint8_t com, uint8_t seg, uint8_t state);
  899. void FL_LCD_6COMDisplay(uint32_t *display, uint8_t com, uint8_t seg, uint8_t state);
  900. void FL_LCD_8COMDisplay(uint32_t *display, uint8_t com, uint8_t seg, uint8_t state);
  901. /**
  902. * @}
  903. */
  904. /**
  905. * @}
  906. */
  907. /**
  908. * @}
  909. */
  910. #ifdef __cplusplus
  911. }
  912. #endif
  913. #endif /* __FM33LC0XX_FL_LCD_H*/
  914. /*************************Py_Code_Generator Version: 0.1-0.14-0.1 @ 2021-02-02*************************/
  915. /*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/