aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hc32f460/driver/inc/hc32f460_event_port.h
blob: 4bfadb0617b2de61c4dbe40e9177f37daa5a3597 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/*****************************************************************************
 * Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved.
 *
 * This software component is licensed by HDSC under BSD 3-Clause license
 * (the "License"); You may not use this file except in compliance with the
 * License. You may obtain a copy of the License at:
 *                    opensource.org/licenses/BSD-3-Clause
 */
/******************************************************************************/
/** \file hc32f460_event_port.h
 **
 ** A detailed description is available at
 ** @link EventPortGroup EventPort description @endlink
 **
 **   - 2018-12-07 CDT First version for Device Driver Library of EventPort.
 **
 ******************************************************************************/

#ifndef __HC32F460_EVENT_PORT_H__
#define __HC32F460_EVENT_PORT_H__

/*******************************************************************************
 * Include files
 ******************************************************************************/
#include "hc32_common.h"

/* C binding of definitions if building with C++ compiler */
#ifdef __cplusplus
extern "C"
{
#endif

/**
 *******************************************************************************
 ** \defgroup EventPortGroup Event Port (EventPort)
 **
 ******************************************************************************/
//@{

/*******************************************************************************
 * Global type definitions ('typedef')
 ******************************************************************************/
/**
 *******************************************************************************
 ** \brief Event Port Index enumeration
 **
 ******************************************************************************/
typedef enum en_event_port
{
    EventPort1 = 0,                     ///< Event port 1
    EventPort2 = 1,                     ///< Event port 2
    EventPort3 = 2,                     ///< Event port 3
    EventPort4 = 3,                     ///< Event port 4
}en_event_port_t;

/**
 *******************************************************************************
 ** \brief Event Port Pin enumeration
 **
 ******************************************************************************/
typedef enum en_event_pin
{
    EventPin00 = 1u << 0,               ///< Event port Pin 00
    EventPin01 = 1u << 1,               ///< Event port Pin 01
    EventPin02 = 1u << 2,               ///< Event port Pin 02
    EventPin03 = 1u << 3,               ///< Event port Pin 03
    EventPin04 = 1u << 4,               ///< Event port Pin 04
    EventPin05 = 1u << 5,               ///< Event port Pin 05
    EventPin06 = 1u << 6,               ///< Event port Pin 06
    EventPin07 = 1u << 7,               ///< Event port Pin 07
    EventPin08 = 1u << 8,               ///< Event port Pin 08
    EventPin09 = 1u << 9,               ///< Event port Pin 09
    EventPin10 = 1u << 10,              ///< Event port Pin 10
    EventPin11 = 1u << 11,              ///< Event port Pin 11
    EventPin12 = 1u << 12,              ///< Event port Pin 12
    EventPin13 = 1u << 13,              ///< Event port Pin 13
    EventPin14 = 1u << 14,              ///< Event port Pin 14
    EventPin15 = 1u << 15,              ///< Event port Pin 15
    EventPinAll= 0xFFFF,                ///< All event pins are selected
}en_event_pin_t;

/**
 *******************************************************************************
 ** \brief  Event Port common trigger source select
 **
 ******************************************************************************/
typedef enum en_event_port_com_trigger
{
    EpComTrigger_1   = 0x1,            ///< Select common trigger 1.
    EpComTrigger_2   = 0x2,            ///< Select common trigger 2.
    EpComTrigger_1_2 = 0x3,            ///< Select common trigger 1 and 2.
} en_event_port_com_trigger_t;

/**
 *******************************************************************************
 ** \brief Event Port direction enumeration
 **
 ******************************************************************************/
typedef enum en_event_port_dir
{
    EventPortIn     = 0,                ///< Event Port direction 'IN'
    EventPortOut    = 1,                ///< Event Port direction 'OUT'
}en_event_port_dir_t;

/**
 *******************************************************************************
 ** \brief Enumeration to filter clock setting for Event port detect
 **
 ** \note
 ******************************************************************************/
typedef enum en_ep_flt_clk
{
    Pclk1Div1   = 0u,                   ///< PCLK1 as EP filter clock source
    Pclk1Div8   = 1u,                   ///< PCLK1 div8 as EP filter clock source
    Pclk1Div32  = 2u,                   ///< PCLK1 div32 as EP filter clock source
    Pclk1Div64  = 3u,                   ///< PCLK1 div64 as EP filter clock source
}en_ep_flt_clk_t;

/**
 *******************************************************************************
 ** \brief Event port init structure definition
 ******************************************************************************/
typedef struct stc_event_port_init
{
    en_event_port_dir_t     enDirection;    ///< Input/Output setting
    en_functional_state_t   enReset;        ///< Corresponding pin reset after triggered
    en_functional_state_t   enSet;          ///< Corresponding pin set after triggered
    en_functional_state_t   enRisingDetect; ///< Rising edge detect enable
    en_functional_state_t   enFallingDetect;///< Falling edge detect enable
    en_functional_state_t   enFilter;       ///< Filter clock source select
    en_ep_flt_clk_t         enFilterClk;    ///< Filter clock, ref@ en_ep_flt_clk_t for details
}stc_event_port_init_t;

/*******************************************************************************
 * Global pre-processor symbols/macros ('#define')
 ******************************************************************************/

/*******************************************************************************
 * Global variable definitions ('extern')
 ******************************************************************************/

/*******************************************************************************
  Global function prototypes (definition in C source)
 ******************************************************************************/
extern en_result_t EVENTPORT_Init(en_event_port_t enEventPort,                 \
        uint16_t u16EventPin, const stc_event_port_init_t *pstcEventPortInit);
extern en_result_t EVENTPORT_DeInit(void);
extern en_result_t EVENTPORT_SetTriggerSrc(en_event_port_t enEventPort,        \
                                           en_event_src_t enTriggerSrc);
void EVENTPORT_ComTriggerCmd(en_event_port_t enEventPort,                      \
                             en_event_port_com_trigger_t enComTrigger,         \
                             en_functional_state_t enState);
extern uint16_t EVENTPORT_GetData(en_event_port_t enEventPort);
extern en_flag_status_t EVENTPORT_GetBit(en_event_port_t enEventPort,          \
                                         en_event_pin_t enEventPin);
extern en_result_t EVENTPORT_SetBits(en_event_port_t enEventPort,              \
                                    en_event_pin_t u16EventPin);
extern en_result_t EVENTPORT_ResetBits(en_event_port_t enEventPort,            \
                                      en_event_pin_t u16EventPin);

//@} // EventPortGroup

#ifdef __cplusplus
}
#endif

#endif /* __HC32F460_EVENT_PORT_H__ */

/*******************************************************************************
 * EOF (not truncated)
 ******************************************************************************/