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 
52 #ifndef __GPIO_H__
53 #define __GPIO_H__
54 
55 /*******************************************************************************
56  * Include files
57  ******************************************************************************/
58 #include "ddl.h"
59 #include "interrupts_hc32l136.h"
60 
61 /* C binding of definitions if building with C++ compiler */
62 #ifdef __cplusplus
63 extern "C"
64 {
65 #endif
66 
67 /**
68  *******************************************************************************
69  ** \defgroup GpioGroup General Purpose I/O (GPIO)
70  **
71  **
72  ******************************************************************************/
73 //@{
74 #define GPIO_GPSZ       (0x40u)
75 
76 /*******************************************************************************
77  * Global type definitions
78  ******************************************************************************/
79 /**
80  *******************************************************************************
81  ** \brief GPIO PORT类型定义
82  ******************************************************************************/
83 typedef enum en_gpio_port
84 {
85     GpioPortA = 0x00u,                 ///< GPIO PORT A
86     GpioPortB = 0x40u,                 ///< GPIO PORT B
87     GpioPortC = 0x80u,                 ///< GPIO PORT C
88     GpioPortD = 0xc0u,                 ///< GPIO PORT D
89 }en_gpio_port_t;
90 
91 /**
92  *******************************************************************************
93  ** \brief GPIO PIN类型定义
94  ******************************************************************************/
95 typedef enum en_gpio_pin
96 {
97     GpioPin0  = 0u,                 ///< GPIO PIN0
98     GpioPin1  = 1u,                 ///< GPIO PIN1
99     GpioPin2  = 2u,                 ///< GPIO PIN2
100     GpioPin3  = 3u,                 ///< GPIO PIN3
101     GpioPin4  = 4u,                 ///< GPIO PIN4
102     GpioPin5  = 5u,                 ///< GPIO PIN5
103     GpioPin6  = 6u,                 ///< GPIO PIN6
104     GpioPin7  = 7u,                 ///< GPIO PIN7
105     GpioPin8  = 8u,                 ///< GPIO PIN8
106     GpioPin9  = 9u,                 ///< GPIO PIN9
107     GpioPin10 = 10u,                ///< GPIO PIN10
108     GpioPin11 = 11u,                ///< GPIO PIN11
109     GpioPin12 = 12u,                ///< GPIO PIN12
110     GpioPin13 = 13u,                ///< GPIO PIN13
111     GpioPin14 = 14u,                ///< GPIO PIN14
112     GpioPin15 = 15u,                ///< GPIO PIN15
113 }en_gpio_pin_t;
114 
115 /**
116  *******************************************************************************
117  ** \brief GPIO 端口复用功能(AF-Alternate function)类型定义
118  ******************************************************************************/
119 typedef enum en_gpio_af
120 {
121     GpioAf0  = 0u,      ///< GPIO功能
122     GpioAf1  = 1u,      ///< GPIO AF1:
123                         ///< PA:UART1/SPI0/UART0/IR
124                         ///< PB:PCA/LPTIM/SPI0/I2C0/I2C1/SPI1
125                         ///< PC:LPTIM/SPI1/LPUART0/PCA/LPUART1
126                         ///< PD:I2C0/PCA/I2C1
127     GpioAf2  = 2u,      ///< GPIO AF2:
128                         ///< PA:LPUART1/TIM0/UART1/PCA/TIM3
129                         ///< PB:TIM3/PCLK_OUT/PCA/TIM0/UART0/TIM1/IR/SPI1/I2C1
130                         ///< PC:PCNT/TIM5/LPTIM/TIM2/TIM6/TIM4/LPUART0/LPUART1/RTC
131                         ///< PD:TIM4/LPUART0/LPUART1
132     GpioAf3  = 3u,      ///< GPIO AF3:
133                         ///< PA:TIM0/VC1/TIM1/PCA/TIM3/HCLK_OUT/TIM0/TIM2/I2C1/LVD/LPUART1
134                         ///< PB:LPUART0/TIM3/LPUART1/TIM1/TIM2/SPI1/TIM0
135                         ///< PC:UART1/PCNT/LPTIM/IR/PCA/TIM2/TIM1/TIM3
136                         ///< PD:UART1/TIM1/UART0
137     GpioAf4  = 4u,      ///< GPIO AF4:
138                         ///< PA:VC0/TIM1/TIM2/TIM0/TIM3/I2C0/LVD
139                         ///< PB:TIM5/TIM6/TIM4/TIM3/UART0/PCA/TIM0/LPUART1/TIM2/LPUART0
140                         ///< PC:RESERVED
141                         ///< PD:RESERVED
142     GpioAf5  = 5u,      ///< GPIO AF5:
143                         ///< PA:TIM1/TIM2/SPI1/TIM5/VC0/VC1/RTC/RCH_OUT/TIM0
144                         ///< PB:RCH_OUT/LPUART0/TIM1/LPTIM/TIM2/TIM0/TIM3/TIM6/RTC
145                         ///< PC:RESERVED
146                         ///< PD:RESERVED
147     GpioAf6  = 6u,      ///< GPIO AF6:
148                         ///< PA:TIM3/HCLK_OUT/PCLK_OUT/LVD/XTL_OUT/VC1/TIM4/SPI0/PCNT/RCL_OUT
149                         ///< PB:TIM0/XTL_OUT/TIM3/PCNT/LPTIM/TIM2/LPUART1/LPUART0/TIM1/RTC
150                         ///< PC:RESERVED
151                         ///< PD:RESERVED
152     GpioAf7  = 7u,      ///< GPIO AF7:
153                         ///< PA:TIM0/SPI1/TIM5/TIM3/XTH_OUT/LPUART0/TIM4/TIM6/PCNT/PLL_OUT
154                         ///< PB:PLL_OUT/TIM2/XTH_OUT/LPTIM/UART0/PCNT/UART1/TIM6/TIM1/LPUART1
155                         ///< PC:RESERVED
156                         ///< PD:RESERVED
157 }en_gpio_af_t;
158 
159 /**
160  *******************************************************************************
161  ** \brief GPIO输入输出配置数据类型定义
162  ******************************************************************************/
163 typedef enum en_gpio_dir
164 {
165     GpioDirOut = 0u,                ///< GPIO 输出
166     GpioDirIn  = 1u,                ///< GPIO 输入
167 }en_gpio_dir_t;
168 
169 /**
170  *******************************************************************************
171  ** \brief GPIO端口上拉、下拉配置数据类型定义
172  ******************************************************************************/
173 typedef enum en_gpio_pupd
174 {
175     GpioNoPuPd = 0u,                ///< GPIO无上拉下拉
176     GpioPu     = 1u,                ///< GPIO上拉
177     GpioPd     = 2u,                ///< GPIO下拉
178 }en_gpio_pupd_t;
179 
180 /**
181  *******************************************************************************
182  ** \brief GPIO端口输出驱动能力配置数据类型定义
183  ******************************************************************************/
184 typedef enum en_gpio_drv
185 {
186     GpioDrvH = 0u,                  ///< GPIO高驱动能力
187     GpioDrvL = 1u,                  ///< GPIO低驱动能力
188 }en_gpio_drv_t;
189 
190 /**
191  *******************************************************************************
192  ** \brief GPIO端口开漏输出控制数据类型定义
193  ******************************************************************************/
194 typedef enum en_gpio_od
195 {
196     GpioOdDisable = 0u,             ///< GPIO开漏输出关闭
197     GpioOdEnable  = 1u,             ///< GPIO开漏输出使能
198 }en_gpio_od_t;
199 
200 /**
201  *******************************************************************************
202  ** \brief GPIO端口输入/输出值寄存器总线控制模式选择
203  ******************************************************************************/
204 typedef enum en_gpio_ctrl_mode
205 {
206     GpioFastIO = 0u,             ///< FAST IO 总线控制模式
207     GpioAHB  = 1u,               ///< AHB 总线控制模式
208 }en_gpio_ctrl_mode_t;
209 
210 /**
211  *******************************************************************************
212  ** \brief GPIO中断触发方式类型定义
213  ******************************************************************************/
214 typedef enum en_gpio_irqtype
215 {
216     GpioIrqHigh     = 1u,           ///< GPIO高电平触发
217     GpioIrqLow      = 2u,           ///< GPIO低电平触发
218     GpioIrqRising   = 4u,           ///< GPIO上升沿触发
219     GpioIrqFalling  = 8u,           ///< GPIO下降沿触发
220 }en_gpio_irqtype_t;
221 
222 /**
223  *******************************************************************************
224  ** \brief GPIO 辅助功能(SF-Secondary Function)端口中断模式类型定义
225  ******************************************************************************/
226 typedef enum en_gpio_sf_irqmode
227 {
228     GpioSfIrqDpslpMode  = 1u,        ///< Deep Sleep模式
229     GpioSfIrqActSlpMode = 0u,        ///< Active/Sleep模式
230 }en_gpio_sf_irqmode_t;
231 
232 /**
233  *******************************************************************************
234  ** \brief GPIO 辅助功能(SF-Secondary Function)HCLK输出门控类型定义
235  ******************************************************************************/
236 typedef enum en_gpio_sf_hclkout_g
237 {
238     GpioSfHclkOutDisable = 0u,       ///< HCLK输出门控关闭
239     GpioSfHclkOutEnable  = 1u,       ///< HCLK输出门控使能
240 }en_gpio_sf_hclkout_g_t;
241 
242 /**
243  *******************************************************************************
244  ** \brief GPIO 辅助功能(SF-Secondary Function)HCLK输出分频选择类型定义
245  ******************************************************************************/
246 typedef enum en_gpio_sf_hclkout_div
247 {
248     GpioSfHclkOutDiv1 = 0u,         ///< HCLK
249     GpioSfHclkOutDiv2 = 1u,         ///< HCLK/2
250     GpioSfHclkOutDiv4 = 2u,         ///< HCLK/4
251     GpioSfHclkOutDiv8 = 3u,         ///< HCLK/8
252 }en_gpio_sf_hclkout_div_t;
253 /**
254  *******************************************************************************
255  ** \brief GPIO 辅助功能(SF-Secondary Function)PCLK输出门控类型定义
256  ******************************************************************************/
257 typedef enum en_gpio_sf_pclkout_g
258 {
259     GpioSfPclkOutDisable = 0u,       ///< PCLK输出门控关闭
260     GpioSfPclkOutEnable  = 1u,       ///< PCLK输出门控使能
261 }en_gpio_sf_pclkout_g_t;
262 
263 /**
264  *******************************************************************************
265  ** \brief GPIO 辅助功能(SF-Secondary Function)PCLK输出分频选择类型定义
266  ******************************************************************************/
267 typedef enum en_gpio_sf_pclkout_div
268 {
269     GpioSfPclkOutDiv1 = 0u,         ///< PCLK
270     GpioSfPclkOutDiv2 = 1u,         ///< PCLK/2
271     GpioSfPclkOutDiv4 = 2u,         ///< PCLK/4
272     GpioSfPclkOutDiv8 = 3u,         ///< PCLK/8
273 }en_gpio_sf_pclkout_div_t;
274 
275 /**
276  *******************************************************************************
277  ** \brief GPIO 辅助功能(SF-Secondary Function)IR输出极性选择类型定义
278  ******************************************************************************/
279 typedef enum en_gpio_sf_irpol
280 {
281     GpioSfIrP = 0u,                  ///< IR正向输出
282     GpioSfIrN = 1u,                  ///< IR反向输出
283 }en_gpio_sf_irpol_t;
284 
285 /**
286  *******************************************************************************
287  ** \brief GPIO 辅助功能(SF-Secondary Function)SSN通道类型定义
288  ******************************************************************************/
289 typedef enum en_gpio_sf_ssnspi
290 {
291     GpioSpi0 = 0u,                   ///< SPI0 SSN
292     GpioSpi1 = 1u,                   ///< SPI1 SSN
293 }en_gpio_sf_ssnspi_t;
294 
295 /**
296  *******************************************************************************
297  ** \brief GPIO 辅助功能(SF-Secondary Function)SSN与外部时钟输入信号源选择类型定义
298  ******************************************************************************/
299 typedef enum en_gpio_sf_ssn_extclk
300 {
301     GpioSfSsnExtClkH    = 0u,        ///< 高电平
302     GpioSfSsnExtClkPA03 = 1u,        ///< PA03
303     GpioSfSsnExtClkPA04 = 2u,        ///< PA04
304     GpioSfSsnExtClkPA06 = 3u,        ///< PA06
305     GpioSfSsnExtClkPA08 = 4u,        ///< PA08
306     GpioSfSsnExtClkPA09 = 5u,        ///< PA09
307     GpioSfSsnExtClkPA12 = 6u,        ///< PA12
308     GpioSfSsnExtClkPA15 = 7u,        ///< PA15
309     GpioSfSsnExtClkPB01 = 8u,        ///< PB01
310     GpioSfSsnExtClkPB02 = 9u,        ///< PB02
311     GpioSfSsnExtClkPB05 = 10u,       ///< PB05
312     GpioSfSsnExtClkPB06 = 11u,       ///< PB06
313     GpioSfSsnExtClkPB09 = 12u,       ///< PB09
314     GpioSfSsnExtClkPB10 = 13u,       ///< PB10
315     GpioSfSsnExtClkPB12 = 14u,       ///< PB12
316     GpioSfSsnExtClkPB14 = 15u,       ///< PB14
317 }en_gpio_sf_ssn_extclk_t;
318 
319 /**
320  *******************************************************************************
321  ** \brief GPIO 辅助功能(SF-Secondary Function)定时器互联功能选择类型定义
322  ******************************************************************************/
323 typedef enum en_gpio_sf
324 {
325     GpioSf0 = 0u,       ///< SF0:PX_SEL的配置功能
326     GpioSf1 = 1u,       ///< SF1:
327                         ///< TIM_G:UART0_RXD/LPUART0_RXD
328                         ///< TIM_E:UART0_RXD/LPUART0_RXD/PCNT_S0
329                         ///< TIM_C:UART0_RXD/LPUART0_RXD/UART1_RXD/LPUART1_RXD
330                         ///< PCA:PCNT_S1/PCNT_S0
331     GpioSf2 = 2u,       ///< SF2:
332                         ///< TIM_G:UART1_RXD/LPUART1_RXD
333                         ///< TIM_E:UART1_RXD/LPUART1_RXD/LVD_OUT
334                         ///< TIM_C:PA00/VC0_OUT/LPUART0_RXD/UART1_RXD
335                         ///< PCA:LVD_OUT/PCNT_S1
336     GpioSf3 = 3u,       ///< SF3:
337                         ///< TIM_G:VC0_OUT/LPUART0
338                         ///< TIM_E:VC0_OUT/VC1OUT
339                         ///< TIM_C:PA02/PCNT_S0/PCNT_S1
340                         ///< PCA:VC0_OUT/LVD_OUT
341     GpioSf4 = 4u,       ///< SF4:
342                         ///< TIM_G:VC1_OUT/LPUART1
343                         ///< TIM_E:LVD_OUT/PCNT_S1/PCNT_S0/VC1_OUT
344                         ///< TIM_C:PA05/PA06/PA07/VC0_OUT/VC1_OUT
345                         ///< PCA:VC1_OUT
346     GpioSf5 = 5u,       ///< SF5:
347                         ///< TIM_G:PA03/PA08/PA10/VC0_OUT/PB03
348                         ///< TIM_E:PA00/PA01/PA04
349                         ///< TIM_C:PA15/PB08/PA08/PA07
350                         ///< PCA:PA05/PA06
351     GpioSf6 = 6u,       ///< SF6:
352                         ///< TIM_G:PB08/PB03/PB04/PA06/PB05
353                         ///< TIM_E:PA05/PC09/PC04/PA12/PB06
354                         ///< TIM_C:PB06/PB10/PB09/PB03/PB04
355                         ///< PCA:PB02/PB04
356     GpioSf7 = 7u,       ///< SF7:
357                         ///< TIM_G:PB15/PB13/PB11/PC00
358                         ///< TIM_E:PA15/PD02/PC08/PA13/PC03
359                         ///< TIM_C:PB14/PB13/PC06/PB06
360                         ///< PCA:PD02/PC06
361 }en_gpio_sf_t;
362 
363 /**
364  *******************************************************************************
365  ** \brief GPIO 辅助功能(SF-Secondary Function)定时器门控类型选择数据类型定义
366  ******************************************************************************/
367 typedef enum en_gpio_sf_tim_g
368 {
369     GpioSfTim0G  = 0u,                   ///<Tim0定时器GATE输入选择
370     GpioSfTim1G  = 3u,                   ///<Tim1定时器GATE输入选择
371     GpioSfTim2G  = 6u,                   ///<Tim2定时器GATE输入选择
372     GpioSfTim3G  = 9u,                   ///<Tim3定时器GATE输入选择
373     GpioSfLpTimG = 12u,                  ///<LPTim定时器GATE输入选择
374 }en_gpio_sf_tim_g_t;
375 
376 /**
377  *******************************************************************************
378  ** \brief GPIO 辅助功能(SF-Secondary Function)定时器ETR类型选择数据类型定义
379  ******************************************************************************/
380 typedef enum en_gpio_sf_tim_e
381 {
382     GpioSfTim0E  = 0u,                   ///<Tim0定时器ETR输入选择
383     GpioSfTim1E  = 3u,                   ///<Tim1定时器ETR输入选择
384     GpioSfTim2E  = 6u,                   ///<Tim2定时器ETR输入选择
385     GpioSfTim3E  = 9u,                   ///<Tim3定时器ETR输入选择
386     GpioSfLpTimE = 12u,                  ///<LPTim定时器ETR输入选择
387 }en_gpio_sf_tim_e_t;
388 
389 /**
390  *******************************************************************************
391  ** \brief GPIO 辅助功能(SF-Secondary Function)定时器捕获输入类型选择数据类型定义
392  ******************************************************************************/
393 typedef enum en_gpio_sf_tim_c
394 {
395     GpioSfTim0CA = 0u,                   ///<Tim0定时器CHA输入选择
396     GpioSfTim1CA = 3u,                   ///<Tim1定时器CHA输入选择
397     GpioSfTim2CA = 6u,                   ///<Tim2定时器CHA输入选择
398     GpioSfTim3CA = 9u,                   ///<Tim3定时器CH0A输入选择
399     GpioSfTim3CB = 12u,                  ///<Tim3定时器CH0B输入选择
400 }en_gpio_sf_tim_c_t;
401 
402 /**
403  *******************************************************************************
404  ** \brief GPIO 辅助功能(SF-Secondary Function)PCA捕获选择数据类型定义
405  ******************************************************************************/
406 typedef enum en_gpio_sf_pca
407 {
408     GpioSfPcaCH0 = 0u,                   ///<PCA_CH0捕获口输入选择
409     GpioSfPcaECI = 3u,                   ///<PCA ECI时钟输入选择
410 }en_gpio_sf_pca_t;
411 
412 /**
413  *******************************************************************************
414  ** \brief GPIO 端口配置结构体定义
415  ******************************************************************************/
416 typedef struct
417 {
418     en_gpio_dir_t       enDir;           ///< 端口方向配置
419     en_gpio_drv_t       enDrv;           ///< 端口驱动能力配置
420     en_gpio_pupd_t      enPuPd;          ///< 端口上下拉配置
421     en_gpio_od_t        enOD;            ///< 端口开漏输出配置
422     en_gpio_ctrl_mode_t enCtrlMode;      ///< 端口输入/输出值寄存器总线控制模式配置
423 }stc_gpio_config_t;
424 
425 /*******************************************************************************
426  * Global definitions
427  ******************************************************************************/
428 
429 /******************************************************************************
430  * Local type definitions ('typedef')
431  ******************************************************************************/
432 
433 /******************************************************************************
434  * Global variable definitions ('extern')
435  ******************************************************************************/
436 
437 /******************************************************************************
438   Global function prototypes (definition in C source)
439 *******************************************************************************/
440  ///< GPIO IO初始化/去初始化
441 en_result_t Gpio_Init(en_gpio_port_t enPort, en_gpio_pin_t enPin, stc_gpio_config_t *pstcGpioCfg);
442 
443 ///< GPIO 获取端口输入电平
444 boolean_t   Gpio_GetInputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
445 uint16_t    Gpio_GetInputData(en_gpio_port_t enPort);
446 
447 ///< GPIO 设置端口输出
448 ///< GPIO 端口输出电平配置及获取
449 en_result_t Gpio_WriteOutputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin, boolean_t bVal);
450 boolean_t   Gpio_ReadOutputIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
451 ///< GPIO 端口/引脚输出电平置位
452 en_result_t Gpio_SetPort(en_gpio_port_t enPort, uint16_t u16ValMsk);
453 en_result_t Gpio_SetIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
454 ///< GPIO 端口/引脚输出电平清零
455 en_result_t Gpio_ClrPort(en_gpio_port_t enPort, uint16_t u16ValMsk);
456 en_result_t Gpio_ClrIO(en_gpio_port_t enPort, en_gpio_pin_t enPin);
457 ///< GPIO 端口输出电平置位与清零设置
458 en_result_t Gpio_SetClrPort(en_gpio_port_t enPort, uint32_t u32ValMsk);
459 
460 ///< GPIO 设置端口为模拟功能
461 en_result_t Gpio_SetAnalogMode(en_gpio_port_t enPort, en_gpio_pin_t enPin);
462 
463 ///< GPIO 设置端口为端口复用功能
464 en_result_t Gpio_SetAfMode(en_gpio_port_t enPort, en_gpio_pin_t enPin, en_gpio_af_t enAf);
465 
466 ///< GPIO 端口中断控制功能使能/关闭
467 en_result_t Gpio_EnableIrq(en_gpio_port_t enPort, en_gpio_pin_t enPin, en_gpio_irqtype_t enType);
468 en_result_t Gpio_DisableIrq(en_gpio_port_t enPort, en_gpio_pin_t enPin, en_gpio_irqtype_t enType);
469 ///< GPIO 中断状态获取
470 boolean_t   Gpio_GetIrqStatus(en_gpio_port_t enPort, en_gpio_pin_t enPin);
471 ///< GPIO 中断标志清除
472 en_result_t Gpio_ClearIrq(en_gpio_port_t enPort, en_gpio_pin_t enPin);
473 
474 ///< GPIO 端口辅助功能配置
475 ///< GPIO 中断模式配置
476 en_result_t Gpio_SfIrqModeConfig(en_gpio_sf_irqmode_t enIrqMode);
477 ///< GPIO IR输出极性配置
478 en_result_t Gpio_SfIrPolConfig(en_gpio_sf_irpol_t enIrPolMode);
479 ///< GPIO HCLK输出配置
480 en_result_t Gpio_SfHClkOutputConfig(en_gpio_sf_hclkout_g_t enGate, en_gpio_sf_hclkout_div_t enDiv);
481 ///< GPIO PCLK输出配置
482 en_result_t Gpio_SfPClkOutputConfig(en_gpio_sf_pclkout_g_t enGate, en_gpio_sf_pclkout_div_t enDiv);
483 ///< GPIO 外部时钟输入配置
484 en_result_t Gpio_SfExtClkConfig(en_gpio_sf_ssn_extclk_t enExtClk);
485 ///< GPIO SPI SSN输入配置
486 en_result_t Gpio_SfSsnConfig(en_gpio_sf_ssnspi_t enSpi, en_gpio_sf_ssn_extclk_t enSsn);
487 ///< GPIO Timer 门控输入配置
488 en_result_t Gpio_SfTimGConfig(en_gpio_sf_tim_g_t enTimG, en_gpio_sf_t enSf);
489 ///< GPIO Timer ETR选择配置
490 en_result_t Gpio_SfTimEConfig(en_gpio_sf_tim_e_t enTimE, en_gpio_sf_t enSf);
491 ///< GPIO Timer 捕获输入配置
492 en_result_t Gpio_SfTimCConfig(en_gpio_sf_tim_c_t enTimC, en_gpio_sf_t enSf);
493 ///< GPIO PCA捕获选择配置
494 en_result_t Gpio_SfPcaConfig(en_gpio_sf_pca_t enPca, en_gpio_sf_t enSf);
495 
496 
497 //@} // GpioGroup
498 
499 #ifdef __cplusplus
500 }
501 #endif
502 
503 #endif /* __GPIO_H__ */
504 /******************************************************************************
505  * EOF (not truncated)
506  ******************************************************************************/
507