gpio.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. /*******************************************************************************
  2. * Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved.
  3. *
  4. * This software is owned and published by:
  5. * Huada Semiconductor Co.,Ltd ("HDSC").
  6. *
  7. * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND
  8. * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
  9. *
  10. * This software contains source code for use with HDSC
  11. * components. This software is licensed by HDSC to be adapted only
  12. * for use in systems utilizing HDSC components. HDSC shall not be
  13. * responsible for misuse or illegal use of this software for devices not
  14. * supported herein. HDSC is providing this software "AS IS" and will
  15. * not be responsible for issues arising from incorrect user implementation
  16. * of the software.
  17. *
  18. * Disclaimer:
  19. * HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
  20. * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS),
  21. * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING,
  22. * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED
  23. * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED
  24. * WARRANTY OF NONINFRINGEMENT.
  25. * HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT,
  26. * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT
  27. * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION,
  28. * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR
  29. * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT,
  30. * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA,
  31. * SAVINGS OR PROFITS,
  32. * EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  33. * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
  34. * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED
  35. * FROM, THE SOFTWARE.
  36. *
  37. * This software may be replicated in part or whole for the licensed use,
  38. * with the restriction that this Disclaimer and Copyright notice must be
  39. * included with each copy of this software, whether used in part or whole,
  40. * at all times.
  41. */
  42. /******************************************************************************/
  43. /** \file gpio.h
  44. **
  45. ** GPIO driver
  46. ** @link GPIO Group Some description @endlink
  47. **
  48. ** - 2018-04-18
  49. **
  50. ******************************************************************************/
  51. #ifndef __GPIO_H__
  52. #define __GPIO_H__
  53. /*******************************************************************************
  54. * Include files
  55. ******************************************************************************/
  56. #include "ddl.h"
  57. #include "interrupts_hc32l136.h"
  58. /* C binding of definitions if building with C++ compiler */
  59. #ifdef __cplusplus
  60. extern "C"
  61. {
  62. #endif
  63. /**
  64. *******************************************************************************
  65. ** \defgroup GpioGroup General Purpose I/O (GPIO)
  66. **
  67. **
  68. ******************************************************************************/
  69. //@{
  70. #define GPIO_GPSZ (0x40u)
  71. /*******************************************************************************
  72. * Global type definitions
  73. ******************************************************************************/
  74. /**
  75. *******************************************************************************
  76. ** \brief GPIO PORT类型定义
  77. ******************************************************************************/
  78. typedef enum en_gpio_port
  79. {
  80. GpioPortA = 0x00u, ///< GPIO PORT A
  81. GpioPortB = 0x40u, ///< GPIO PORT B
  82. GpioPortC = 0x80u, ///< GPIO PORT C
  83. GpioPortD = 0xc0u, ///< GPIO PORT D
  84. }en_gpio_port_t;
  85. /**
  86. *******************************************************************************
  87. ** \brief GPIO PIN类型定义
  88. ******************************************************************************/
  89. typedef enum en_gpio_pin
  90. {
  91. GpioPin0 = 0u, ///< GPIO PIN0
  92. GpioPin1 = 1u, ///< GPIO PIN1
  93. GpioPin2 = 2u, ///< GPIO PIN2
  94. GpioPin3 = 3u, ///< GPIO PIN3
  95. GpioPin4 = 4u, ///< GPIO PIN4
  96. GpioPin5 = 5u, ///< GPIO PIN5
  97. GpioPin6 = 6u, ///< GPIO PIN6
  98. GpioPin7 = 7u, ///< GPIO PIN7
  99. GpioPin8 = 8u, ///< GPIO PIN8
  100. GpioPin9 = 9u, ///< GPIO PIN9
  101. GpioPin10 = 10u, ///< GPIO PIN10
  102. GpioPin11 = 11u, ///< GPIO PIN11
  103. GpioPin12 = 12u, ///< GPIO PIN12
  104. GpioPin13 = 13u, ///< GPIO PIN13
  105. GpioPin14 = 14u, ///< GPIO PIN14
  106. GpioPin15 = 15u, ///< GPIO PIN15
  107. }en_gpio_pin_t;
  108. /**
  109. *******************************************************************************
  110. ** \brief GPIO 端口复用功能(AF-Alternate function)类型定义
  111. ******************************************************************************/
  112. typedef enum en_gpio_af
  113. {
  114. GpioAf0 = 0u, ///< GPIO功能
  115. GpioAf1 = 1u, ///< GPIO AF1:
  116. ///< PA:UART1/SPI0/UART0/IR
  117. ///< PB:PCA/LPTIM/SPI0/I2C0/I2C1/SPI1
  118. ///< PC:LPTIM/SPI1/LPUART0/PCA/LPUART1
  119. ///< PD:I2C0/PCA/I2C1
  120. GpioAf2 = 2u, ///< GPIO AF2:
  121. ///< PA:LPUART1/TIM0/UART1/PCA/TIM3
  122. ///< PB:TIM3/PCLK_OUT/PCA/TIM0/UART0/TIM1/IR/SPI1/I2C1
  123. ///< PC:PCNT/TIM5/LPTIM/TIM2/TIM6/TIM4/LPUART0/LPUART1/RTC
  124. ///< PD:TIM4/LPUART0/LPUART1
  125. GpioAf3 = 3u, ///< GPIO AF3:
  126. ///< PA:TIM0/VC1/TIM1/PCA/TIM3/HCLK_OUT/TIM0/TIM2/I2C1/LVD/LPUART1
  127. ///< PB:LPUART0/TIM3/LPUART1/TIM1/TIM2/SPI1/TIM0
  128. ///< PC:UART1/PCNT/LPTIM/IR/PCA/TIM2/TIM1/TIM3
  129. ///< PD:UART1/TIM1/UART0
  130. GpioAf4 = 4u, ///< GPIO AF4:
  131. ///< PA:VC0/TIM1/TIM2/TIM0/TIM3/I2C0/LVD
  132. ///< PB:TIM5/TIM6/TIM4/TIM3/UART0/PCA/TIM0/LPUART1/TIM2/LPUART0
  133. ///< PC:RESERVED
  134. ///< PD:RESERVED
  135. GpioAf5 = 5u, ///< GPIO AF5:
  136. ///< PA:TIM1/TIM2/SPI1/TIM5/VC0/VC1/RTC/RCH_OUT/TIM0
  137. ///< PB:RCH_OUT/LPUART0/TIM1/LPTIM/TIM2/TIM0/TIM3/TIM6/RTC
  138. ///< PC:RESERVED
  139. ///< PD:RESERVED
  140. GpioAf6 = 6u, ///< GPIO AF6:
  141. ///< PA:TIM3/HCLK_OUT/PCLK_OUT/LVD/XTL_OUT/VC1/TIM4/SPI0/PCNT/RCL_OUT
  142. ///< PB:TIM0/XTL_OUT/TIM3/PCNT/LPTIM/TIM2/LPUART1/LPUART0/TIM1/RTC
  143. ///< PC:RESERVED
  144. ///< PD:RESERVED
  145. GpioAf7 = 7u, ///< GPIO AF7:
  146. ///< PA:TIM0/SPI1/TIM5/TIM3/XTH_OUT/LPUART0/TIM4/TIM6/PCNT/PLL_OUT
  147. ///< PB:PLL_OUT/TIM2/XTH_OUT/LPTIM/UART0/PCNT/UART1/TIM6/TIM1/LPUART1
  148. ///< PC:RESERVED
  149. ///< PD:RESERVED
  150. }en_gpio_af_t;
  151. /**
  152. *******************************************************************************
  153. ** \brief GPIO输入输出配置数据类型定义
  154. ******************************************************************************/
  155. typedef enum en_gpio_dir
  156. {
  157. GpioDirOut = 0u, ///< GPIO 输出
  158. GpioDirIn = 1u, ///< GPIO 输入
  159. }en_gpio_dir_t;
  160. /**
  161. *******************************************************************************
  162. ** \brief GPIO端口上拉、下拉配置数据类型定义
  163. ******************************************************************************/
  164. typedef enum en_gpio_pupd
  165. {
  166. GpioNoPuPd = 0u, ///< GPIO无上拉下拉
  167. GpioPu = 1u, ///< GPIO上拉
  168. GpioPd = 2u, ///< GPIO下拉
  169. }en_gpio_pupd_t;
  170. /**
  171. *******************************************************************************
  172. ** \brief GPIO端口输出驱动能力配置数据类型定义
  173. ******************************************************************************/
  174. typedef enum en_gpio_drv
  175. {
  176. GpioDrvH = 0u, ///< GPIO高驱动能力
  177. GpioDrvL = 1u, ///< GPIO低驱动能力
  178. }en_gpio_drv_t;
  179. /**
  180. *******************************************************************************
  181. ** \brief GPIO端口开漏输出控制数据类型定义
  182. ******************************************************************************/
  183. typedef enum en_gpio_od
  184. {
  185. GpioOdDisable = 0u, ///< GPIO开漏输出关闭
  186. GpioOdEnable = 1u, ///< GPIO开漏输出使能
  187. }en_gpio_od_t;
  188. /**
  189. *******************************************************************************
  190. ** \brief GPIO端口输入/输出值寄存器总线控制模式选择
  191. ******************************************************************************/
  192. typedef enum en_gpio_ctrl_mode
  193. {
  194. GpioFastIO = 0u, ///< FAST IO 总线控制模式
  195. GpioAHB = 1u, ///< AHB 总线控制模式
  196. }en_gpio_ctrl_mode_t;
  197. /**
  198. *******************************************************************************
  199. ** \brief GPIO中断触发方式类型定义
  200. ******************************************************************************/
  201. typedef enum en_gpio_irqtype
  202. {
  203. GpioIrqHigh = 1u, ///< GPIO高电平触发
  204. GpioIrqLow = 2u, ///< GPIO低电平触发
  205. GpioIrqRising = 4u, ///< GPIO上升沿触发
  206. GpioIrqFalling = 8u, ///< GPIO下降沿触发
  207. }en_gpio_irqtype_t;
  208. /**
  209. *******************************************************************************
  210. ** \brief GPIO 辅助功能(SF-Secondary Function)端口中断模式类型定义
  211. ******************************************************************************/
  212. typedef enum en_gpio_sf_irqmode
  213. {
  214. GpioSfIrqDpslpMode = 1u, ///< Deep Sleep模式
  215. GpioSfIrqActSlpMode = 0u, ///< Active/Sleep模式
  216. }en_gpio_sf_irqmode_t;
  217. /**
  218. *******************************************************************************
  219. ** \brief GPIO 辅助功能(SF-Secondary Function)HCLK输出门控类型定义
  220. ******************************************************************************/
  221. typedef enum en_gpio_sf_hclkout_g
  222. {
  223. GpioSfHclkOutDisable = 0u, ///< HCLK输出门控关闭
  224. GpioSfHclkOutEnable = 1u, ///< HCLK输出门控使能
  225. }en_gpio_sf_hclkout_g_t;
  226. /**
  227. *******************************************************************************
  228. ** \brief GPIO 辅助功能(SF-Secondary Function)HCLK输出分频选择类型定义
  229. ******************************************************************************/
  230. typedef enum en_gpio_sf_hclkout_div
  231. {
  232. GpioSfHclkOutDiv1 = 0u, ///< HCLK
  233. GpioSfHclkOutDiv2 = 1u, ///< HCLK/2
  234. GpioSfHclkOutDiv4 = 2u, ///< HCLK/4
  235. GpioSfHclkOutDiv8 = 3u, ///< HCLK/8
  236. }en_gpio_sf_hclkout_div_t;
  237. /**
  238. *******************************************************************************
  239. ** \brief GPIO 辅助功能(SF-Secondary Function)PCLK输出门控类型定义
  240. ******************************************************************************/
  241. typedef enum en_gpio_sf_pclkout_g
  242. {
  243. GpioSfPclkOutDisable = 0u, ///< PCLK输出门控关闭
  244. GpioSfPclkOutEnable = 1u, ///< PCLK输出门控使能
  245. }en_gpio_sf_pclkout_g_t;
  246. /**
  247. *******************************************************************************
  248. ** \brief GPIO 辅助功能(SF-Secondary Function)PCLK输出分频选择类型定义
  249. ******************************************************************************/
  250. typedef enum en_gpio_sf_pclkout_div
  251. {
  252. GpioSfPclkOutDiv1 = 0u, ///< PCLK
  253. GpioSfPclkOutDiv2 = 1u, ///< PCLK/2
  254. GpioSfPclkOutDiv4 = 2u, ///< PCLK/4
  255. GpioSfPclkOutDiv8 = 3u, ///< PCLK/8
  256. }en_gpio_sf_pclkout_div_t;
  257. /**
  258. *******************************************************************************
  259. ** \brief GPIO 辅助功能(SF-Secondary Function)IR输出极性选择类型定义
  260. ******************************************************************************/
  261. typedef enum en_gpio_sf_irpol
  262. {
  263. GpioSfIrP = 0u, ///< IR正向输出
  264. GpioSfIrN = 1u, ///< IR反向输出
  265. }en_gpio_sf_irpol_t;
  266. /**
  267. *******************************************************************************
  268. ** \brief GPIO 辅助功能(SF-Secondary Function)SSN通道类型定义
  269. ******************************************************************************/
  270. typedef enum en_gpio_sf_ssnspi
  271. {
  272. GpioSpi0 = 0u, ///< SPI0 SSN
  273. GpioSpi1 = 1u, ///< SPI1 SSN
  274. }en_gpio_sf_ssnspi_t;
  275. /**
  276. *******************************************************************************
  277. ** \brief GPIO 辅助功能(SF-Secondary Function)SSN与外部时钟输入信号源选择类型定义
  278. ******************************************************************************/
  279. typedef enum en_gpio_sf_ssn_extclk
  280. {
  281. GpioSfSsnExtClkH = 0u, ///< 高电平
  282. GpioSfSsnExtClkPA03 = 1u, ///< PA03
  283. GpioSfSsnExtClkPA04 = 2u, ///< PA04
  284. GpioSfSsnExtClkPA06 = 3u, ///< PA06
  285. GpioSfSsnExtClkPA08 = 4u, ///< PA08
  286. GpioSfSsnExtClkPA09 = 5u, ///< PA09
  287. GpioSfSsnExtClkPA12 = 6u, ///< PA12
  288. GpioSfSsnExtClkPA15 = 7u, ///< PA15
  289. GpioSfSsnExtClkPB01 = 8u, ///< PB01
  290. GpioSfSsnExtClkPB02 = 9u, ///< PB02
  291. GpioSfSsnExtClkPB05 = 10u, ///< PB05
  292. GpioSfSsnExtClkPB06 = 11u, ///< PB06
  293. GpioSfSsnExtClkPB09 = 12u, ///< PB09
  294. GpioSfSsnExtClkPB10 = 13u, ///< PB10
  295. GpioSfSsnExtClkPB12 = 14u, ///< PB12
  296. GpioSfSsnExtClkPB14 = 15u, ///< PB14
  297. }en_gpio_sf_ssn_extclk_t;
  298. /**
  299. *******************************************************************************
  300. ** \brief GPIO 辅助功能(SF-Secondary Function)定时器互联功能选择类型定义
  301. ******************************************************************************/
  302. typedef enum en_gpio_sf
  303. {
  304. GpioSf0 = 0u, ///< SF0:PX_SEL的配置功能
  305. GpioSf1 = 1u, ///< SF1:
  306. ///< TIM_G:UART0_RXD/LPUART0_RXD
  307. ///< TIM_E:UART0_RXD/LPUART0_RXD/PCNT_S0
  308. ///< TIM_C:UART0_RXD/LPUART0_RXD/UART1_RXD/LPUART1_RXD
  309. ///< PCA:PCNT_S1/PCNT_S0
  310. GpioSf2 = 2u, ///< SF2:
  311. ///< TIM_G:UART1_RXD/LPUART1_RXD
  312. ///< TIM_E:UART1_RXD/LPUART1_RXD/LVD_OUT
  313. ///< TIM_C:PA00/VC0_OUT/LPUART0_RXD/UART1_RXD
  314. ///< PCA:LVD_OUT/PCNT_S1
  315. GpioSf3 = 3u, ///< SF3:
  316. ///< TIM_G:VC0_OUT/LPUART0
  317. ///< TIM_E:VC0_OUT/VC1OUT
  318. ///< TIM_C:PA02/PCNT_S0/PCNT_S1
  319. ///< PCA:VC0_OUT/LVD_OUT
  320. GpioSf4 = 4u, ///< SF4:
  321. ///< TIM_G:VC1_OUT/LPUART1
  322. ///< TIM_E:LVD_OUT/PCNT_S1/PCNT_S0/VC1_OUT
  323. ///< TIM_C:PA05/PA06/PA07/VC0_OUT/VC1_OUT
  324. ///< PCA:VC1_OUT
  325. GpioSf5 = 5u, ///< SF5:
  326. ///< TIM_G:PA03/PA08/PA10/VC0_OUT/PB03
  327. ///< TIM_E:PA00/PA01/PA04
  328. ///< TIM_C:PA15/PB08/PA08/PA07
  329. ///< PCA:PA05/PA06
  330. GpioSf6 = 6u, ///< SF6:
  331. ///< TIM_G:PB08/PB03/PB04/PA06/PB05
  332. ///< TIM_E:PA05/PC09/PC04/PA12/PB06
  333. ///< TIM_C:PB06/PB10/PB09/PB03/PB04
  334. ///< PCA:PB02/PB04
  335. GpioSf7 = 7u, ///< SF7:
  336. ///< TIM_G:PB15/PB13/PB11/PC00
  337. ///< TIM_E:PA15/PD02/PC08/PA13/PC03
  338. ///< TIM_C:PB14/PB13/PC06/PB06
  339. ///< PCA:PD02/PC06
  340. }en_gpio_sf_t;
  341. /**
  342. *******************************************************************************
  343. ** \brief GPIO 辅助功能(SF-Secondary Function)定时器门控类型选择数据类型定义
  344. ******************************************************************************/
  345. typedef enum en_gpio_sf_tim_g
  346. {
  347. GpioSfTim0G = 0u, ///<Tim0定时器GATE输入选择
  348. GpioSfTim1G = 3u, ///<Tim1定时器GATE输入选择
  349. GpioSfTim2G = 6u, ///<Tim2定时器GATE输入选择
  350. GpioSfTim3G = 9u, ///<Tim3定时器GATE输入选择
  351. GpioSfLpTimG = 12u, ///<LPTim定时器GATE输入选择
  352. }en_gpio_sf_tim_g_t;
  353. /**
  354. *******************************************************************************
  355. ** \brief GPIO 辅助功能(SF-Secondary Function)定时器ETR类型选择数据类型定义
  356. ******************************************************************************/
  357. typedef enum en_gpio_sf_tim_e
  358. {
  359. GpioSfTim0E = 0u, ///<Tim0定时器ETR输入选择
  360. GpioSfTim1E = 3u, ///<Tim1定时器ETR输入选择
  361. GpioSfTim2E = 6u, ///<Tim2定时器ETR输入选择
  362. GpioSfTim3E = 9u, ///<Tim3定时器ETR输入选择
  363. GpioSfLpTimE = 12u, ///<LPTim定时器ETR输入选择
  364. }en_gpio_sf_tim_e_t;
  365. /**
  366. *******************************************************************************
  367. ** \brief GPIO 辅助功能(SF-Secondary Function)定时器捕获输入类型选择数据类型定义
  368. ******************************************************************************/
  369. typedef enum en_gpio_sf_tim_c
  370. {
  371. GpioSfTim0CA = 0u, ///<Tim0定时器CHA输入选择
  372. GpioSfTim1CA = 3u, ///<Tim1定时器CHA输入选择
  373. GpioSfTim2CA = 6u, ///<Tim2定时器CHA输入选择
  374. GpioSfTim3CA = 9u, ///<Tim3定时器CH0A输入选择
  375. GpioSfTim3CB = 12u, ///<Tim3定时器CH0B输入选择
  376. }en_gpio_sf_tim_c_t;
  377. /**
  378. *******************************************************************************
  379. ** \brief GPIO 辅助功能(SF-Secondary Function)PCA捕获选择数据类型定义
  380. ******************************************************************************/
  381. typedef enum en_gpio_sf_pca
  382. {
  383. GpioSfPcaCH0 = 0u, ///<PCA_CH0捕获口输入选择
  384. GpioSfPcaECI = 3u, ///<PCA ECI时钟输入选择
  385. }en_gpio_sf_pca_t;
  386. /**
  387. *******************************************************************************
  388. ** \brief GPIO 端口配置结构体定义
  389. ******************************************************************************/
  390. typedef struct
  391. {
  392. en_gpio_dir_t enDir; ///< 端口方向配置
  393. en_gpio_drv_t enDrv; ///< 端口驱动能力配置
  394. en_gpio_pupd_t enPuPd; ///< 端口上下拉配置
  395. en_gpio_od_t enOD; ///< 端口开漏输出配置
  396. en_gpio_ctrl_mode_t enCtrlMode; ///< 端口输入/输出值寄存器总线控制模式配置
  397. }stc_gpio_config_t;
  398. /*******************************************************************************
  399. * Global definitions
  400. ******************************************************************************/
  401. /******************************************************************************
  402. * Local type definitions ('typedef')
  403. ******************************************************************************/
  404. /******************************************************************************
  405. * Global variable definitions ('extern')
  406. ******************************************************************************/
  407. /******************************************************************************
  408. Global function prototypes (definition in C source)
  409. *******************************************************************************/
  410. ///< GPIO IO初始化/去初始化
  411. en_result_t Gpio_Init(en_gpio_port_t enPort, en_gpio_pin_t enPin, stc_gpio_config_t *pstcGpioCfg);
  412. ///< GPIO 获取端口输入电平
  413. boolean_t Gpio_GetInputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
  414. uint16_t Gpio_GetInputData(en_gpio_port_t enPort);
  415. ///< GPIO 设置端口输出
  416. ///< GPIO 端口输出电平配置及获取
  417. en_result_t Gpio_WriteOutputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin, boolean_t bVal);
  418. boolean_t Gpio_ReadOutputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
  419. ///< GPIO 端口/引脚输出电平置位
  420. en_result_t Gpio_SetPort(en_gpio_port_t enPort, uint16_t u16ValMsk);
  421. en_result_t Gpio_SetIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
  422. ///< GPIO 端口/引脚输出电平清零
  423. en_result_t Gpio_ClrPort(en_gpio_port_t enPort, uint16_t u16ValMsk);
  424. en_result_t Gpio_ClrIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
  425. ///< GPIO 端口输出电平置位与清零设置
  426. en_result_t Gpio_SetClrPort(en_gpio_port_t enPort, uint32_t u32ValMsk);
  427. ///< GPIO 设置端口为模拟功能
  428. en_result_t Gpio_SetAnalogMode(en_gpio_port_t enPort, en_gpio_pin_t enPin);
  429. ///< GPIO 设置端口为端口复用功能
  430. en_result_t Gpio_SetAfMode(en_gpio_port_t enPort, en_gpio_pin_t enPin, en_gpio_af_t enAf);
  431. ///< GPIO 端口中断控制功能使能/关闭
  432. en_result_t Gpio_EnableIrq(en_gpio_port_t enPort, en_gpio_pin_t enPin, en_gpio_irqtype_t enType);
  433. en_result_t Gpio_DisableIrq(en_gpio_port_t enPort, en_gpio_pin_t enPin, en_gpio_irqtype_t enType);
  434. ///< GPIO 中断状态获取
  435. boolean_t Gpio_GetIrqStatus(en_gpio_port_t enPort, en_gpio_pin_t enPin);
  436. ///< GPIO 中断标志清除
  437. en_result_t Gpio_ClearIrq(en_gpio_port_t enPort, en_gpio_pin_t enPin);
  438. ///< GPIO 端口辅助功能配置
  439. ///< GPIO 中断模式配置
  440. en_result_t Gpio_SfIrqModeConfig(en_gpio_sf_irqmode_t enIrqMode);
  441. ///< GPIO IR输出极性配置
  442. en_result_t Gpio_SfIrPolConfig(en_gpio_sf_irpol_t enIrPolMode);
  443. ///< GPIO HCLK输出配置
  444. en_result_t Gpio_SfHClkOutputConfig(en_gpio_sf_hclkout_g_t enGate, en_gpio_sf_hclkout_div_t enDiv);
  445. ///< GPIO PCLK输出配置
  446. en_result_t Gpio_SfPClkOutputConfig(en_gpio_sf_pclkout_g_t enGate, en_gpio_sf_pclkout_div_t enDiv);
  447. ///< GPIO 外部时钟输入配置
  448. en_result_t Gpio_SfExtClkConfig(en_gpio_sf_ssn_extclk_t enExtClk);
  449. ///< GPIO SPI SSN输入配置
  450. en_result_t Gpio_SfSsnConfig(en_gpio_sf_ssnspi_t enSpi, en_gpio_sf_ssn_extclk_t enSsn);
  451. ///< GPIO Timer 门控输入配置
  452. en_result_t Gpio_SfTimGConfig(en_gpio_sf_tim_g_t enTimG, en_gpio_sf_t enSf);
  453. ///< GPIO Timer ETR选择配置
  454. en_result_t Gpio_SfTimEConfig(en_gpio_sf_tim_e_t enTimE, en_gpio_sf_t enSf);
  455. ///< GPIO Timer 捕获输入配置
  456. en_result_t Gpio_SfTimCConfig(en_gpio_sf_tim_c_t enTimC, en_gpio_sf_t enSf);
  457. ///< GPIO PCA捕获选择配置
  458. en_result_t Gpio_SfPcaConfig(en_gpio_sf_pca_t enPca, en_gpio_sf_t enSf);
  459. //@} // GpioGroup
  460. #ifdef __cplusplus
  461. }
  462. #endif
  463. #endif /* __GPIO_H__ */
  464. /******************************************************************************
  465. * EOF (not truncated)
  466. ******************************************************************************/