1:
9:
10:
14:
15:
#ifndef _TIMRMGR_H_
16:
#define _TIMRMGR_H_
17:
18:
19:
#include <stdint.h>
20:
#include "lib_common/AG903_common.h"
21:
22:
#ifdef __cplusplus
23:
extern "C" {
24:
#endif
25:
26:
27:
#define AG903_TIMR_INTHDR_NUM (2)
28:
29:
30:
enum _AG903_TimrInputType {
31: AG903_TIMR_INPUT_EXTIN0 = 0,
32: AG903_TIMR_INPUT_EXTIN1,
33: AG903_TIMR_INPUT_EXTIN2,
34: AG903_TIMR_INPUT_EXTIN3,
35: AG903_TIMR_INPUT_EXTOUT0,
36: AG903_TIMR_INPUT_EXTOUT1,
37: AG903_TIMR_INPUT_EXTOUT2,
38: AG903_TIMR_INPUT_EXTOUT3,
39: AG903_TIMR_INPUT_TYPENUM,
40: };
41:
42:
43:
enum _AG903_TimrInputTypeRotaryEncoder {
44: AG903_TIMR_INPUT_REIN01 = 0,
45: AG903_TIMR_INPUT_REIN23,
46: AG903_TIMR_INPUT_REOUT01,
47: AG903_TIMR_INPUT_REOUT23,
48: AG903_TIMR_INPUT_RETYPENUM,
49: };
50:
51:
52:
enum _AG903_TimrCntClkType {
53: AG903_TIMR_CNT_SYSCLK = 0,
54: AG903_TIMR_CNT_TICK0,
55: AG903_TIMR_CNT_TICK1,
56: AG903_TIMR_CNT_TYPENUM,
57: };
58:
59:
60:
enum _AG903_TimrOutMode {
61: AG903_TIMR_OUT_PLUSE = 0,
62: AG903_TIMR_OUT_LEVEL,
63: AG903_TIMR_OUT_PWM,
64: AG903_TIMR_OUT_MODENUM,
65: };
66:
67:
68:
enum _AG903_TimrPolarityType {
69: AG903_TIMR_POL_POSITIVE = 0,
70: AG903_TIMR_POL_NEGATIVE,
71: AG903_TIMR_POL_TYPENUM,
72: };
73:
74:
75:
enum _AG903_TimrResetTriggerType {
76: AG903_TIMR_RSTTRG_EXTPORT = 0,
77: AG903_TIMR_RSTTRG_EVENT,
78: AG903_TIMR_RSTTRG_TYPENUM,
79: };
80:
81:
88:
typedef uint32_t
AG903_TIMRMgrHandle;
89:
90:
100: uint8_t mode;
101: uint8_t portch;
102: uint8_t polarity;
103: uint8_t mask;
104: }
AG903_TIMRMgrTickCntOutput;
105:
106:
110:
typedef struct _AG903_TIMRMgrTickCntParam{
111:
AG903_TIMRMgrTickCntOutput* output;
112: uint32_t period;
113: uint32_t match;
114: uint8_t resolution;
115: uint8_t oneshot;
116: uint8_t reserve[2];
117: }
AG903_TIMRMgrTickCntParam;
118:
119:
123:
typedef struct _AG903_TIMRMgrRotaryEncOutput{
124: uint32_t plusewidth;
125: uint8_t mode;
126: uint8_t portch;
127: uint8_t polarity;
128: uint8_t reserve;
129: }
AG903_TIMRMgrRotaryEncOutput;
130:
131:
135:
typedef struct _AG903_TIMRMgrRotaryEncParam{
136:
AG903_TIMRMgrRotaryEncOutput* output;
137: uint32_t range;
138: uint32_t match;
139: uint8_t intype;
140: uint8_t sampling;
141: uint8_t reserve[2];
142: }
AG903_TIMRMgrRotaryEncParam;
143:
144:
148:
typedef struct _AG903_TIMRMgrPwmInOutput{
149: uint32_t plusewidth;
150: uint8_t mode;
151: uint8_t portch;
152: uint8_t polarity;
153: uint8_t reserve;
154: }
AG903_TIMRMgrPwmInOutput;
155:
156:
161:
typedef struct _AG903_TIMRMgrPwmInParam{
162:
AG903_TIMRMgrPwmInOutput* output;
163: uint8_t intype;
164: uint8_t polarity;
165: uint8_t resolution;
166: uint8_t oneshot;
167: }
AG903_TIMRMgrPwmInParam;
168:
169:
179: uint8_t mode;
180: uint8_t portch;
181: uint8_t polarity;
182: uint8_t mask;
183: }
AG903_TIMRMgrEventCntOutput;
184:
185:
189:
typedef struct _AG903_TIMRMgrEventCntParam{
190:
AG903_TIMRMgrEventCntOutput* output;
191: uint32_t period;
192: uint32_t match;
193: uint8_t event;
194: uint8_t oneshot;
195: uint8_t reserve[2];
196: }
AG903_TIMRMgrEventCntParam;
197:
198:
208: uint8_t mode;
209: uint8_t portch;
210: uint8_t polarity;
211: uint8_t mask;
212: }
AG903_TIMRMgrPulseCntOutput;
213:
214:
220:
typedef struct _AG903_TIMRMgrPulseCntParam{
221:
AG903_TIMRMgrPulseCntOutput* output;
222: uint32_t period;
223: uint32_t match;
224: uint8_t intype;
225: uint8_t polarity;
226: uint8_t sampling;
227: uint8_t oneshot;
228: }
AG903_TIMRMgrPulseCntParam;
229:
230:
240: uint8_t mode;
241: uint8_t portch;
242: uint8_t polarity;
243: uint8_t mask;
244: }
AG903_TIMRMgrLevelCntOutput;
245:
246:
252:
typedef struct _AG903_TIMRMgrLevelCntParam{
253:
AG903_TIMRMgrLevelCntOutput* output;
254: uint32_t period;
255: uint32_t match;
256: uint8_t intype;
257: uint8_t polarity;
258: uint8_t sampling;
259: uint8_t oneshot;
260: }
AG903_TIMRMgrLevelCntParam;
261:
262:
268:
typedef struct _AG903_TIMRMgrResetParam{
269: uint8_t trigger;
270: uint8_t event;
271: uint8_t intype;
272: uint8_t polarity;
273: uint8_t sampling;
274: uint8_t reserve[3];
275: }
AG903_TIMRMgrResetParam;
276:
277:
278: int32_t
AG903_TIMRMgrInit(
void);
279: int32_t
AG903_TIMRMgrGetHandle(
AG903_TIMRMgrHandle** handle);
280: int32_t
AG903_TIMRMgrReleaseHandle(
AG903_TIMRMgrHandle* handle);
281: int32_t
AG903_TIMRMgrSetIntHandler(
AG903_TIMRMgrHandle* handle,
void* func,
void* param);
282: int32_t
AG903_TIMRMgrDeleteIntHandler(
AG903_TIMRMgrHandle* handle,
void* func);
283: int32_t
AG903_TIMRMgrSetRotaryEncoderMode(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrRotaryEncParam* param);
284: int32_t
AG903_TIMRMgrSetPwmInMode(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrPwmInParam* param);
285: int32_t
AG903_TIMRMgrSetTickCountMode(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrTickCntParam* param);
286: int32_t
AG903_TIMRMgrSetEventCountMode(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrEventCntParam* param);
287: int32_t
AG903_TIMRMgrSetPulseCountMode(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrPulseCntParam* param);
288: int32_t
AG903_TIMRMgrSetLevelCountMode(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrLevelCntParam* param);
289: int32_t
AG903_TIMRMgrStart(
AG903_TIMRMgrHandle* handle);
290: int32_t
AG903_TIMRMgrStop(
AG903_TIMRMgrHandle* handle);
291: int32_t
AG903_TIMRMgrStartMulti(uint8_t chbit);
292: int32_t
AG903_TIMRMgrEnableResetTrigger(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrResetParam* param);
293: int32_t
AG903_TIMRMgrDisableResetTrigger(
AG903_TIMRMgrHandle* handle);
294: int32_t
AG903_TIMRMgrEnableOneShot(
AG903_TIMRMgrHandle* handle);
295: int32_t
AG903_TIMRMgrDisableOneShot(
AG903_TIMRMgrHandle* handle);
296: int32_t
AG903_TIMRMgrEnableIntMask(
AG903_TIMRMgrHandle* handle, uint8_t target);
297: int32_t
AG903_TIMRMgrDisableIntMask(
AG903_TIMRMgrHandle* handle, uint8_t target);
298: int32_t
AG903_TIMRMgrEnableEventTrigger(
AG903_TIMRMgrHandle* handle, uint8_t target);
299: int32_t
AG903_TIMRMgrDisableEventTrigger(
AG903_TIMRMgrHandle* handle, uint8_t target);
300: int32_t
AG903_TIMRMgrEnableDmaRequest(
AG903_TIMRMgrHandle* handle, uint8_t target);
301: int32_t
AG903_TIMRMgrDisableDmaRequest(
AG903_TIMRMgrHandle* handle, uint8_t target);
302: int32_t
AG903_TIMRMgrGetStatus(
AG903_TIMRMgrHandle* handle, uint32_t* status);
303: int32_t
AG903_TIMRMgrClearStatus(
AG903_TIMRMgrHandle* handle, uint32_t target);
304: int32_t
AG903_TIMRMgrGetCount(
AG903_TIMRMgrHandle* handle, uint32_t* count);
305: int32_t
AG903_TIMRMgrSetCount(
AG903_TIMRMgrHandle* handle, uint32_t count);
306: int32_t
AG903_TIMRMgrGetPeriodValue(
AG903_TIMRMgrHandle* handle, uint32_t* period);
307: int32_t
AG903_TIMRMgrSetPeriodValue(
AG903_TIMRMgrHandle* handle, uint32_t period);
308: int32_t
AG903_TIMRMgrGetMatchValue(
AG903_TIMRMgrHandle* handle, uint32_t* match);
309: int32_t
AG903_TIMRMgrSetMatchValue(
AG903_TIMRMgrHandle* handle, uint32_t match);
310: int32_t
AG903_TIMRMgrGetChannel(
AG903_TIMRMgrHandle* handle, uint8_t* ch);
311:
312:
313:
#ifdef __cplusplus
314: }
315:
#endif
316:
#endif