fm33lc0xx_fl_gpio.h 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966
  1. /**
  2. *******************************************************************************************************
  3. * @file fm33lc0xx_fl_gpio.h
  4. * @author FMSH Application Team
  5. * @brief Head file of GPIO 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_GPIO_H
  23. #define __FM33LC0XX_FL_GPIO_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 GPIO GPIO
  33. * @brief GPIO FL driver
  34. * @{
  35. */
  36. /* Exported types -------------------------------------------------------------------------------------*/
  37. /** @defgroup GPIO_FL_ES_INIT GPIO Exported Init structures
  38. * @{
  39. */
  40. /**
  41. * @brief FL GPIO Init Sturcture definition
  42. */
  43. typedef struct
  44. {
  45. /*! PIN */
  46. uint32_t pin;
  47. /*! 功能模式 */
  48. uint32_t mode;
  49. /*! 输出类型 */
  50. uint32_t outputType;
  51. /*! 上拉使能 */
  52. uint32_t pull;
  53. /*! 数字功能重定向 */
  54. uint32_t remapPin;
  55. } FL_GPIO_InitTypeDef;
  56. /**
  57. * @brief FL GPIO WKUP Init Sturcture definition
  58. */
  59. typedef struct
  60. {
  61. /*! 触发边沿 */
  62. uint32_t polarity;
  63. } FL_WKUP_InitTypeDef;
  64. /**
  65. * @}
  66. */
  67. /* Exported constants ---------------------------------------------------------------------------------*/
  68. /** @defgroup GPIO_FL_Exported_Constants GPIO Exported Constants
  69. * @{
  70. */
  71. #define GPIO_FCR_Pos (0U)
  72. #define GPIO_FCR_Msk (0x3U << GPIO_FCR_Pos)
  73. #define GPIO_FCR GPIO_FCR_Msk
  74. #define GPIO_EXTIEDS_Pos (0U)
  75. #define GPIO_EXTIEDS_Msk (0x3U << GPIO_EXTIEDS_Pos)
  76. #define GPIO_EXTIEDS GPIO_EXTIEDS_Msk
  77. #define GPIO_FOUTSEL_FOUT0_Pos (0U)
  78. #define GPIO_FOUTSEL_FOUT0_Msk (0xfU << GPIO_FOUTSEL_FOUT0_Pos)
  79. #define GPIO_FOUTSEL_FOUT0 GPIO_FOUTSEL_FOUT0_Msk
  80. #define GPIO_FOUTSEL_FOUT1_Pos (4U)
  81. #define GPIO_FOUTSEL_FOUT1_Msk (0xfU << GPIO_FOUTSEL_FOUT1_Pos)
  82. #define GPIO_FOUTSEL_FOUT1 GPIO_FOUTSEL_FOUT1_Msk
  83. #define GPIO_EXTISEL_EXTI0_Pos (0U)
  84. #define GPIO_EXTISEL_EXTI0_Msk (0x3U << GPIO_EXTISEL_EXTI0_Pos)
  85. #define GPIO_EXTISEL_EXTI0 GPIO_EXTISEL_EXTI0_Msk
  86. #define GPIO_EXTISEL_EXTI1_Pos (2U)
  87. #define GPIO_EXTISEL_EXTI1_Msk (0x3U << GPIO_EXTISEL_EXTI1_Pos)
  88. #define GPIO_EXTISEL_EXTI1 GPIO_EXTISEL_EXTI1_Msk
  89. #define GPIO_EXTISEL_EXTI2_Pos (4U)
  90. #define GPIO_EXTISEL_EXTI2_Msk (0x3U << GPIO_EXTISEL_EXTI2_Pos)
  91. #define GPIO_EXTISEL_EXTI2 GPIO_EXTISEL_EXTI2_Msk
  92. #define GPIO_EXTISEL_EXTI3_Pos (6U)
  93. #define GPIO_EXTISEL_EXTI3_Msk (0x3U << GPIO_EXTISEL_EXTI3_Pos)
  94. #define GPIO_EXTISEL_EXTI3 GPIO_EXTISEL_EXTI3_Msk
  95. #define GPIO_EXTISEL_EXTI4_Pos (8U)
  96. #define GPIO_EXTISEL_EXTI4_Msk (0x3U << GPIO_EXTISEL_EXTI4_Pos)
  97. #define GPIO_EXTISEL_EXTI4 GPIO_EXTISEL_EXTI4_Msk
  98. #define GPIO_EXTISEL_EXTI5_Pos (10U)
  99. #define GPIO_EXTISEL_EXTI5_Msk (0x3U << GPIO_EXTISEL_EXTI5_Pos)
  100. #define GPIO_EXTISEL_EXTI5 GPIO_EXTISEL_EXTI5_Msk
  101. #define GPIO_EXTISEL_EXTI6_Pos (12U)
  102. #define GPIO_EXTISEL_EXTI6_Msk (0x3U << GPIO_EXTISEL_EXTI6_Pos)
  103. #define GPIO_EXTISEL_EXTI6 GPIO_EXTISEL_EXTI6_Msk
  104. #define GPIO_EXTISEL_EXTI7_Pos (14U)
  105. #define GPIO_EXTISEL_EXTI7_Msk (0x3U << GPIO_EXTISEL_EXTI7_Pos)
  106. #define GPIO_EXTISEL_EXTI7 GPIO_EXTISEL_EXTI7_Msk
  107. #define GPIO_EXTISEL_EXTI8_Pos (16U)
  108. #define GPIO_EXTISEL_EXTI8_Msk (0x3U << GPIO_EXTISEL_EXTI8_Pos)
  109. #define GPIO_EXTISEL_EXTI8 GPIO_EXTISEL_EXTI8_Msk
  110. #define GPIO_EXTISEL_EXTI9_Pos (18U)
  111. #define GPIO_EXTISEL_EXTI9_Msk (0x3U << GPIO_EXTISEL_EXTI9_Pos)
  112. #define GPIO_EXTISEL_EXTI9 GPIO_EXTISEL_EXTI9_Msk
  113. #define GPIO_EXTISEL_EXTI10_Pos (20U)
  114. #define GPIO_EXTISEL_EXTI10_Msk (0x3U << GPIO_EXTISEL_EXTI10_Pos)
  115. #define GPIO_EXTISEL_EXTI10 GPIO_EXTISEL_EXTI10_Msk
  116. #define GPIO_EXTISEL_EXTI11_Pos (22U)
  117. #define GPIO_EXTISEL_EXTI11_Msk (0x3U << GPIO_EXTISEL_EXTI11_Pos)
  118. #define GPIO_EXTISEL_EXTI11 GPIO_EXTISEL_EXTI11_Msk
  119. #define GPIO_EXTISEL_EXTI12_Pos (24U)
  120. #define GPIO_EXTISEL_EXTI12_Msk (0x3U << GPIO_EXTISEL_EXTI12_Pos)
  121. #define GPIO_EXTISEL_EXTI12 GPIO_EXTISEL_EXTI12_Msk
  122. #define GPIO_EXTISEL_EXTI13_Pos (26U)
  123. #define GPIO_EXTISEL_EXTI13_Msk (0x3U << GPIO_EXTISEL_EXTI13_Pos)
  124. #define GPIO_EXTISEL_EXTI13 GPIO_EXTISEL_EXTI13_Msk
  125. #define GPIO_EXTISEL_EXTI14_Pos (28U)
  126. #define GPIO_EXTISEL_EXTI14_Msk (0x3U << GPIO_EXTISEL_EXTI14_Pos)
  127. #define GPIO_EXTISEL_EXTI14 GPIO_EXTISEL_EXTI14_Msk
  128. #define GPIO_PINWKEN_EN_Pos (0U)
  129. #define GPIO_PINWKEN_EN_Msk (0xffU << GPIO_PINWKEN_EN_Pos)
  130. #define GPIO_PINWKEN_EN GPIO_PINWKEN_EN_Msk
  131. #define GPIO_PINWKEN_WKISEL_Pos (31U)
  132. #define GPIO_PINWKEN_WKISEL_Msk (0x1U << GPIO_PINWKEN_WKISEL_Pos)
  133. #define GPIO_PINWKEN_WKISEL GPIO_PINWKEN_WKISEL_Msk
  134. #define GPIO_PINWKEN_SEL_Pos (8U)
  135. #define GPIO_PINWKEN_SEL_Msk (0x1U << GPIO_PINWKEN_SEL_Pos)
  136. #define GPIO_PINWKEN_SEL GPIO_PINWKEN_SEL_Msk
  137. #define FL_GPIO_PIN_0 (0x1U << 0U)
  138. #define FL_GPIO_PIN_1 (0x1U << 1U)
  139. #define FL_GPIO_PIN_2 (0x1U << 2U)
  140. #define FL_GPIO_PIN_3 (0x1U << 3U)
  141. #define FL_GPIO_PIN_4 (0x1U << 4U)
  142. #define FL_GPIO_PIN_5 (0x1U << 5U)
  143. #define FL_GPIO_PIN_6 (0x1U << 6U)
  144. #define FL_GPIO_PIN_7 (0x1U << 7U)
  145. #define FL_GPIO_PIN_8 (0x1U << 8U)
  146. #define FL_GPIO_PIN_9 (0x1U << 9U)
  147. #define FL_GPIO_PIN_10 (0x1U << 10U)
  148. #define FL_GPIO_PIN_11 (0x1U << 11U)
  149. #define FL_GPIO_PIN_12 (0x1U << 12U)
  150. #define FL_GPIO_PIN_13 (0x1U << 13U)
  151. #define FL_GPIO_PIN_14 (0x1U << 14U)
  152. #define FL_GPIO_PIN_15 (0x1U << 15U)
  153. #define FL_GPIO_PIN_ALL (0xffffU << 0U)
  154. #define FL_GPIO_PIN_ALL_EXCEPTSWD 0xFE7FU
  155. #define FL_GPIO_EXTI_LINE_0 (0x1U << 0U)
  156. #define FL_GPIO_EXTI_LINE_1 (0x1U << 1U)
  157. #define FL_GPIO_EXTI_LINE_2 (0x1U << 2U)
  158. #define FL_GPIO_EXTI_LINE_3 (0x1U << 3U)
  159. #define FL_GPIO_EXTI_LINE_4 (0x1U << 4U)
  160. #define FL_GPIO_EXTI_LINE_5 (0x1U << 5U)
  161. #define FL_GPIO_EXTI_LINE_6 (0x1U << 6U)
  162. #define FL_GPIO_EXTI_LINE_7 (0x1U << 7U)
  163. #define FL_GPIO_EXTI_LINE_8 (0x1U << 8U)
  164. #define FL_GPIO_EXTI_LINE_9 (0x1U << 9U)
  165. #define FL_GPIO_EXTI_LINE_10 (0x1U << 10U)
  166. #define FL_GPIO_EXTI_LINE_11 (0x1U << 11U)
  167. #define FL_GPIO_EXTI_LINE_12 (0x1U << 12U)
  168. #define FL_GPIO_EXTI_LINE_13 (0x1U << 13U)
  169. #define FL_GPIO_EXTI_LINE_14 (0x1U << 14U)
  170. #define FL_GPIO_EXTI_LINE_15 (0x1U << 15U)
  171. #define FL_GPIO_EXTI_LINE_ALL (0xffffU << 0U)
  172. #define FL_GPIO_EXTI_LINE_0_PA0 (0x0U << 0U)
  173. #define FL_GPIO_EXTI_LINE_0_PA1 (0x1U << 0U)
  174. #define FL_GPIO_EXTI_LINE_0_PA2 (0x2U << 0U)
  175. #define FL_GPIO_EXTI_LINE_0_PA3 (0x3U << 0U)
  176. #define FL_GPIO_EXTI_LINE_1_PA4 (0x0U << 2U)
  177. #define FL_GPIO_EXTI_LINE_1_PA5 (0x1U << 2U)
  178. #define FL_GPIO_EXTI_LINE_1_PA6 (0x2U << 2U)
  179. #define FL_GPIO_EXTI_LINE_1_PA7 (0x3U << 2U)
  180. #define FL_GPIO_EXTI_LINE_2_PA8 (0x0U << 4U)
  181. #define FL_GPIO_EXTI_LINE_2_PA9 (0x1U << 4U)
  182. #define FL_GPIO_EXTI_LINE_2_PA10 (0x2U << 4U)
  183. #define FL_GPIO_EXTI_LINE_2_PA11 (0x3U << 4U)
  184. #define FL_GPIO_EXTI_LINE_3_PA12 (0x0U << 6U)
  185. #define FL_GPIO_EXTI_LINE_3_PA13 (0x1U << 6U)
  186. #define FL_GPIO_EXTI_LINE_3_PA14 (0x2U << 6U)
  187. #define FL_GPIO_EXTI_LINE_3_PA15 (0x3U << 6U)
  188. #define FL_GPIO_EXTI_LINE_4_PB0 (0x0U << 8U)
  189. #define FL_GPIO_EXTI_LINE_4_PB1 (0x1U << 8U)
  190. #define FL_GPIO_EXTI_LINE_4_PB2 (0x2U << 8U)
  191. #define FL_GPIO_EXTI_LINE_4_PB3 (0x3U << 8U)
  192. #define FL_GPIO_EXTI_LINE_5_PB4 (0x0U << 10U)
  193. #define FL_GPIO_EXTI_LINE_5_PB5 (0x1U << 10U)
  194. #define FL_GPIO_EXTI_LINE_5_PB6 (0x2U << 10U)
  195. #define FL_GPIO_EXTI_LINE_5_PB7 (0x3U << 10U)
  196. #define FL_GPIO_EXTI_LINE_6_PB8 (0x0U << 12U)
  197. #define FL_GPIO_EXTI_LINE_6_PB9 (0x1U << 12U)
  198. #define FL_GPIO_EXTI_LINE_6_PB10 (0x2U << 12U)
  199. #define FL_GPIO_EXTI_LINE_6_PB11 (0x3U << 12U)
  200. #define FL_GPIO_EXTI_LINE_7_PB12 (0x0U << 14U)
  201. #define FL_GPIO_EXTI_LINE_7_PB13 (0x1U << 14U)
  202. #define FL_GPIO_EXTI_LINE_7_PB14 (0x2U << 14U)
  203. #define FL_GPIO_EXTI_LINE_7_PB15 (0x3U << 14U)
  204. #define FL_GPIO_EXTI_LINE_8_PC0 (0x0U << 16U)
  205. #define FL_GPIO_EXTI_LINE_8_PC1 (0x1U << 16U)
  206. #define FL_GPIO_EXTI_LINE_8_PC2 (0x2U << 16U)
  207. #define FL_GPIO_EXTI_LINE_8_PC3 (0x3U << 16U)
  208. #define FL_GPIO_EXTI_LINE_9_PC4 (0x0U << 18U)
  209. #define FL_GPIO_EXTI_LINE_9_PC5 (0x1U << 18U)
  210. #define FL_GPIO_EXTI_LINE_9_PC6 (0x2U << 18U)
  211. #define FL_GPIO_EXTI_LINE_9_PC7 (0x3U << 18U)
  212. #define FL_GPIO_EXTI_LINE_10_PC8 (0x0U << 20U)
  213. #define FL_GPIO_EXTI_LINE_10_PC9 (0x1U << 20U)
  214. #define FL_GPIO_EXTI_LINE_10_PC10 (0x2U << 20U)
  215. #define FL_GPIO_EXTI_LINE_10_PC11 (0x3U << 20U)
  216. #define FL_GPIO_EXTI_LINE_12_PD0 (0x0U << 24U)
  217. #define FL_GPIO_EXTI_LINE_12_PD1 (0x1U << 24U)
  218. #define FL_GPIO_EXTI_LINE_12_PD2 (0x2U << 24U)
  219. #define FL_GPIO_EXTI_LINE_12_PD3 (0x3U << 24U)
  220. #define FL_GPIO_EXTI_LINE_13_PD4 (0x0U << 26U)
  221. #define FL_GPIO_EXTI_LINE_13_PD5 (0x1U << 26U)
  222. #define FL_GPIO_EXTI_LINE_13_PD6 (0x2U << 26U)
  223. #define FL_GPIO_EXTI_LINE_13_PD7 (0x3U << 26U)
  224. #define FL_GPIO_EXTI_LINE_14_PD8 (0x0U << 28U)
  225. #define FL_GPIO_EXTI_LINE_14_PD9 (0x1U << 28U)
  226. #define FL_GPIO_EXTI_LINE_14_PD10 (0x2U << 28U)
  227. #define FL_GPIO_EXTI_LINE_14_PD11 (0x3U << 28U)
  228. #define FL_GPIO_WAKEUP_0 (0x1U << 0U)
  229. #define FL_GPIO_WAKEUP_1 (0x1U << 1U)
  230. #define FL_GPIO_WAKEUP_2 (0x1U << 2U)
  231. #define FL_GPIO_WAKEUP_3 (0x1U << 3U)
  232. #define FL_GPIO_WAKEUP_4 (0x1U << 4U)
  233. #define FL_GPIO_WAKEUP_5 (0x1U << 5U)
  234. #define FL_GPIO_WAKEUP_6 (0x1U << 6U)
  235. #define FL_GPIO_WAKEUP_7 (0x1U << 7U)
  236. #define FL_GPIO_OUTPUT_PUSHPULL 0x0U
  237. #define FL_GPIO_OUTPUT_OPENDRAIN 0x1U
  238. #define FL_GPIO_MODE_INPUT (0x0U << GPIO_FCR_Pos)
  239. #define FL_GPIO_MODE_OUTPUT (0x1U << GPIO_FCR_Pos)
  240. #define FL_GPIO_MODE_DIGITAL (0x2U << GPIO_FCR_Pos)
  241. #define FL_GPIO_MODE_ANALOG (0x3U << GPIO_FCR_Pos)
  242. #define FL_GPIO_EXTI_TRIGGER_EDGE_RISING (0x0U << GPIO_EXTIEDS_Pos)
  243. #define FL_GPIO_EXTI_TRIGGER_EDGE_FALLING (0x1U << GPIO_EXTIEDS_Pos)
  244. #define FL_GPIO_EXTI_TRIGGER_EDGE_BOTH (0x2U << GPIO_EXTIEDS_Pos)
  245. #define FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE (0x3U << GPIO_EXTIEDS_Pos)
  246. #define FL_GPIO_FOUT0_SELECT_XTLF (0x0U << GPIO_FOUTSEL_FOUT0_Pos)
  247. #define FL_GPIO_FOUT0_SELECT_LPOSC (0x1U << GPIO_FOUTSEL_FOUT0_Pos)
  248. #define FL_GPIO_FOUT0_SELECT_RCHF_DIV64 (0x2U << GPIO_FOUTSEL_FOUT0_Pos)
  249. #define FL_GPIO_FOUT0_SELECT_LSCLK (0x3U << GPIO_FOUTSEL_FOUT0_Pos)
  250. #define FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64 (0x4U << GPIO_FOUTSEL_FOUT0_Pos)
  251. #define FL_GPIO_FOUT0_SELECT_RTCTM (0x5U << GPIO_FOUTSEL_FOUT0_Pos)
  252. #define FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64 (0x6U << GPIO_FOUTSEL_FOUT0_Pos)
  253. #define FL_GPIO_FOUT0_SELECT_RTCCLK64Hz (0x7U << GPIO_FOUTSEL_FOUT0_Pos)
  254. #define FL_GPIO_FOUT0_SELECT_APB1CLK_DIV64 (0x8U << GPIO_FOUTSEL_FOUT0_Pos)
  255. #define FL_GPIO_FOUT0_SELECT_PLLOUTPUT (0x9U << GPIO_FOUTSEL_FOUT0_Pos)
  256. #define FL_GPIO_FOUT0_SELECT_RCMF_PSC (0xaU << GPIO_FOUTSEL_FOUT0_Pos)
  257. #define FL_GPIO_FOUT0_SELECT_RCHF (0xbU << GPIO_FOUTSEL_FOUT0_Pos)
  258. #define FL_GPIO_FOUT0_SELECT_XTHF_DIV64 (0xcU << GPIO_FOUTSEL_FOUT0_Pos)
  259. #define FL_GPIO_FOUT0_SELECT_COMP1_OUTPUT (0xdU << GPIO_FOUTSEL_FOUT0_Pos)
  260. #define FL_GPIO_FOUT0_SELECT_CLK_8K (0xeU << GPIO_FOUTSEL_FOUT0_Pos)
  261. #define FL_GPIO_FOUT0_SELECT_ADC_CLK (0xfU << GPIO_FOUTSEL_FOUT0_Pos)
  262. #define FL_GPIO_FOUT1_SELECT_XTLF (0x0U << GPIO_FOUTSEL_FOUT1_Pos)
  263. #define FL_GPIO_FOUT1_SELECT_LPOSC (0x1U << GPIO_FOUTSEL_FOUT1_Pos)
  264. #define FL_GPIO_FOUT1_SELECT_RCHF_DIV64 (0x2U << GPIO_FOUTSEL_FOUT1_Pos)
  265. #define FL_GPIO_FOUT1_SELECT_LSCLK (0x3U << GPIO_FOUTSEL_FOUT1_Pos)
  266. #define FL_GPIO_FOUT1_SELECT_AHBCLK_DIV64 (0x4U << GPIO_FOUTSEL_FOUT1_Pos)
  267. #define FL_GPIO_FOUT1_SELECT_RTCTM (0x5U << GPIO_FOUTSEL_FOUT1_Pos)
  268. #define FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64 (0x6U << GPIO_FOUTSEL_FOUT1_Pos)
  269. #define FL_GPIO_FOUT1_SELECT_RTCCLK64Hz (0x7U << GPIO_FOUTSEL_FOUT1_Pos)
  270. #define FL_GPIO_FOUT1_SELECT_APB1CLK_DIV64 (0x8U << GPIO_FOUTSEL_FOUT1_Pos)
  271. #define FL_GPIO_FOUT1_SELECT_PLLOUTPUT (0x9U << GPIO_FOUTSEL_FOUT1_Pos)
  272. #define FL_GPIO_FOUT1_SELECT_RCMF_PSC (0xaU << GPIO_FOUTSEL_FOUT1_Pos)
  273. #define FL_GPIO_FOUT1_SELECT_RCHF (0xbU << GPIO_FOUTSEL_FOUT1_Pos)
  274. #define FL_GPIO_FOUT1_SELECT_XTHF_DIV64 (0xcU << GPIO_FOUTSEL_FOUT1_Pos)
  275. #define FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64 (0xdU << GPIO_FOUTSEL_FOUT1_Pos)
  276. #define FL_GPIO_FOUT1_SELECT_CLK_8K (0xeU << GPIO_FOUTSEL_FOUT1_Pos)
  277. #define FL_GPIO_FOUT1_SELECT_COMP2_OUTPUT (0xfU << GPIO_FOUTSEL_FOUT1_Pos)
  278. #define FL_GPIO_WAKEUP_INT_ENTRY_NMI (0x0U << GPIO_PINWKEN_WKISEL_Pos)
  279. #define FL_GPIO_WAKEUP_INT_ENTRY_38 (0x1U << GPIO_PINWKEN_WKISEL_Pos)
  280. #define FL_GPIO_WAKEUP_TRIGGER_RISING (0x1U << GPIO_PINWKEN_SEL_Pos)
  281. #define FL_GPIO_WAKEUP_TRIGGER_FALLING (0x0U << GPIO_PINWKEN_SEL_Pos)
  282. /**
  283. * @}
  284. */
  285. /* Exported functions ---------------------------------------------------------------------------------*/
  286. /** @defgroup GPIO_FL_Exported_Functions GPIO Exported Functions
  287. * @{
  288. */
  289. /**
  290. * @brief GPIOx input enable
  291. * @rmtoll INEN FL_GPIO_EnablePinInput
  292. * @param GPIOx GPIO Port
  293. * @param pin This parameter can be one of the following values:
  294. * @arg @ref FL_GPIO_PIN_0
  295. * @arg @ref FL_GPIO_PIN_1
  296. * @arg @ref FL_GPIO_PIN_2
  297. * @arg @ref FL_GPIO_PIN_3
  298. * @arg @ref FL_GPIO_PIN_4
  299. * @arg @ref FL_GPIO_PIN_5
  300. * @arg @ref FL_GPIO_PIN_6
  301. * @arg @ref FL_GPIO_PIN_7
  302. * @arg @ref FL_GPIO_PIN_8
  303. * @arg @ref FL_GPIO_PIN_9
  304. * @arg @ref FL_GPIO_PIN_10
  305. * @arg @ref FL_GPIO_PIN_11
  306. * @arg @ref FL_GPIO_PIN_12
  307. * @arg @ref FL_GPIO_PIN_13
  308. * @arg @ref FL_GPIO_PIN_14
  309. * @arg @ref FL_GPIO_PIN_15
  310. * @arg @ref FL_GPIO_PIN_ALL
  311. * @retval None
  312. */
  313. __STATIC_INLINE void FL_GPIO_EnablePinInput(GPIO_Type *GPIOx, uint32_t pin)
  314. {
  315. SET_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U));
  316. }
  317. /**
  318. * @brief CPIOx input disable
  319. * @rmtoll INEN FL_GPIO_DisablePinInput
  320. * @param GPIOx GPIO Port
  321. * @param pin This parameter can be one of the following values:
  322. * @arg @ref FL_GPIO_PIN_0
  323. * @arg @ref FL_GPIO_PIN_1
  324. * @arg @ref FL_GPIO_PIN_2
  325. * @arg @ref FL_GPIO_PIN_3
  326. * @arg @ref FL_GPIO_PIN_4
  327. * @arg @ref FL_GPIO_PIN_5
  328. * @arg @ref FL_GPIO_PIN_6
  329. * @arg @ref FL_GPIO_PIN_7
  330. * @arg @ref FL_GPIO_PIN_8
  331. * @arg @ref FL_GPIO_PIN_9
  332. * @arg @ref FL_GPIO_PIN_10
  333. * @arg @ref FL_GPIO_PIN_11
  334. * @arg @ref FL_GPIO_PIN_12
  335. * @arg @ref FL_GPIO_PIN_13
  336. * @arg @ref FL_GPIO_PIN_14
  337. * @arg @ref FL_GPIO_PIN_15
  338. * @arg @ref FL_GPIO_PIN_ALL
  339. * @retval None
  340. */
  341. __STATIC_INLINE void FL_GPIO_DisablePinInput(GPIO_Type *GPIOx, uint32_t pin)
  342. {
  343. CLEAR_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U));
  344. }
  345. /**
  346. * @brief Get GPIOx input enable status
  347. * @rmtoll INEN FL_GPIO_IsEnabledPinInput
  348. * @param GPIOx GPIO Port
  349. * @param pin This parameter can be one of the following values:
  350. * @arg @ref FL_GPIO_PIN_0
  351. * @arg @ref FL_GPIO_PIN_1
  352. * @arg @ref FL_GPIO_PIN_2
  353. * @arg @ref FL_GPIO_PIN_3
  354. * @arg @ref FL_GPIO_PIN_4
  355. * @arg @ref FL_GPIO_PIN_5
  356. * @arg @ref FL_GPIO_PIN_6
  357. * @arg @ref FL_GPIO_PIN_7
  358. * @arg @ref FL_GPIO_PIN_8
  359. * @arg @ref FL_GPIO_PIN_9
  360. * @arg @ref FL_GPIO_PIN_10
  361. * @arg @ref FL_GPIO_PIN_11
  362. * @arg @ref FL_GPIO_PIN_12
  363. * @arg @ref FL_GPIO_PIN_13
  364. * @arg @ref FL_GPIO_PIN_14
  365. * @arg @ref FL_GPIO_PIN_15
  366. * @retval State of bit (1 or 0).
  367. */
  368. __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinInput(GPIO_Type *GPIOx, uint32_t pin)
  369. {
  370. return (uint32_t)(READ_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
  371. }
  372. /**
  373. * @brief GPIOx Pull-Up enable
  374. * @rmtoll PUEN FL_GPIO_EnablePinPullup
  375. * @param GPIOx GPIO Port
  376. * @param pin This parameter can be one of the following values:
  377. * @arg @ref FL_GPIO_PIN_0
  378. * @arg @ref FL_GPIO_PIN_1
  379. * @arg @ref FL_GPIO_PIN_2
  380. * @arg @ref FL_GPIO_PIN_3
  381. * @arg @ref FL_GPIO_PIN_4
  382. * @arg @ref FL_GPIO_PIN_5
  383. * @arg @ref FL_GPIO_PIN_6
  384. * @arg @ref FL_GPIO_PIN_7
  385. * @arg @ref FL_GPIO_PIN_8
  386. * @arg @ref FL_GPIO_PIN_9
  387. * @arg @ref FL_GPIO_PIN_10
  388. * @arg @ref FL_GPIO_PIN_11
  389. * @arg @ref FL_GPIO_PIN_12
  390. * @arg @ref FL_GPIO_PIN_13
  391. * @arg @ref FL_GPIO_PIN_14
  392. * @arg @ref FL_GPIO_PIN_15
  393. * @arg @ref FL_GPIO_PIN_ALL
  394. * @retval None
  395. */
  396. __STATIC_INLINE void FL_GPIO_EnablePinPullup(GPIO_Type *GPIOx, uint32_t pin)
  397. {
  398. SET_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U));
  399. }
  400. /**
  401. * @brief GPIOx Pull-Up disable
  402. * @rmtoll PUEN FL_GPIO_DisablePinPullup
  403. * @param GPIOx GPIO Port
  404. * @param pin This parameter can be one of the following values:
  405. * @arg @ref FL_GPIO_PIN_0
  406. * @arg @ref FL_GPIO_PIN_1
  407. * @arg @ref FL_GPIO_PIN_2
  408. * @arg @ref FL_GPIO_PIN_3
  409. * @arg @ref FL_GPIO_PIN_4
  410. * @arg @ref FL_GPIO_PIN_5
  411. * @arg @ref FL_GPIO_PIN_6
  412. * @arg @ref FL_GPIO_PIN_7
  413. * @arg @ref FL_GPIO_PIN_8
  414. * @arg @ref FL_GPIO_PIN_9
  415. * @arg @ref FL_GPIO_PIN_10
  416. * @arg @ref FL_GPIO_PIN_11
  417. * @arg @ref FL_GPIO_PIN_12
  418. * @arg @ref FL_GPIO_PIN_13
  419. * @arg @ref FL_GPIO_PIN_14
  420. * @arg @ref FL_GPIO_PIN_15
  421. * @arg @ref FL_GPIO_PIN_ALL
  422. * @retval None
  423. */
  424. __STATIC_INLINE void FL_GPIO_DisablePinPullup(GPIO_Type *GPIOx, uint32_t pin)
  425. {
  426. CLEAR_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U));
  427. }
  428. /**
  429. * @brief Get GPIOx Pull-Up enable status
  430. * @rmtoll PUEN FL_GPIO_IsEnabledPinPullup
  431. * @param GPIOx GPIO Port
  432. * @param pin This parameter can be one of the following values:
  433. * @arg @ref FL_GPIO_PIN_0
  434. * @arg @ref FL_GPIO_PIN_1
  435. * @arg @ref FL_GPIO_PIN_2
  436. * @arg @ref FL_GPIO_PIN_3
  437. * @arg @ref FL_GPIO_PIN_4
  438. * @arg @ref FL_GPIO_PIN_5
  439. * @arg @ref FL_GPIO_PIN_6
  440. * @arg @ref FL_GPIO_PIN_7
  441. * @arg @ref FL_GPIO_PIN_8
  442. * @arg @ref FL_GPIO_PIN_9
  443. * @arg @ref FL_GPIO_PIN_10
  444. * @arg @ref FL_GPIO_PIN_11
  445. * @arg @ref FL_GPIO_PIN_12
  446. * @arg @ref FL_GPIO_PIN_13
  447. * @arg @ref FL_GPIO_PIN_14
  448. * @arg @ref FL_GPIO_PIN_15
  449. * @retval State of bit (1 or 0).
  450. */
  451. __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinPullup(GPIO_Type *GPIOx, uint32_t pin)
  452. {
  453. return (uint32_t)(READ_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
  454. }
  455. /**
  456. * @brief GPIOx Open-Drain enable
  457. * @rmtoll ODEN FL_GPIO_EnablePinOpenDrain
  458. * @param GPIOx GPIO Port
  459. * @param pin This parameter can be one of the following values:
  460. * @arg @ref FL_GPIO_PIN_0
  461. * @arg @ref FL_GPIO_PIN_1
  462. * @arg @ref FL_GPIO_PIN_2
  463. * @arg @ref FL_GPIO_PIN_3
  464. * @arg @ref FL_GPIO_PIN_4
  465. * @arg @ref FL_GPIO_PIN_5
  466. * @arg @ref FL_GPIO_PIN_6
  467. * @arg @ref FL_GPIO_PIN_7
  468. * @arg @ref FL_GPIO_PIN_8
  469. * @arg @ref FL_GPIO_PIN_9
  470. * @arg @ref FL_GPIO_PIN_10
  471. * @arg @ref FL_GPIO_PIN_11
  472. * @arg @ref FL_GPIO_PIN_12
  473. * @arg @ref FL_GPIO_PIN_13
  474. * @arg @ref FL_GPIO_PIN_14
  475. * @arg @ref FL_GPIO_PIN_15
  476. * @arg @ref FL_GPIO_PIN_ALL
  477. * @retval None
  478. */
  479. __STATIC_INLINE void FL_GPIO_EnablePinOpenDrain(GPIO_Type *GPIOx, uint32_t pin)
  480. {
  481. SET_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U));
  482. }
  483. /**
  484. * @brief Open-Drain disable
  485. * @rmtoll ODEN FL_GPIO_DisablePinOpenDrain
  486. * @param GPIOx GPIO Port
  487. * @param pin This parameter can be one of the following values:
  488. * @arg @ref FL_GPIO_PIN_0
  489. * @arg @ref FL_GPIO_PIN_1
  490. * @arg @ref FL_GPIO_PIN_2
  491. * @arg @ref FL_GPIO_PIN_3
  492. * @arg @ref FL_GPIO_PIN_4
  493. * @arg @ref FL_GPIO_PIN_5
  494. * @arg @ref FL_GPIO_PIN_6
  495. * @arg @ref FL_GPIO_PIN_7
  496. * @arg @ref FL_GPIO_PIN_8
  497. * @arg @ref FL_GPIO_PIN_9
  498. * @arg @ref FL_GPIO_PIN_10
  499. * @arg @ref FL_GPIO_PIN_11
  500. * @arg @ref FL_GPIO_PIN_12
  501. * @arg @ref FL_GPIO_PIN_13
  502. * @arg @ref FL_GPIO_PIN_14
  503. * @arg @ref FL_GPIO_PIN_15
  504. * @arg @ref FL_GPIO_PIN_ALL
  505. * @retval None
  506. */
  507. __STATIC_INLINE void FL_GPIO_DisablePinOpenDrain(GPIO_Type *GPIOx, uint32_t pin)
  508. {
  509. CLEAR_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U));
  510. }
  511. /**
  512. * @brief Get Open-Drain enable status
  513. * @rmtoll ODEN FL_GPIO_IsEnabledPinOpenDrain
  514. * @param GPIOx GPIO Port
  515. * @param pin This parameter can be one of the following values:
  516. * @arg @ref FL_GPIO_PIN_0
  517. * @arg @ref FL_GPIO_PIN_1
  518. * @arg @ref FL_GPIO_PIN_2
  519. * @arg @ref FL_GPIO_PIN_3
  520. * @arg @ref FL_GPIO_PIN_4
  521. * @arg @ref FL_GPIO_PIN_5
  522. * @arg @ref FL_GPIO_PIN_6
  523. * @arg @ref FL_GPIO_PIN_7
  524. * @arg @ref FL_GPIO_PIN_8
  525. * @arg @ref FL_GPIO_PIN_9
  526. * @arg @ref FL_GPIO_PIN_10
  527. * @arg @ref FL_GPIO_PIN_11
  528. * @arg @ref FL_GPIO_PIN_12
  529. * @arg @ref FL_GPIO_PIN_13
  530. * @arg @ref FL_GPIO_PIN_14
  531. * @arg @ref FL_GPIO_PIN_15
  532. * @retval State of bit (1 or 0).
  533. */
  534. __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinOpenDrain(GPIO_Type *GPIOx, uint32_t pin)
  535. {
  536. return (uint32_t)(READ_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
  537. }
  538. /**
  539. * @brief GPIOx digital function enable
  540. * @rmtoll DFS FL_GPIO_EnablePinRemap
  541. * @param GPIOx GPIO Port
  542. * @param pin This parameter can be one of the following values:
  543. * @arg @ref FL_GPIO_PIN_0
  544. * @arg @ref FL_GPIO_PIN_1
  545. * @arg @ref FL_GPIO_PIN_2
  546. * @arg @ref FL_GPIO_PIN_3
  547. * @arg @ref FL_GPIO_PIN_4
  548. * @arg @ref FL_GPIO_PIN_5
  549. * @arg @ref FL_GPIO_PIN_6
  550. * @arg @ref FL_GPIO_PIN_7
  551. * @arg @ref FL_GPIO_PIN_8
  552. * @arg @ref FL_GPIO_PIN_9
  553. * @arg @ref FL_GPIO_PIN_10
  554. * @arg @ref FL_GPIO_PIN_11
  555. * @arg @ref FL_GPIO_PIN_12
  556. * @arg @ref FL_GPIO_PIN_13
  557. * @arg @ref FL_GPIO_PIN_14
  558. * @arg @ref FL_GPIO_PIN_15
  559. * @arg @ref FL_GPIO_PIN_ALL
  560. * @retval None
  561. */
  562. __STATIC_INLINE void FL_GPIO_EnablePinRemap(GPIO_Type *GPIOx, uint32_t pin)
  563. {
  564. SET_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U));
  565. }
  566. /**
  567. * @brief GPIOx digital function disable
  568. * @rmtoll DFS FL_GPIO_DisablePinRemap
  569. * @param GPIOx GPIO Port
  570. * @param pin This parameter can be one of the following values:
  571. * @arg @ref FL_GPIO_PIN_0
  572. * @arg @ref FL_GPIO_PIN_1
  573. * @arg @ref FL_GPIO_PIN_2
  574. * @arg @ref FL_GPIO_PIN_3
  575. * @arg @ref FL_GPIO_PIN_4
  576. * @arg @ref FL_GPIO_PIN_5
  577. * @arg @ref FL_GPIO_PIN_6
  578. * @arg @ref FL_GPIO_PIN_7
  579. * @arg @ref FL_GPIO_PIN_8
  580. * @arg @ref FL_GPIO_PIN_9
  581. * @arg @ref FL_GPIO_PIN_10
  582. * @arg @ref FL_GPIO_PIN_11
  583. * @arg @ref FL_GPIO_PIN_12
  584. * @arg @ref FL_GPIO_PIN_13
  585. * @arg @ref FL_GPIO_PIN_14
  586. * @arg @ref FL_GPIO_PIN_15
  587. * @arg @ref FL_GPIO_PIN_ALL
  588. * @retval None
  589. */
  590. __STATIC_INLINE void FL_GPIO_DisablePinRemap(GPIO_Type *GPIOx, uint32_t pin)
  591. {
  592. CLEAR_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U));
  593. }
  594. /**
  595. * @brief Get GPIOx digital function enable status
  596. * @rmtoll DFS FL_GPIO_IsEnabledPinRemap
  597. * @param GPIOx GPIO Port
  598. * @param pin This parameter can be one of the following values:
  599. * @arg @ref FL_GPIO_PIN_0
  600. * @arg @ref FL_GPIO_PIN_1
  601. * @arg @ref FL_GPIO_PIN_2
  602. * @arg @ref FL_GPIO_PIN_3
  603. * @arg @ref FL_GPIO_PIN_4
  604. * @arg @ref FL_GPIO_PIN_5
  605. * @arg @ref FL_GPIO_PIN_6
  606. * @arg @ref FL_GPIO_PIN_7
  607. * @arg @ref FL_GPIO_PIN_8
  608. * @arg @ref FL_GPIO_PIN_9
  609. * @arg @ref FL_GPIO_PIN_10
  610. * @arg @ref FL_GPIO_PIN_11
  611. * @arg @ref FL_GPIO_PIN_12
  612. * @arg @ref FL_GPIO_PIN_13
  613. * @arg @ref FL_GPIO_PIN_14
  614. * @arg @ref FL_GPIO_PIN_15
  615. * @retval State of bit (1 or 0).
  616. */
  617. __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinRemap(GPIO_Type *GPIOx, uint32_t pin)
  618. {
  619. return (uint32_t)(READ_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
  620. }
  621. /**
  622. * @brief GPIOx analog channel enable
  623. * @rmtoll ANEN FL_GPIO_EnablePinAnalogSwitch
  624. * @param GPIOx GPIO Port
  625. * @param pin This parameter can be one of the following values:
  626. * @arg @ref FL_GPIO_PIN_0
  627. * @arg @ref FL_GPIO_PIN_1
  628. * @arg @ref FL_GPIO_PIN_2
  629. * @arg @ref FL_GPIO_PIN_3
  630. * @arg @ref FL_GPIO_PIN_4
  631. * @arg @ref FL_GPIO_PIN_5
  632. * @arg @ref FL_GPIO_PIN_6
  633. * @arg @ref FL_GPIO_PIN_7
  634. * @arg @ref FL_GPIO_PIN_8
  635. * @arg @ref FL_GPIO_PIN_9
  636. * @arg @ref FL_GPIO_PIN_10
  637. * @arg @ref FL_GPIO_PIN_11
  638. * @arg @ref FL_GPIO_PIN_12
  639. * @arg @ref FL_GPIO_PIN_13
  640. * @arg @ref FL_GPIO_PIN_14
  641. * @arg @ref FL_GPIO_PIN_15
  642. * @arg @ref FL_GPIO_PIN_ALL
  643. * @arg @ref FL_GPIO_EXTI_LINE_0
  644. * @arg @ref FL_GPIO_EXTI_LINE_1
  645. * @arg @ref FL_GPIO_EXTI_LINE_2
  646. * @arg @ref FL_GPIO_EXTI_LINE_3
  647. * @arg @ref FL_GPIO_EXTI_LINE_4
  648. * @arg @ref FL_GPIO_EXTI_LINE_7
  649. * @arg @ref FL_GPIO_EXTI_LINE_8
  650. * @arg @ref FL_GPIO_EXTI_LINE_9
  651. * @retval None
  652. */
  653. __STATIC_INLINE void FL_GPIO_EnablePinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin)
  654. {
  655. SET_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U));
  656. }
  657. /**
  658. * @brief GPIOx analog channel disable
  659. * @rmtoll ANEN FL_GPIO_DisablePinAnalogSwitch
  660. * @param GPIOx GPIO Port
  661. * @param pin This parameter can be one of the following values:
  662. * @arg @ref FL_GPIO_PIN_0
  663. * @arg @ref FL_GPIO_PIN_1
  664. * @arg @ref FL_GPIO_PIN_2
  665. * @arg @ref FL_GPIO_PIN_3
  666. * @arg @ref FL_GPIO_PIN_4
  667. * @arg @ref FL_GPIO_PIN_5
  668. * @arg @ref FL_GPIO_PIN_6
  669. * @arg @ref FL_GPIO_PIN_7
  670. * @arg @ref FL_GPIO_PIN_8
  671. * @arg @ref FL_GPIO_PIN_9
  672. * @arg @ref FL_GPIO_PIN_10
  673. * @arg @ref FL_GPIO_PIN_11
  674. * @arg @ref FL_GPIO_PIN_12
  675. * @arg @ref FL_GPIO_PIN_13
  676. * @arg @ref FL_GPIO_PIN_14
  677. * @arg @ref FL_GPIO_PIN_15
  678. * @arg @ref FL_GPIO_PIN_ALL
  679. * @retval None
  680. */
  681. __STATIC_INLINE void FL_GPIO_DisablePinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin)
  682. {
  683. CLEAR_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U));
  684. }
  685. /**
  686. * @brief Get GPIOx analog channel enable status
  687. * @rmtoll ANEN FL_GPIO_IsEnabledPinAnalogSwitch
  688. * @param GPIOx GPIO Port
  689. * @param pin This parameter can be one of the following values:
  690. * @arg @ref FL_GPIO_PIN_0
  691. * @arg @ref FL_GPIO_PIN_1
  692. * @arg @ref FL_GPIO_PIN_2
  693. * @arg @ref FL_GPIO_PIN_3
  694. * @arg @ref FL_GPIO_PIN_4
  695. * @arg @ref FL_GPIO_PIN_5
  696. * @arg @ref FL_GPIO_PIN_6
  697. * @arg @ref FL_GPIO_PIN_7
  698. * @arg @ref FL_GPIO_PIN_8
  699. * @arg @ref FL_GPIO_PIN_9
  700. * @arg @ref FL_GPIO_PIN_10
  701. * @arg @ref FL_GPIO_PIN_11
  702. * @arg @ref FL_GPIO_PIN_12
  703. * @arg @ref FL_GPIO_PIN_13
  704. * @arg @ref FL_GPIO_PIN_14
  705. * @arg @ref FL_GPIO_PIN_15
  706. * @arg @ref FL_GPIO_PIN_ALL
  707. * @retval State of bit (1 or 0).
  708. */
  709. __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin)
  710. {
  711. return (uint32_t)(READ_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
  712. }
  713. /**
  714. * @brief Set Portx mode
  715. * @rmtoll FCR FL_GPIO_SetPinMode
  716. * @param GPIOx GPIO Port
  717. * @param pin This parameter can be one of the following values:
  718. * @arg @ref FL_GPIO_PIN_0
  719. * @arg @ref FL_GPIO_PIN_1
  720. * @arg @ref FL_GPIO_PIN_2
  721. * @arg @ref FL_GPIO_PIN_3
  722. * @arg @ref FL_GPIO_PIN_4
  723. * @arg @ref FL_GPIO_PIN_5
  724. * @arg @ref FL_GPIO_PIN_6
  725. * @arg @ref FL_GPIO_PIN_7
  726. * @arg @ref FL_GPIO_PIN_8
  727. * @arg @ref FL_GPIO_PIN_9
  728. * @arg @ref FL_GPIO_PIN_10
  729. * @arg @ref FL_GPIO_PIN_11
  730. * @arg @ref FL_GPIO_PIN_12
  731. * @arg @ref FL_GPIO_PIN_13
  732. * @arg @ref FL_GPIO_PIN_14
  733. * @arg @ref FL_GPIO_PIN_15
  734. * @param mode This parameter can be one of the following values:
  735. * @arg @ref FL_GPIO_MODE_INPUT
  736. * @arg @ref FL_GPIO_MODE_OUTPUT
  737. * @arg @ref FL_GPIO_MODE_DIGITAL
  738. * @arg @ref FL_GPIO_MODE_ANALOG
  739. * @retval None
  740. */
  741. __STATIC_INLINE void FL_GPIO_SetPinMode(GPIO_Type *GPIOx, uint32_t pin, uint32_t mode)
  742. {
  743. MODIFY_REG(GPIOx->FCR, ((pin * pin) * GPIO_FCR), ((pin * pin) * mode));
  744. }
  745. /**
  746. * @brief Get Portx mode
  747. * @rmtoll FCR FL_GPIO_GetPinMode
  748. * @param GPIOx GPIO Port
  749. * @param pin This parameter can be one of the following values:
  750. * @arg @ref FL_GPIO_PIN_0
  751. * @arg @ref FL_GPIO_PIN_1
  752. * @arg @ref FL_GPIO_PIN_2
  753. * @arg @ref FL_GPIO_PIN_3
  754. * @arg @ref FL_GPIO_PIN_4
  755. * @arg @ref FL_GPIO_PIN_5
  756. * @arg @ref FL_GPIO_PIN_6
  757. * @arg @ref FL_GPIO_PIN_7
  758. * @arg @ref FL_GPIO_PIN_8
  759. * @arg @ref FL_GPIO_PIN_9
  760. * @arg @ref FL_GPIO_PIN_10
  761. * @arg @ref FL_GPIO_PIN_11
  762. * @arg @ref FL_GPIO_PIN_12
  763. * @arg @ref FL_GPIO_PIN_13
  764. * @arg @ref FL_GPIO_PIN_14
  765. * @arg @ref FL_GPIO_PIN_15
  766. * @retval Returned value can be one of the following values:
  767. * @arg @ref FL_GPIO_MODE_INPUT
  768. * @arg @ref FL_GPIO_MODE_OUTPUT
  769. * @arg @ref FL_GPIO_MODE_DIGITAL
  770. * @arg @ref FL_GPIO_MODE_ANALOG
  771. */
  772. __STATIC_INLINE uint32_t FL_GPIO_GetPinMode(GPIO_Type *GPIOx, uint32_t pin)
  773. {
  774. return (uint32_t)(READ_BIT(GPIOx->FCR, ((pin * pin) * GPIO_FCR)) / (pin * pin));
  775. }
  776. /**
  777. * @brief Set GPIO output data
  778. * @rmtoll DO FL_GPIO_WriteOutputPort
  779. * @param GPIOx GPIO Port
  780. * @param output Level value for each pin of the port
  781. * @retval None
  782. */
  783. __STATIC_INLINE void FL_GPIO_WriteOutputPort(GPIO_Type *GPIOx, uint32_t output)
  784. {
  785. MODIFY_REG(GPIOx->DO, (0xffffU << 0U), (output << 0U));
  786. }
  787. /**
  788. * @brief Get GPIO output data
  789. * @rmtoll DO FL_GPIO_ReadOutputPort
  790. * @param GPIOx GPIO Port
  791. * @retval Output data register value of port
  792. */
  793. __STATIC_INLINE uint32_t FL_GPIO_ReadOutputPort(GPIO_Type *GPIOx)
  794. {
  795. return (uint32_t)(READ_BIT(GPIOx->DO, 0xffffU) >> 0U);
  796. }
  797. /**
  798. * @brief Get GPIO output pin status
  799. * @rmtoll DO FL_GPIO_GetOutputPin
  800. * @param GPIOx GPIO Port
  801. * @param pin This parameter can be one of the following values:
  802. * @arg @ref FL_GPIO_PIN_0
  803. * @arg @ref FL_GPIO_PIN_1
  804. * @arg @ref FL_GPIO_PIN_2
  805. * @arg @ref FL_GPIO_PIN_3
  806. * @arg @ref FL_GPIO_PIN_4
  807. * @arg @ref FL_GPIO_PIN_5
  808. * @arg @ref FL_GPIO_PIN_6
  809. * @arg @ref FL_GPIO_PIN_7
  810. * @arg @ref FL_GPIO_PIN_8
  811. * @arg @ref FL_GPIO_PIN_9
  812. * @arg @ref FL_GPIO_PIN_10
  813. * @arg @ref FL_GPIO_PIN_11
  814. * @arg @ref FL_GPIO_PIN_12
  815. * @arg @ref FL_GPIO_PIN_13
  816. * @arg @ref FL_GPIO_PIN_14
  817. * @arg @ref FL_GPIO_PIN_15
  818. * @retval State of bit (1 or 0).
  819. */
  820. __STATIC_INLINE uint32_t FL_GPIO_GetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
  821. {
  822. return (uint32_t)(READ_BIT(GPIOx->DO, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
  823. }
  824. /**
  825. * @brief Toggle output pin
  826. * @rmtoll DO FL_GPIO_ToggleOutputPin
  827. * @param GPIOx GPIO Port
  828. * @param pin This parameter can be one of the following values:
  829. * @arg @ref FL_GPIO_PIN_0
  830. * @arg @ref FL_GPIO_PIN_1
  831. * @arg @ref FL_GPIO_PIN_2
  832. * @arg @ref FL_GPIO_PIN_3
  833. * @arg @ref FL_GPIO_PIN_4
  834. * @arg @ref FL_GPIO_PIN_5
  835. * @arg @ref FL_GPIO_PIN_6
  836. * @arg @ref FL_GPIO_PIN_7
  837. * @arg @ref FL_GPIO_PIN_8
  838. * @arg @ref FL_GPIO_PIN_9
  839. * @arg @ref FL_GPIO_PIN_10
  840. * @arg @ref FL_GPIO_PIN_11
  841. * @arg @ref FL_GPIO_PIN_12
  842. * @arg @ref FL_GPIO_PIN_13
  843. * @arg @ref FL_GPIO_PIN_14
  844. * @arg @ref FL_GPIO_PIN_15
  845. * @arg @ref FL_GPIO_PIN_ALL
  846. * @retval None
  847. */
  848. __STATIC_INLINE void FL_GPIO_ToggleOutputPin(GPIO_Type *GPIOx, uint32_t pin)
  849. {
  850. if(pin&GPIOx->DO)
  851. {
  852. WRITE_REG(GPIOx->DRST, pin);
  853. }
  854. else
  855. {
  856. WRITE_REG(GPIOx->DSET, pin);
  857. }
  858. }
  859. /**
  860. * @brief Get input data
  861. * @rmtoll DIN FL_GPIO_ReadInputPort
  862. * @param GPIOx GPIO Port
  863. * @retval Input data register value of port
  864. */
  865. __STATIC_INLINE uint32_t FL_GPIO_ReadInputPort(GPIO_Type *GPIOx)
  866. {
  867. return (uint32_t)(READ_BIT(GPIOx->DIN, 0xffffU) >> 0U);
  868. }
  869. /**
  870. * @brief Get GPIO input set status
  871. * @rmtoll DIN FL_GPIO_GetInputPin
  872. * @param GPIOx GPIO Port
  873. * @param pin This parameter can be one of the following values:
  874. * @arg @ref FL_GPIO_PIN_0
  875. * @arg @ref FL_GPIO_PIN_1
  876. * @arg @ref FL_GPIO_PIN_2
  877. * @arg @ref FL_GPIO_PIN_3
  878. * @arg @ref FL_GPIO_PIN_4
  879. * @arg @ref FL_GPIO_PIN_5
  880. * @arg @ref FL_GPIO_PIN_6
  881. * @arg @ref FL_GPIO_PIN_7
  882. * @arg @ref FL_GPIO_PIN_8
  883. * @arg @ref FL_GPIO_PIN_9
  884. * @arg @ref FL_GPIO_PIN_10
  885. * @arg @ref FL_GPIO_PIN_11
  886. * @arg @ref FL_GPIO_PIN_12
  887. * @arg @ref FL_GPIO_PIN_13
  888. * @arg @ref FL_GPIO_PIN_14
  889. * @arg @ref FL_GPIO_PIN_15
  890. * @retval State of bit (1 or 0).
  891. */
  892. __STATIC_INLINE uint32_t FL_GPIO_GetInputPin(GPIO_Type *GPIOx, uint32_t pin)
  893. {
  894. return (uint32_t)(READ_BIT(GPIOx->DIN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
  895. }
  896. /**
  897. * @brief Set pin output 1
  898. * @rmtoll DSET FL_GPIO_SetOutputPin
  899. * @param GPIOx GPIO Port
  900. * @param pin This parameter can be one of the following values:
  901. * @arg @ref FL_GPIO_PIN_0
  902. * @arg @ref FL_GPIO_PIN_1
  903. * @arg @ref FL_GPIO_PIN_2
  904. * @arg @ref FL_GPIO_PIN_3
  905. * @arg @ref FL_GPIO_PIN_4
  906. * @arg @ref FL_GPIO_PIN_5
  907. * @arg @ref FL_GPIO_PIN_6
  908. * @arg @ref FL_GPIO_PIN_7
  909. * @arg @ref FL_GPIO_PIN_8
  910. * @arg @ref FL_GPIO_PIN_9
  911. * @arg @ref FL_GPIO_PIN_10
  912. * @arg @ref FL_GPIO_PIN_11
  913. * @arg @ref FL_GPIO_PIN_12
  914. * @arg @ref FL_GPIO_PIN_13
  915. * @arg @ref FL_GPIO_PIN_14
  916. * @arg @ref FL_GPIO_PIN_15
  917. * @arg @ref FL_GPIO_PIN_ALL
  918. * @retval None
  919. */
  920. __STATIC_INLINE void FL_GPIO_SetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
  921. {
  922. SET_BIT(GPIOx->DSET, ((pin & 0xffff) << 0x0U));
  923. }
  924. /**
  925. * @brief Set pin output 0
  926. * @rmtoll DRST FL_GPIO_ResetOutputPin
  927. * @param GPIOx GPIO Port
  928. * @param pin This parameter can be one of the following values:
  929. * @arg @ref FL_GPIO_PIN_0
  930. * @arg @ref FL_GPIO_PIN_1
  931. * @arg @ref FL_GPIO_PIN_2
  932. * @arg @ref FL_GPIO_PIN_3
  933. * @arg @ref FL_GPIO_PIN_4
  934. * @arg @ref FL_GPIO_PIN_5
  935. * @arg @ref FL_GPIO_PIN_6
  936. * @arg @ref FL_GPIO_PIN_7
  937. * @arg @ref FL_GPIO_PIN_8
  938. * @arg @ref FL_GPIO_PIN_9
  939. * @arg @ref FL_GPIO_PIN_10
  940. * @arg @ref FL_GPIO_PIN_11
  941. * @arg @ref FL_GPIO_PIN_12
  942. * @arg @ref FL_GPIO_PIN_13
  943. * @arg @ref FL_GPIO_PIN_14
  944. * @arg @ref FL_GPIO_PIN_15
  945. * @arg @ref FL_GPIO_PIN_ALL
  946. * @retval None
  947. */
  948. __STATIC_INLINE void FL_GPIO_ResetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
  949. {
  950. SET_BIT(GPIOx->DRST, ((pin & 0xffff) << 0x0U));
  951. }
  952. /**
  953. * @brief EXTI edge select
  954. * @rmtoll EXTIEDS FL_GPIO_SetTriggerEdge
  955. * @param GPIOx GPIO Port
  956. * @param line This parameter can be one of the following values:
  957. * @arg @ref FL_GPIO_EXTI_LINE_0
  958. * @arg @ref FL_GPIO_EXTI_LINE_1
  959. * @arg @ref FL_GPIO_EXTI_LINE_2
  960. * @arg @ref FL_GPIO_EXTI_LINE_3
  961. * @arg @ref FL_GPIO_EXTI_LINE_4
  962. * @arg @ref FL_GPIO_EXTI_LINE_5
  963. * @arg @ref FL_GPIO_EXTI_LINE_6
  964. * @arg @ref FL_GPIO_EXTI_LINE_7
  965. * @arg @ref FL_GPIO_EXTI_LINE_8
  966. * @arg @ref FL_GPIO_EXTI_LINE_9
  967. * @arg @ref FL_GPIO_EXTI_LINE_10
  968. * @arg @ref FL_GPIO_EXTI_LINE_11
  969. * @arg @ref FL_GPIO_EXTI_LINE_12
  970. * @arg @ref FL_GPIO_EXTI_LINE_13
  971. * @arg @ref FL_GPIO_EXTI_LINE_14
  972. * @arg @ref FL_GPIO_EXTI_LINE_15
  973. * @param edge This parameter can be one of the following values:
  974. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING
  975. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING
  976. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH
  977. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE
  978. * @retval None
  979. */
  980. __STATIC_INLINE void FL_GPIO_SetTriggerEdge(GPIO_COMMON_Type *GPIOx, uint32_t line, uint32_t edge)
  981. {
  982. MODIFY_REG(GPIOx->EXTIEDS, ((line * line) * GPIO_EXTIEDS), ((line * line) * edge));
  983. }
  984. /**
  985. * @brief Get EXTI edge select
  986. * @rmtoll EXTIEDS FL_GPIO_GetTriggerEdge
  987. * @param GPIOx GPIO Port
  988. * @param line This parameter can be one of the following values:
  989. * @arg @ref FL_GPIO_EXTI_LINE_0
  990. * @arg @ref FL_GPIO_EXTI_LINE_1
  991. * @arg @ref FL_GPIO_EXTI_LINE_2
  992. * @arg @ref FL_GPIO_EXTI_LINE_3
  993. * @arg @ref FL_GPIO_EXTI_LINE_4
  994. * @arg @ref FL_GPIO_EXTI_LINE_5
  995. * @arg @ref FL_GPIO_EXTI_LINE_6
  996. * @arg @ref FL_GPIO_EXTI_LINE_7
  997. * @arg @ref FL_GPIO_EXTI_LINE_8
  998. * @arg @ref FL_GPIO_EXTI_LINE_9
  999. * @arg @ref FL_GPIO_EXTI_LINE_10
  1000. * @arg @ref FL_GPIO_EXTI_LINE_11
  1001. * @arg @ref FL_GPIO_EXTI_LINE_12
  1002. * @arg @ref FL_GPIO_EXTI_LINE_13
  1003. * @arg @ref FL_GPIO_EXTI_LINE_14
  1004. * @arg @ref FL_GPIO_EXTI_LINE_15
  1005. * @retval Returned value can be one of the following values:
  1006. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING
  1007. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING
  1008. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH
  1009. * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE
  1010. */
  1011. __STATIC_INLINE uint32_t FL_GPIO_GetTriggerEdge(GPIO_COMMON_Type *GPIOx, uint32_t line)
  1012. {
  1013. return (uint32_t)(READ_BIT(GPIOx->EXTIEDS, ((line * line) * GPIO_EXTIEDS)) / (line * line));
  1014. }
  1015. /**
  1016. * @brief EXTI digital filter enable
  1017. * @rmtoll EXTIDF FL_GPIO_EnableDigitalFilter
  1018. * @param GPIOx GPIO Port
  1019. * @param line This parameter can be one of the following values:
  1020. * @arg @ref FL_GPIO_EXTI_LINE_0
  1021. * @arg @ref FL_GPIO_EXTI_LINE_1
  1022. * @arg @ref FL_GPIO_EXTI_LINE_2
  1023. * @arg @ref FL_GPIO_EXTI_LINE_3
  1024. * @arg @ref FL_GPIO_EXTI_LINE_4
  1025. * @arg @ref FL_GPIO_EXTI_LINE_5
  1026. * @arg @ref FL_GPIO_EXTI_LINE_6
  1027. * @arg @ref FL_GPIO_EXTI_LINE_7
  1028. * @arg @ref FL_GPIO_EXTI_LINE_8
  1029. * @arg @ref FL_GPIO_EXTI_LINE_9
  1030. * @arg @ref FL_GPIO_EXTI_LINE_10
  1031. * @arg @ref FL_GPIO_EXTI_LINE_11
  1032. * @arg @ref FL_GPIO_EXTI_LINE_12
  1033. * @arg @ref FL_GPIO_EXTI_LINE_13
  1034. * @arg @ref FL_GPIO_EXTI_LINE_14
  1035. * @arg @ref FL_GPIO_EXTI_LINE_15
  1036. * @arg @ref FL_GPIO_EXTI_LINE_ALL
  1037. * @retval None
  1038. */
  1039. __STATIC_INLINE void FL_GPIO_EnableDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line)
  1040. {
  1041. SET_BIT(GPIOx->EXTIDF, ((line & 0xffff) << 0x0U));
  1042. }
  1043. /**
  1044. * @brief EXTI digital filter disable
  1045. * @rmtoll EXTIDF FL_GPIO_DisableDigitalFilter
  1046. * @param GPIOx GPIO Port
  1047. * @param line This parameter can be one of the following values:
  1048. * @arg @ref FL_GPIO_EXTI_LINE_0
  1049. * @arg @ref FL_GPIO_EXTI_LINE_1
  1050. * @arg @ref FL_GPIO_EXTI_LINE_2
  1051. * @arg @ref FL_GPIO_EXTI_LINE_3
  1052. * @arg @ref FL_GPIO_EXTI_LINE_4
  1053. * @arg @ref FL_GPIO_EXTI_LINE_5
  1054. * @arg @ref FL_GPIO_EXTI_LINE_6
  1055. * @arg @ref FL_GPIO_EXTI_LINE_7
  1056. * @arg @ref FL_GPIO_EXTI_LINE_8
  1057. * @arg @ref FL_GPIO_EXTI_LINE_9
  1058. * @arg @ref FL_GPIO_EXTI_LINE_10
  1059. * @arg @ref FL_GPIO_EXTI_LINE_11
  1060. * @arg @ref FL_GPIO_EXTI_LINE_12
  1061. * @arg @ref FL_GPIO_EXTI_LINE_13
  1062. * @arg @ref FL_GPIO_EXTI_LINE_14
  1063. * @arg @ref FL_GPIO_EXTI_LINE_15
  1064. * @arg @ref FL_GPIO_EXTI_LINE_ALL
  1065. * @retval None
  1066. */
  1067. __STATIC_INLINE void FL_GPIO_DisableDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line)
  1068. {
  1069. CLEAR_BIT(GPIOx->EXTIDF, ((line & 0xffff) << 0x0U));
  1070. }
  1071. /**
  1072. * @brief Get EXTI digital filter enable status
  1073. * @rmtoll EXTIDF FL_GPIO_IsEnabledDigitalFilter
  1074. * @param GPIOx GPIO Port
  1075. * @param line This parameter can be one of the following values:
  1076. * @arg @ref FL_GPIO_EXTI_LINE_0
  1077. * @arg @ref FL_GPIO_EXTI_LINE_1
  1078. * @arg @ref FL_GPIO_EXTI_LINE_2
  1079. * @arg @ref FL_GPIO_EXTI_LINE_3
  1080. * @arg @ref FL_GPIO_EXTI_LINE_4
  1081. * @arg @ref FL_GPIO_EXTI_LINE_5
  1082. * @arg @ref FL_GPIO_EXTI_LINE_6
  1083. * @arg @ref FL_GPIO_EXTI_LINE_7
  1084. * @arg @ref FL_GPIO_EXTI_LINE_8
  1085. * @arg @ref FL_GPIO_EXTI_LINE_9
  1086. * @arg @ref FL_GPIO_EXTI_LINE_10
  1087. * @arg @ref FL_GPIO_EXTI_LINE_11
  1088. * @arg @ref FL_GPIO_EXTI_LINE_12
  1089. * @arg @ref FL_GPIO_EXTI_LINE_13
  1090. * @arg @ref FL_GPIO_EXTI_LINE_14
  1091. * @arg @ref FL_GPIO_EXTI_LINE_15
  1092. * @retval State of bit (1 or 0).
  1093. */
  1094. __STATIC_INLINE uint32_t FL_GPIO_IsEnabledDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line)
  1095. {
  1096. return (uint32_t)(READ_BIT(GPIOx->EXTIDF, ((line & 0xffff) << 0x0U)) == ((line & 0xffff) << 0x0U));
  1097. }
  1098. /**
  1099. * @brief Get external interrupt flag status
  1100. * @rmtoll EXTIISR FL_GPIO_IsActiveFlag_EXTI
  1101. * @param GPIOx GPIO Port
  1102. * @param line This parameter can be one of the following values:
  1103. * @arg @ref FL_GPIO_EXTI_LINE_0
  1104. * @arg @ref FL_GPIO_EXTI_LINE_1
  1105. * @arg @ref FL_GPIO_EXTI_LINE_2
  1106. * @arg @ref FL_GPIO_EXTI_LINE_3
  1107. * @arg @ref FL_GPIO_EXTI_LINE_4
  1108. * @arg @ref FL_GPIO_EXTI_LINE_5
  1109. * @arg @ref FL_GPIO_EXTI_LINE_6
  1110. * @arg @ref FL_GPIO_EXTI_LINE_7
  1111. * @arg @ref FL_GPIO_EXTI_LINE_8
  1112. * @arg @ref FL_GPIO_EXTI_LINE_9
  1113. * @arg @ref FL_GPIO_EXTI_LINE_10
  1114. * @arg @ref FL_GPIO_EXTI_LINE_11
  1115. * @arg @ref FL_GPIO_EXTI_LINE_12
  1116. * @arg @ref FL_GPIO_EXTI_LINE_13
  1117. * @arg @ref FL_GPIO_EXTI_LINE_14
  1118. * @arg @ref FL_GPIO_EXTI_LINE_15
  1119. * @retval State of bit (1 or 0).
  1120. */
  1121. __STATIC_INLINE uint32_t FL_GPIO_IsActiveFlag_EXTI(GPIO_COMMON_Type *GPIOx, uint32_t line)
  1122. {
  1123. return (uint32_t)(READ_BIT(GPIOx->EXTIISR, ((line & 0xffff) << 0x0U)) == ((line & 0xffff) << 0x0U));
  1124. }
  1125. /**
  1126. * @brief Clear external interrupt flag
  1127. * @rmtoll EXTIISR FL_GPIO_ClearFlag_EXTI
  1128. * @param GPIOx GPIO Port
  1129. * @param line This parameter can be one of the following values:
  1130. * @arg @ref FL_GPIO_EXTI_LINE_0
  1131. * @arg @ref FL_GPIO_EXTI_LINE_1
  1132. * @arg @ref FL_GPIO_EXTI_LINE_2
  1133. * @arg @ref FL_GPIO_EXTI_LINE_3
  1134. * @arg @ref FL_GPIO_EXTI_LINE_4
  1135. * @arg @ref FL_GPIO_EXTI_LINE_5
  1136. * @arg @ref FL_GPIO_EXTI_LINE_6
  1137. * @arg @ref FL_GPIO_EXTI_LINE_7
  1138. * @arg @ref FL_GPIO_EXTI_LINE_8
  1139. * @arg @ref FL_GPIO_EXTI_LINE_9
  1140. * @arg @ref FL_GPIO_EXTI_LINE_10
  1141. * @arg @ref FL_GPIO_EXTI_LINE_11
  1142. * @arg @ref FL_GPIO_EXTI_LINE_12
  1143. * @arg @ref FL_GPIO_EXTI_LINE_13
  1144. * @arg @ref FL_GPIO_EXTI_LINE_14
  1145. * @arg @ref FL_GPIO_EXTI_LINE_15
  1146. * @arg @ref FL_GPIO_EXTI_LINE_ALL
  1147. * @retval None
  1148. */
  1149. __STATIC_INLINE void FL_GPIO_ClearFlag_EXTI(GPIO_COMMON_Type *GPIOx, uint32_t line)
  1150. {
  1151. WRITE_REG(GPIOx->EXTIISR, ((line & 0xffff) << 0x0U));
  1152. }
  1153. /**
  1154. * @brief Get EXTI input set status
  1155. * @rmtoll EXTIDI FL_GPIO_GetEXTILine
  1156. * @param GPIOx GPIO Port
  1157. * @param line This parameter can be one of the following values:
  1158. * @arg @ref FL_GPIO_EXTI_LINE_0
  1159. * @arg @ref FL_GPIO_EXTI_LINE_1
  1160. * @arg @ref FL_GPIO_EXTI_LINE_2
  1161. * @arg @ref FL_GPIO_EXTI_LINE_3
  1162. * @arg @ref FL_GPIO_EXTI_LINE_4
  1163. * @arg @ref FL_GPIO_EXTI_LINE_5
  1164. * @arg @ref FL_GPIO_EXTI_LINE_6
  1165. * @arg @ref FL_GPIO_EXTI_LINE_7
  1166. * @arg @ref FL_GPIO_EXTI_LINE_8
  1167. * @arg @ref FL_GPIO_EXTI_LINE_9
  1168. * @arg @ref FL_GPIO_EXTI_LINE_10
  1169. * @arg @ref FL_GPIO_EXTI_LINE_11
  1170. * @arg @ref FL_GPIO_EXTI_LINE_12
  1171. * @arg @ref FL_GPIO_EXTI_LINE_13
  1172. * @arg @ref FL_GPIO_EXTI_LINE_14
  1173. * @arg @ref FL_GPIO_EXTI_LINE_15
  1174. * @retval State of bit (1 or 0).
  1175. */
  1176. __STATIC_INLINE uint32_t FL_GPIO_GetEXTILine(GPIO_COMMON_Type *GPIOx, uint32_t line)
  1177. {
  1178. return (uint32_t)(READ_BIT(GPIOx->EXTIDI, ((line & 0xffff) << 0x0U)) == ((line & 0xffff) << 0x0U));
  1179. }
  1180. /**
  1181. * @brief Get EXTI input status
  1182. * @rmtoll EXTIDI FL_GPIO_ReadEXTILines
  1183. * @param GPIOx GPIO Port
  1184. * @retval EXTI data register value of port
  1185. */
  1186. __STATIC_INLINE uint32_t FL_GPIO_ReadEXTILines(GPIO_COMMON_Type *GPIOx)
  1187. {
  1188. return (uint32_t)(READ_BIT(GPIOx->EXTIDI, 0xffffU) >> 0U);
  1189. }
  1190. /**
  1191. * @brief Set PD11 frequency output
  1192. * @rmtoll FOUTSEL FOUT0 FL_GPIO_SetFOUT0
  1193. * @param GPIOx GPIO Port
  1194. * @param select This parameter can be one of the following values:
  1195. * @arg @ref FL_GPIO_FOUT0_SELECT_XTLF
  1196. * @arg @ref FL_GPIO_FOUT0_SELECT_LPOSC
  1197. * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF_DIV64
  1198. * @arg @ref FL_GPIO_FOUT0_SELECT_LSCLK
  1199. * @arg @ref FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64
  1200. * @arg @ref FL_GPIO_FOUT0_SELECT_RTCTM
  1201. * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64
  1202. * @arg @ref FL_GPIO_FOUT0_SELECT_RTCCLK64Hz
  1203. * @arg @ref FL_GPIO_FOUT0_SELECT_APB1CLK_DIV64
  1204. * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT
  1205. * @arg @ref FL_GPIO_FOUT0_SELECT_RCMF_PSC
  1206. * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF
  1207. * @arg @ref FL_GPIO_FOUT0_SELECT_XTHF_DIV64
  1208. * @arg @ref FL_GPIO_FOUT0_SELECT_COMP1_OUTPUT
  1209. * @arg @ref FL_GPIO_FOUT0_SELECT_CLK_8K
  1210. * @arg @ref FL_GPIO_FOUT0_SELECT_ADC_CLK
  1211. * @retval None
  1212. */
  1213. __STATIC_INLINE void FL_GPIO_SetFOUT0(GPIO_COMMON_Type *GPIOx, uint32_t select)
  1214. {
  1215. MODIFY_REG(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT0_Msk, select);
  1216. }
  1217. /**
  1218. * @brief Get PD11 frequency output
  1219. * @rmtoll FOUTSEL FOUT0 FL_GPIO_GetFOUT0
  1220. * @param GPIOx GPIO Port
  1221. * @retval Returned value can be one of the following values:
  1222. * @arg @ref FL_GPIO_FOUT0_SELECT_XTLF
  1223. * @arg @ref FL_GPIO_FOUT0_SELECT_LPOSC
  1224. * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF_DIV64
  1225. * @arg @ref FL_GPIO_FOUT0_SELECT_LSCLK
  1226. * @arg @ref FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64
  1227. * @arg @ref FL_GPIO_FOUT0_SELECT_RTCTM
  1228. * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64
  1229. * @arg @ref FL_GPIO_FOUT0_SELECT_RTCCLK64Hz
  1230. * @arg @ref FL_GPIO_FOUT0_SELECT_APB1CLK_DIV64
  1231. * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT
  1232. * @arg @ref FL_GPIO_FOUT0_SELECT_RCMF_PSC
  1233. * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF
  1234. * @arg @ref FL_GPIO_FOUT0_SELECT_XTHF_DIV64
  1235. * @arg @ref FL_GPIO_FOUT0_SELECT_COMP1_OUTPUT
  1236. * @arg @ref FL_GPIO_FOUT0_SELECT_CLK_8K
  1237. * @arg @ref FL_GPIO_FOUT0_SELECT_ADC_CLK
  1238. */
  1239. __STATIC_INLINE uint32_t FL_GPIO_GetFOUT0(GPIO_COMMON_Type *GPIOx)
  1240. {
  1241. return (uint32_t)(READ_BIT(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT0_Msk));
  1242. }
  1243. /**
  1244. * @brief Set PB12 frequency output
  1245. * @rmtoll FOUTSEL FOUT1 FL_GPIO_SetFOUT1
  1246. * @param GPIOx GPIO Port
  1247. * @param select This parameter can be one of the following values:
  1248. * @arg @ref FL_GPIO_FOUT1_SELECT_XTLF
  1249. * @arg @ref FL_GPIO_FOUT1_SELECT_LPOSC
  1250. * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF_DIV64
  1251. * @arg @ref FL_GPIO_FOUT1_SELECT_LSCLK
  1252. * @arg @ref FL_GPIO_FOUT1_SELECT_AHBCLK_DIV64
  1253. * @arg @ref FL_GPIO_FOUT1_SELECT_RTCTM
  1254. * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64
  1255. * @arg @ref FL_GPIO_FOUT1_SELECT_RTCCLK64Hz
  1256. * @arg @ref FL_GPIO_FOUT1_SELECT_APB1CLK_DIV64
  1257. * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT
  1258. * @arg @ref FL_GPIO_FOUT1_SELECT_RCMF_PSC
  1259. * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF
  1260. * @arg @ref FL_GPIO_FOUT1_SELECT_XTHF_DIV64
  1261. * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64
  1262. * @arg @ref FL_GPIO_FOUT1_SELECT_CLK_8K
  1263. * @arg @ref FL_GPIO_FOUT1_SELECT_COMP2_OUTPUT
  1264. * @retval None
  1265. */
  1266. __STATIC_INLINE void FL_GPIO_SetFOUT1(GPIO_COMMON_Type *GPIOx, uint32_t select)
  1267. {
  1268. MODIFY_REG(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT1_Msk, select);
  1269. }
  1270. /**
  1271. * @brief Get PB12 frequency output
  1272. * @rmtoll FOUTSEL FOUT1 FL_GPIO_GetFOUT1
  1273. * @param GPIOx GPIO Port
  1274. * @retval Returned value can be one of the following values:
  1275. * @arg @ref FL_GPIO_FOUT1_SELECT_XTLF
  1276. * @arg @ref FL_GPIO_FOUT1_SELECT_LPOSC
  1277. * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF_DIV64
  1278. * @arg @ref FL_GPIO_FOUT1_SELECT_LSCLK
  1279. * @arg @ref FL_GPIO_FOUT1_SELECT_AHBCLK_DIV64
  1280. * @arg @ref FL_GPIO_FOUT1_SELECT_RTCTM
  1281. * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64
  1282. * @arg @ref FL_GPIO_FOUT1_SELECT_RTCCLK64Hz
  1283. * @arg @ref FL_GPIO_FOUT1_SELECT_APB1CLK_DIV64
  1284. * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT
  1285. * @arg @ref FL_GPIO_FOUT1_SELECT_RCMF_PSC
  1286. * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF
  1287. * @arg @ref FL_GPIO_FOUT1_SELECT_XTHF_DIV64
  1288. * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64
  1289. * @arg @ref FL_GPIO_FOUT1_SELECT_CLK_8K
  1290. * @arg @ref FL_GPIO_FOUT1_SELECT_COMP2_OUTPUT
  1291. */
  1292. __STATIC_INLINE uint32_t FL_GPIO_GetFOUT1(GPIO_COMMON_Type *GPIOx)
  1293. {
  1294. return (uint32_t)(READ_BIT(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT1_Msk));
  1295. }
  1296. /**
  1297. * @brief Set EXTI0 interrupt input
  1298. * @rmtoll EXTISEL EXTI0 FL_GPIO_SetExtiLine0
  1299. * @param GPIOx GPIO Port
  1300. * @param EXTIPin This parameter can be one of the following values:
  1301. * @arg @ref FL_GPIO_EXTI_LINE_0_PA0
  1302. * @arg @ref FL_GPIO_EXTI_LINE_0_PA1
  1303. * @arg @ref FL_GPIO_EXTI_LINE_0_PA2
  1304. * @arg @ref FL_GPIO_EXTI_LINE_0_PA3
  1305. * @retval None
  1306. */
  1307. __STATIC_INLINE void FL_GPIO_SetExtiLine0(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1308. {
  1309. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI0_Msk, EXTIPin);
  1310. }
  1311. /**
  1312. * @brief Get EXTI0 interrupt input
  1313. * @rmtoll EXTISEL EXTI0 FL_GPIO_GetExtiLine0
  1314. * @param GPIOx GPIO Port
  1315. * @retval Returned value can be one of the following values:
  1316. */
  1317. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine0(GPIO_COMMON_Type *GPIOx)
  1318. {
  1319. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI0_Msk));
  1320. }
  1321. /**
  1322. * @brief Set EXTI1 interrupt input
  1323. * @rmtoll EXTISEL EXTI1 FL_GPIO_SetExtiLine1
  1324. * @param GPIOx GPIO Port
  1325. * @param EXTIPin This parameter can be one of the following values:
  1326. * @arg @ref FL_GPIO_EXTI_LINE_1_PA4
  1327. * @arg @ref FL_GPIO_EXTI_LINE_1_PA5
  1328. * @arg @ref FL_GPIO_EXTI_LINE_1_PA6
  1329. * @arg @ref FL_GPIO_EXTI_LINE_1_PA7
  1330. * @retval None
  1331. */
  1332. __STATIC_INLINE void FL_GPIO_SetExtiLine1(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1333. {
  1334. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI1_Msk, EXTIPin);
  1335. }
  1336. /**
  1337. * @brief Get EXTI1 interrupt input
  1338. * @rmtoll EXTISEL EXTI1 FL_GPIO_GetExtiLine1
  1339. * @param GPIOx GPIO Port
  1340. * @retval Returned value can be one of the following values:
  1341. */
  1342. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine1(GPIO_COMMON_Type *GPIOx)
  1343. {
  1344. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI1_Msk));
  1345. }
  1346. /**
  1347. * @brief Set EXTI2 interrupt input
  1348. * @rmtoll EXTISEL EXTI2 FL_GPIO_SetExtiLine2
  1349. * @param GPIOx GPIO Port
  1350. * @param EXTIPin This parameter can be one of the following values:
  1351. * @arg @ref FL_GPIO_EXTI_LINE_2_PA8
  1352. * @arg @ref FL_GPIO_EXTI_LINE_2_PA9
  1353. * @arg @ref FL_GPIO_EXTI_LINE_2_PA10
  1354. * @arg @ref FL_GPIO_EXTI_LINE_2_PA11
  1355. * @retval None
  1356. */
  1357. __STATIC_INLINE void FL_GPIO_SetExtiLine2(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1358. {
  1359. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI2_Msk, EXTIPin);
  1360. }
  1361. /**
  1362. * @brief Get EXTI2 interrupt input
  1363. * @rmtoll EXTISEL EXTI2 FL_GPIO_GetExtiLine2
  1364. * @param GPIOx GPIO Port
  1365. * @retval Returned value can be one of the following values:
  1366. */
  1367. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine2(GPIO_COMMON_Type *GPIOx)
  1368. {
  1369. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI2_Msk));
  1370. }
  1371. /**
  1372. * @brief Set EXTI3 interrupt input
  1373. * @rmtoll EXTISEL EXTI3 FL_GPIO_SetExtiLine3
  1374. * @param GPIOx GPIO Port
  1375. * @param EXTIPin This parameter can be one of the following values:
  1376. * @arg @ref FL_GPIO_EXTI_LINE_3_PA12
  1377. * @arg @ref FL_GPIO_EXTI_LINE_3_PA13
  1378. * @arg @ref FL_GPIO_EXTI_LINE_3_PA14
  1379. * @arg @ref FL_GPIO_EXTI_LINE_3_PA15
  1380. * @retval None
  1381. */
  1382. __STATIC_INLINE void FL_GPIO_SetExtiLine3(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1383. {
  1384. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI3_Msk, EXTIPin);
  1385. }
  1386. /**
  1387. * @brief Get EXTI3 interrupt input
  1388. * @rmtoll EXTISEL EXTI3 FL_GPIO_GetExtiLine3
  1389. * @param GPIOx GPIO Port
  1390. * @retval Returned value can be one of the following values:
  1391. */
  1392. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine3(GPIO_COMMON_Type *GPIOx)
  1393. {
  1394. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI3_Msk));
  1395. }
  1396. /**
  1397. * @brief Set EXTI4 interrupt input
  1398. * @rmtoll EXTISEL EXTI4 FL_GPIO_SetExtiLine4
  1399. * @param GPIOx GPIO Port
  1400. * @param EXTIPin This parameter can be one of the following values:
  1401. * @arg @ref FL_GPIO_EXTI_LINE_4_PB0
  1402. * @arg @ref FL_GPIO_EXTI_LINE_4_PB1
  1403. * @arg @ref FL_GPIO_EXTI_LINE_4_PB2
  1404. * @arg @ref FL_GPIO_EXTI_LINE_4_PB3
  1405. * @retval None
  1406. */
  1407. __STATIC_INLINE void FL_GPIO_SetExtiLine4(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1408. {
  1409. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI4_Msk, EXTIPin);
  1410. }
  1411. /**
  1412. * @brief Get EXTI4 interrupt input
  1413. * @rmtoll EXTISEL EXTI4 FL_GPIO_GetExtiLine4
  1414. * @param GPIOx GPIO Port
  1415. * @retval Returned value can be one of the following values:
  1416. */
  1417. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine4(GPIO_COMMON_Type *GPIOx)
  1418. {
  1419. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI4_Msk));
  1420. }
  1421. /**
  1422. * @brief Set EXTI5 interrupt input
  1423. * @rmtoll EXTISEL EXTI5 FL_GPIO_SetExtiLine5
  1424. * @param GPIOx GPIO Port
  1425. * @param EXTIPin This parameter can be one of the following values:
  1426. * @arg @ref FL_GPIO_EXTI_LINE_5_PB4
  1427. * @arg @ref FL_GPIO_EXTI_LINE_5_PB5
  1428. * @arg @ref FL_GPIO_EXTI_LINE_5_PB6
  1429. * @arg @ref FL_GPIO_EXTI_LINE_5_PB7
  1430. * @retval None
  1431. */
  1432. __STATIC_INLINE void FL_GPIO_SetExtiLine5(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1433. {
  1434. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI5_Msk, EXTIPin);
  1435. }
  1436. /**
  1437. * @brief Get EXTI5 interrupt input
  1438. * @rmtoll EXTISEL EXTI5 FL_GPIO_GetExtiLine5
  1439. * @param GPIOx GPIO Port
  1440. * @retval Returned value can be one of the following values:
  1441. */
  1442. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine5(GPIO_COMMON_Type *GPIOx)
  1443. {
  1444. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI5_Msk));
  1445. }
  1446. /**
  1447. * @brief Set EXTI6 interrupt input
  1448. * @rmtoll EXTISEL EXTI6 FL_GPIO_SetExtiLine6
  1449. * @param GPIOx GPIO Port
  1450. * @param EXTIPin This parameter can be one of the following values:
  1451. * @arg @ref FL_GPIO_EXTI_LINE_6_PB8
  1452. * @arg @ref FL_GPIO_EXTI_LINE_6_PB9
  1453. * @arg @ref FL_GPIO_EXTI_LINE_6_PB10
  1454. * @arg @ref FL_GPIO_EXTI_LINE_6_PB11
  1455. * @retval None
  1456. */
  1457. __STATIC_INLINE void FL_GPIO_SetExtiLine6(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1458. {
  1459. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI6_Msk, EXTIPin);
  1460. }
  1461. /**
  1462. * @brief Get EXTI6 interrupt input
  1463. * @rmtoll EXTISEL EXTI6 FL_GPIO_GetExtiLine6
  1464. * @param GPIOx GPIO Port
  1465. * @retval Returned value can be one of the following values:
  1466. */
  1467. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine6(GPIO_COMMON_Type *GPIOx)
  1468. {
  1469. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI6_Msk));
  1470. }
  1471. /**
  1472. * @brief Set EXTI7 interrupt input
  1473. * @rmtoll EXTISEL EXTI7 FL_GPIO_SetExtiLine7
  1474. * @param GPIOx GPIO Port
  1475. * @param EXTIPin This parameter can be one of the following values:
  1476. * @arg @ref FL_GPIO_EXTI_LINE_7_PB12
  1477. * @arg @ref FL_GPIO_EXTI_LINE_7_PB13
  1478. * @arg @ref FL_GPIO_EXTI_LINE_7_PB14
  1479. * @arg @ref FL_GPIO_EXTI_LINE_7_PB15
  1480. * @retval None
  1481. */
  1482. __STATIC_INLINE void FL_GPIO_SetExtiLine7(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1483. {
  1484. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI7_Msk, EXTIPin);
  1485. }
  1486. /**
  1487. * @brief Get EXTI7 interrupt input
  1488. * @rmtoll EXTISEL EXTI7 FL_GPIO_GetExtiLine7
  1489. * @param GPIOx GPIO Port
  1490. * @retval Returned value can be one of the following values:
  1491. */
  1492. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine7(GPIO_COMMON_Type *GPIOx)
  1493. {
  1494. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI7_Msk));
  1495. }
  1496. /**
  1497. * @brief Set EXTI8 interrupt input
  1498. * @rmtoll EXTISEL EXTI8 FL_GPIO_SetExtiLine8
  1499. * @param GPIOx GPIO Port
  1500. * @param EXTIPin This parameter can be one of the following values:
  1501. * @arg @ref FL_GPIO_EXTI_LINE_8_PC0
  1502. * @arg @ref FL_GPIO_EXTI_LINE_8_PC1
  1503. * @arg @ref FL_GPIO_EXTI_LINE_8_PC2
  1504. * @arg @ref FL_GPIO_EXTI_LINE_8_PC3
  1505. * @retval None
  1506. */
  1507. __STATIC_INLINE void FL_GPIO_SetExtiLine8(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1508. {
  1509. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI8_Msk, EXTIPin);
  1510. }
  1511. /**
  1512. * @brief Get EXTI8 interrupt input
  1513. * @rmtoll EXTISEL EXTI8 FL_GPIO_GetExtiLine8
  1514. * @param GPIOx GPIO Port
  1515. * @retval Returned value can be one of the following values:
  1516. */
  1517. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine8(GPIO_COMMON_Type *GPIOx)
  1518. {
  1519. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI8_Msk));
  1520. }
  1521. /**
  1522. * @brief Set EXTI9 interrupt input
  1523. * @rmtoll EXTISEL EXTI9 FL_GPIO_SetExtiLine9
  1524. * @param GPIOx GPIO Port
  1525. * @param EXTIPin This parameter can be one of the following values:
  1526. * @arg @ref FL_GPIO_EXTI_LINE_9_PC4
  1527. * @arg @ref FL_GPIO_EXTI_LINE_9_PC5
  1528. * @arg @ref FL_GPIO_EXTI_LINE_9_PC6
  1529. * @arg @ref FL_GPIO_EXTI_LINE_9_PC7
  1530. * @retval None
  1531. */
  1532. __STATIC_INLINE void FL_GPIO_SetExtiLine9(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1533. {
  1534. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI9_Msk, EXTIPin);
  1535. }
  1536. /**
  1537. * @brief Get EXTI9 interrupt input
  1538. * @rmtoll EXTISEL EXTI9 FL_GPIO_GetExtiLine9
  1539. * @param GPIOx GPIO Port
  1540. * @retval Returned value can be one of the following values:
  1541. */
  1542. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine9(GPIO_COMMON_Type *GPIOx)
  1543. {
  1544. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI9_Msk));
  1545. }
  1546. /**
  1547. * @brief Set EXTI10 interrupt input
  1548. * @rmtoll EXTISEL EXTI10 FL_GPIO_SetExtiLine10
  1549. * @param GPIOx GPIO Port
  1550. * @param EXTIPin This parameter can be one of the following values:
  1551. * @arg @ref FL_GPIO_EXTI_LINE_10_PC8
  1552. * @arg @ref FL_GPIO_EXTI_LINE_10_PC9
  1553. * @arg @ref FL_GPIO_EXTI_LINE_10_PC10
  1554. * @arg @ref FL_GPIO_EXTI_LINE_10_PC11
  1555. * @retval None
  1556. */
  1557. __STATIC_INLINE void FL_GPIO_SetExtiLine10(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1558. {
  1559. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI10_Msk, EXTIPin);
  1560. }
  1561. /**
  1562. * @brief Get EXTI10 interrupt input
  1563. * @rmtoll EXTISEL EXTI10 FL_GPIO_GetExtiLine10
  1564. * @param GPIOx GPIO Port
  1565. * @retval Returned value can be one of the following values:
  1566. */
  1567. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine10(GPIO_COMMON_Type *GPIOx)
  1568. {
  1569. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI10_Msk));
  1570. }
  1571. /**
  1572. * @brief Set EXTI11 interrupt input
  1573. * @rmtoll EXTISEL EXTI11 FL_GPIO_SetExtiLine11
  1574. * @param GPIOx GPIO Port
  1575. * @param EXTIPin This parameter can be one of the following values:
  1576. * @arg @ref FL_GPIO_PIN_0
  1577. * @retval None
  1578. */
  1579. __STATIC_INLINE void FL_GPIO_SetExtiLine11(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1580. {
  1581. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI11_Msk, EXTIPin);
  1582. }
  1583. /**
  1584. * @brief Get EXTI11 interrupt input
  1585. * @rmtoll EXTISEL EXTI11 FL_GPIO_GetExtiLine11
  1586. * @param GPIOx GPIO Port
  1587. * @retval Returned value can be one of the following values:
  1588. */
  1589. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine11(GPIO_COMMON_Type *GPIOx)
  1590. {
  1591. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI11_Msk));
  1592. }
  1593. /**
  1594. * @brief Set EXTI12 interrupt input
  1595. * @rmtoll EXTISEL EXTI12 FL_GPIO_SetExtiLine12
  1596. * @param GPIOx GPIO Port
  1597. * @param EXTIPin This parameter can be one of the following values:
  1598. * @arg @ref FL_GPIO_EXTI_LINE_12_PD0
  1599. * @arg @ref FL_GPIO_EXTI_LINE_12_PD1
  1600. * @arg @ref FL_GPIO_EXTI_LINE_12_PD2
  1601. * @arg @ref FL_GPIO_EXTI_LINE_12_PD3
  1602. * @retval None
  1603. */
  1604. __STATIC_INLINE void FL_GPIO_SetExtiLine12(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1605. {
  1606. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI12_Msk, EXTIPin);
  1607. }
  1608. /**
  1609. * @brief Get EXTI12 interrupt input
  1610. * @rmtoll EXTISEL EXTI12 FL_GPIO_GetExtiLine12
  1611. * @param GPIOx GPIO Port
  1612. * @retval Returned value can be one of the following values:
  1613. */
  1614. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine12(GPIO_COMMON_Type *GPIOx)
  1615. {
  1616. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI12_Msk));
  1617. }
  1618. /**
  1619. * @brief Set EXTI13 interrupt input
  1620. * @rmtoll EXTISEL EXTI13 FL_GPIO_SetExtiLine13
  1621. * @param GPIOx GPIO Port
  1622. * @param EXTIPin This parameter can be one of the following values:
  1623. * @arg @ref FL_GPIO_EXTI_LINE_13_PD4
  1624. * @arg @ref FL_GPIO_EXTI_LINE_13_PD5
  1625. * @arg @ref FL_GPIO_EXTI_LINE_13_PD6
  1626. * @arg @ref FL_GPIO_EXTI_LINE_13_PD7
  1627. * @retval None
  1628. */
  1629. __STATIC_INLINE void FL_GPIO_SetExtiLine13(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1630. {
  1631. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI13_Msk, EXTIPin);
  1632. }
  1633. /**
  1634. * @brief Get EXTI13 interrupt input
  1635. * @rmtoll EXTISEL EXTI13 FL_GPIO_GetExtiLine13
  1636. * @param GPIOx GPIO Port
  1637. * @retval Returned value can be one of the following values:
  1638. */
  1639. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine13(GPIO_COMMON_Type *GPIOx)
  1640. {
  1641. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI13_Msk));
  1642. }
  1643. /**
  1644. * @brief Set EXTI14 interrupt input
  1645. * @rmtoll EXTISEL EXTI14 FL_GPIO_SetExtiLine14
  1646. * @param GPIOx GPIO Port
  1647. * @param EXTIPin This parameter can be one of the following values:
  1648. * @arg @ref FL_GPIO_EXTI_LINE_14_PD8
  1649. * @arg @ref FL_GPIO_EXTI_LINE_14_PD9
  1650. * @arg @ref FL_GPIO_EXTI_LINE_14_PD10
  1651. * @arg @ref FL_GPIO_EXTI_LINE_14_PD11
  1652. * @retval None
  1653. */
  1654. __STATIC_INLINE void FL_GPIO_SetExtiLine14(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
  1655. {
  1656. MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI14_Msk, EXTIPin);
  1657. }
  1658. /**
  1659. * @brief Get EXTI14 interrupt input
  1660. * @rmtoll EXTISEL EXTI14 FL_GPIO_GetExtiLine14
  1661. * @param GPIOx GPIO Port
  1662. * @retval Returned value can be one of the following values:
  1663. */
  1664. __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine14(GPIO_COMMON_Type *GPIOx)
  1665. {
  1666. return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI14_Msk));
  1667. }
  1668. /**
  1669. * @brief Get WKUP enable status
  1670. * @rmtoll PINWKEN EN FL_GPIO_IsEnabledWakeup
  1671. * @param GPIOx GPIO Port
  1672. * @param wakeup This parameter can be one of the following values:
  1673. * @arg @ref FL_GPIO_WAKEUP_0
  1674. * @arg @ref FL_GPIO_WAKEUP_1
  1675. * @arg @ref FL_GPIO_WAKEUP_2
  1676. * @arg @ref FL_GPIO_WAKEUP_3
  1677. * @arg @ref FL_GPIO_WAKEUP_4
  1678. * @arg @ref FL_GPIO_WAKEUP_5
  1679. * @arg @ref FL_GPIO_WAKEUP_6
  1680. * @arg @ref FL_GPIO_WAKEUP_7
  1681. * @retval State of bit (1 or 0).
  1682. */
  1683. __STATIC_INLINE uint32_t FL_GPIO_IsEnabledWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
  1684. {
  1685. return (uint32_t)(READ_BIT(GPIOx->PINWKEN, ((wakeup & 0xff) << 0x0U)) == ((wakeup & 0xff) << 0x0U));
  1686. }
  1687. /**
  1688. * @brief WKUP enable
  1689. * @rmtoll PINWKEN EN FL_GPIO_EnableWakeup
  1690. * @param GPIOx GPIO Port
  1691. * @param wakeup This parameter can be one of the following values:
  1692. * @arg @ref FL_GPIO_WAKEUP_0
  1693. * @arg @ref FL_GPIO_WAKEUP_1
  1694. * @arg @ref FL_GPIO_WAKEUP_2
  1695. * @arg @ref FL_GPIO_WAKEUP_3
  1696. * @arg @ref FL_GPIO_WAKEUP_4
  1697. * @arg @ref FL_GPIO_WAKEUP_5
  1698. * @arg @ref FL_GPIO_WAKEUP_6
  1699. * @arg @ref FL_GPIO_WAKEUP_7
  1700. * @retval None
  1701. */
  1702. __STATIC_INLINE void FL_GPIO_EnableWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
  1703. {
  1704. SET_BIT(GPIOx->PINWKEN, ((wakeup & 0xff) << 0x0U));
  1705. }
  1706. /**
  1707. * @brief WKUP disable
  1708. * @rmtoll PINWKEN EN FL_GPIO_DisableWakeup
  1709. * @param GPIOx GPIO Port
  1710. * @param wakeup This parameter can be one of the following values:
  1711. * @arg @ref FL_GPIO_WAKEUP_0
  1712. * @arg @ref FL_GPIO_WAKEUP_1
  1713. * @arg @ref FL_GPIO_WAKEUP_2
  1714. * @arg @ref FL_GPIO_WAKEUP_3
  1715. * @arg @ref FL_GPIO_WAKEUP_4
  1716. * @arg @ref FL_GPIO_WAKEUP_5
  1717. * @arg @ref FL_GPIO_WAKEUP_6
  1718. * @arg @ref FL_GPIO_WAKEUP_7
  1719. * @retval None
  1720. */
  1721. __STATIC_INLINE void FL_GPIO_DisableWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
  1722. {
  1723. CLEAR_BIT(GPIOx->PINWKEN, ((wakeup & 0xff) << 0x0U));
  1724. }
  1725. /**
  1726. * @brief Get WKUP interrupt entry
  1727. * @rmtoll PINWKEN WKISEL FL_GPIO_GetWakeupInterruptEntry
  1728. * @param GPIOx GPIO Port
  1729. * @retval Returned value can be one of the following values:
  1730. * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_NMI
  1731. * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_38
  1732. */
  1733. __STATIC_INLINE uint32_t FL_GPIO_GetWakeupInterruptEntry(GPIO_COMMON_Type *GPIOx)
  1734. {
  1735. return (uint32_t)(READ_BIT(GPIOx->PINWKEN, GPIO_PINWKEN_WKISEL_Msk));
  1736. }
  1737. /**
  1738. * @brief Set wkup interrupt entry
  1739. * @rmtoll PINWKEN WKISEL FL_GPIO_SetWakeupInterruptEntry
  1740. * @param GPIOx GPIO Port
  1741. * @param wakeup This parameter can be one of the following values:
  1742. * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_NMI
  1743. * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_38
  1744. * @retval None
  1745. */
  1746. __STATIC_INLINE void FL_GPIO_SetWakeupInterruptEntry(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
  1747. {
  1748. MODIFY_REG(GPIOx->PINWKEN, GPIO_PINWKEN_WKISEL_Msk, wakeup);
  1749. }
  1750. /**
  1751. * @brief Set WKUP edge polarity
  1752. * @rmtoll PINWKEN SEL FL_GPIO_SetWakeupEdge
  1753. * @param GPIOx GPIO Port
  1754. * @param wakeup This parameter can be one of the following values:
  1755. * @arg @ref FL_GPIO_WAKEUP_0
  1756. * @arg @ref FL_GPIO_WAKEUP_1
  1757. * @arg @ref FL_GPIO_WAKEUP_2
  1758. * @arg @ref FL_GPIO_WAKEUP_3
  1759. * @arg @ref FL_GPIO_WAKEUP_4
  1760. * @arg @ref FL_GPIO_WAKEUP_5
  1761. * @arg @ref FL_GPIO_WAKEUP_6
  1762. * @arg @ref FL_GPIO_WAKEUP_7
  1763. * @param mode This parameter can be one of the following values:
  1764. * @arg @ref FL_GPIO_WAKEUP_TRIGGER_RISING
  1765. * @arg @ref FL_GPIO_WAKEUP_TRIGGER_FALLING
  1766. * @retval None
  1767. */
  1768. __STATIC_INLINE void FL_GPIO_SetWakeupEdge(GPIO_COMMON_Type *GPIOx, uint32_t wakeup, uint32_t mode)
  1769. {
  1770. MODIFY_REG(GPIOx->PINWKEN, (wakeup << GPIO_PINWKEN_SEL_Pos), (wakeup * mode));
  1771. }
  1772. /**
  1773. * @brief Get WKUP edge polarity
  1774. * @rmtoll PINWKEN SEL FL_GPIO_GetWakeupEdge
  1775. * @param GPIOx GPIO Port
  1776. * @param wakeup This parameter can be one of the following values:
  1777. * @arg @ref FL_GPIO_WAKEUP_0
  1778. * @arg @ref FL_GPIO_WAKEUP_1
  1779. * @arg @ref FL_GPIO_WAKEUP_2
  1780. * @arg @ref FL_GPIO_WAKEUP_3
  1781. * @arg @ref FL_GPIO_WAKEUP_4
  1782. * @arg @ref FL_GPIO_WAKEUP_5
  1783. * @arg @ref FL_GPIO_WAKEUP_6
  1784. * @arg @ref FL_GPIO_WAKEUP_7
  1785. * @retval Returned value can be one of the following values:
  1786. * @arg @ref FL_GPIO_WAKEUP_TRIGGER_RISING
  1787. * @arg @ref FL_GPIO_WAKEUP_TRIGGER_FALLING
  1788. */
  1789. __STATIC_INLINE uint32_t FL_GPIO_GetWakeupEdge(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
  1790. {
  1791. return (uint32_t)(READ_BIT(GPIOx->PINWKEN, (wakeup << GPIO_PINWKEN_SEL_Pos)) / wakeup);
  1792. }
  1793. /**
  1794. * @}
  1795. */
  1796. /** @defgroup GPIO_FL_EF_Init Initialization and de-initialization functions
  1797. * @{
  1798. */
  1799. FL_ErrorStatus FL_GPIO_Init(GPIO_Type *GPIOx, FL_GPIO_InitTypeDef *initStruct);
  1800. FL_ErrorStatus FL_GPIO_DeInit(GPIO_Type *GPIOx, uint32_t pin);
  1801. void FL_GPIO_StructInit(FL_GPIO_InitTypeDef *initStruct);
  1802. FL_ErrorStatus FL_WKUP_Init(FL_WKUP_InitTypeDef *initStruct, uint32_t wakeup);
  1803. FL_ErrorStatus FL_WKUP_DeInit(uint32_t wakeup);
  1804. void FL_WKUP_StructInit(FL_WKUP_InitTypeDef *initStruct);
  1805. /**
  1806. * @}
  1807. */
  1808. /** @defgroup RNG_FL_EF_Operation Opeartion functions
  1809. * @{
  1810. */
  1811. void FL_GPIO_ALLPIN_LPM_MODE(void);
  1812. /**
  1813. * @}
  1814. */
  1815. /**
  1816. * @}
  1817. */
  1818. /**
  1819. * @}
  1820. */
  1821. #ifdef __cplusplus
  1822. }
  1823. #endif
  1824. #endif /* __FM33LC0XX_FL_GPIO_H*/
  1825. /*************************Py_Code_Generator Version: 0.1-0.14-0.2 @ 2021-08-19*************************/
  1826. /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/