ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
fw_exti.h
Go to the documentation of this file.
1// Copyright 2021 IOsetting <iosetting(at)outlook.com>
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef ___FW_EXTI_H___
16#define ___FW_EXTI_H___
17
18#include "fw_conf.h"
19#include "fw_types.h"
20
21typedef enum
22{
28
29typedef enum
30{
36
37#define EXTI_VectInt0 0
38#define EXTI_VectTimer0 1
39#define EXTI_VectInt1 2
40#define EXTI_VectTimer1 3
41#define EXTI_VectUART1 4
42#define EXTI_VectADC 5
43#define EXTI_VectLowVoltDect 6
44#define EXTI_VectPCA 7
45#define EXTI_VectUART2 8
46#define EXTI_VectSPI 9
47#define EXTI_VectInt2 10
48#define EXTI_VectInt3 11
49#define EXTI_VectTimer2 12
50#define EXTI_VectUser 13 // 006BH, for Cx51 vector hack
51#define EXTI_VectInt4 16
52#define EXTI_VectUART3 17
53#define EXTI_VectUART4 18
54#define EXTI_VectTimer3 19
55#define EXTI_VectTimer4 20
56#define EXTI_VectCMP 21
57
58#if (__CONF_MCU_TYPE == 1 ) || (__CONF_MCU_TYPE == 2 )
59#define EXTI_VectPWM0 22
60#define EXTI_VectPWM0FD 23
61#endif
62
63#define EXTI_VectI2C 24
64
65#if (__CONF_MCU_TYPE == 3 )
66#define EXTI_VectUSB 25
67#define EXTI_VectPWMA 26
68#define EXTI_VectPWMB 27
69#endif
70
71#if (__CONF_MCU_TYPE == 2 )
72#define EXTI_VectPWM1 28
73#define EXTI_VectPWM2 29
74#define EXTI_VectPWM3 30
75#define EXTI_VectPWM4 31
76#define EXTI_VectPWM5 32 // 0103H
77#define EXTI_VectPWM2FD 33 // 010BH
78#define EXTI_VectPWM4FD 34 // 0113H
79#endif
80
81#if (__CONF_MCU_TYPE == 2 ) || (__CONF_MCU_TYPE == 3 )
82#define EXTI_VectTKSU 35 // 011BH
83#endif
84
85#if (__CONF_MCU_TYPE == 3 )
86#define EXTI_VectRTC 36 // 0123H
87#endif
88
89#if (__CONF_MCU_TYPE == 1 ) || (__CONF_MCU_TYPE == 3 )
90#define EXTI_VectP0 37 // 012BH
91#define EXTI_VectP1 38 // 0133H
92#define EXTI_VectP2 39 // 013BH
93#define EXTI_VectP3 40 // 0143H
94#define EXTI_VectP4 41 // 014BH
95#define EXTI_VectP5 42 // 0153H
96#define EXTI_VectP6 43 // 015BH
97#define EXTI_VectP7 44 // 0163H
98#define EXTI_VectP8 45 // 016BH
99#define EXTI_VectP9 46 // 0173H
100#define EXTI_VectDMA_M2M 47
101#define EXTI_VectDMA_ADC 48
102#define EXTI_VectDMA_SPI 49
103#define EXTI_VectDMA_UR1T 50
104#define EXTI_VectDMA_UR1R 51
105#define EXTI_VectDMA_UR2T 52
106#define EXTI_VectDMA_UR2R 53
107#define EXTI_VectDMA_UR3T 54
108#define EXTI_VectDMA_UR3R 55
109#define EXTI_VectDMA_UR4T 56
110#define EXTI_VectDMA_UR4R 57
111#define EXTI_VectDMA_LCM 58
112#define EXTI_VectLCM 59
113#endif
114
115#define EXTI_Global_SetIntState(__STATE__) SBIT_ASSIGN(EA, __STATE__)
116#define EXTI_Timer0_SetIntState(__STATE__) SBIT_ASSIGN(ET0, __STATE__)
117#define EXTI_Timer1_SetIntState(__STATE__) SBIT_ASSIGN(ET1, __STATE__)
118#define EXTI_ADC_SetIntState(__STATE__) SBIT_ASSIGN(EADC, __STATE__)
119#define EXTI_UART1_SetIntState(__STATE__) SBIT_ASSIGN(ES, __STATE__)
120#define EXTI_LowVoltDetect_SetIntState(__STATE__) SBIT_ASSIGN(ELVD, __STATE__)
121#define EXTI_Int0_SetIntState(__STATE__) SBIT_ASSIGN(EX0, __STATE__)
122#define EXTI_Int1_SetIntState(__STATE__) SBIT_ASSIGN(EX1, __STATE__)
123
124#define EXTI_Int0_SetTrigByFall SBIT_SET(IT0) // Trigger by falling
125#define EXTI_Int0_SetTrigByBoth SBIT_RESET(IT0) // Trigger by both rising and falling
126#define EXTI_Int1_SetTrigByFall SBIT_SET(IT1) // Trigger by falling
127#define EXTI_Int1_SetTrigByBoth SBIT_RESET(IT1) // Trigger by both rising and falling
128
129#define EXTI_USB_SetIntState(__STATE__) SFR_ASSIGN(IE2, 7, __STATE__)
130#define EXTI_Timer4_SetIntState(__STATE__) SFR_ASSIGN(IE2, 6, __STATE__)
131#define EXTI_Timer3_SetIntState(__STATE__) SFR_ASSIGN(IE2, 5, __STATE__)
132#define EXTI_UART4_SetIntState(__STATE__) SFR_ASSIGN(IE2, 4, __STATE__)
133#define EXTI_UART3_SetIntState(__STATE__) SFR_ASSIGN(IE2, 3, __STATE__)
134#define EXTI_Timer2_SetIntState(__STATE__) SFR_ASSIGN(IE2, 2, __STATE__)
135#define EXTI_SPI_SetIntState(__STATE__) SFR_ASSIGN(IE2, 1, __STATE__)
136#define EXTI_UART2_SetIntState(__STATE__) SFR_ASSIGN(IE2, 0, __STATE__)
137
138#define EXTI_Int4_SetIntState(__STATE__) SFR_ASSIGN(INTCLKO, 6, __STATE__)
139#define EXTI_Int3_SetIntState(__STATE__) SFR_ASSIGN(INTCLKO, 5, __STATE__)
140#define EXTI_Int2_SetIntState(__STATE__) SFR_ASSIGN(INTCLKO, 4, __STATE__)
141
142#define EXTI_CMP_SetRiseIntState(__STATE__) SFR_ASSIGN(CMPCR1, 5, __STATE__)
143#define EXTI_CMP_SetFallIntState(__STATE__) SFR_ASSIGN(CMPCR1, 4, __STATE__)
144
145#define EXTI_I2C_SetMstIntState(__STATE__) SFRX_ASSIGN(I2CMSCR, 7, __STATE__)
146#define EXTI_I2C_SetSlvStartIntState(__STATE__) SFRX_ASSIGN(I2CSLCR, 6, __STATE__)
147#define EXTI_I2C_SetSlvRecvIntState(__STATE__) SFRX_ASSIGN(I2CSLCR, 5, __STATE__)
148#define EXTI_I2C_SetSlvSendIntState(__STATE__) SFRX_ASSIGN(I2CSLCR, 4, __STATE__)
149#define EXTI_I2C_SetSlvStopIntState(__STATE__) SFRX_ASSIGN(I2CSLCR, 3, __STATE__)
150
151#define EXTI_RTC_SetAlarmIntState(__STATE__) SFRX_ASSIGN(RTCIEN, 7, __STATE__)
152#define EXTI_RTC_SetDayIntState(__STATE__) SFRX_ASSIGN(RTCIEN, 6, __STATE__)
153#define EXTI_RTC_SetHourIntState(__STATE__) SFRX_ASSIGN(RTCIEN, 5, __STATE__)
154#define EXTI_RTC_SetMinuteIntState(__STATE__) SFRX_ASSIGN(RTCIEN, 4, __STATE__)
155#define EXTI_RTC_SetSecondIntState(__STATE__) SFRX_ASSIGN(RTCIEN, 3, __STATE__)
156#define EXTI_RTC_SetSecondDiv2IntState(__STATE__) SFRX_ASSIGN(RTCIEN, 2, __STATE__)
157#define EXTI_RTC_SetSecondDiv8IntState(__STATE__) SFRX_ASSIGN(RTCIEN, 1, __STATE__)
158#define EXTI_RTC_SetSecondDiv32IntState(__STATE__) SFRX_ASSIGN(RTCIEN, 0, __STATE__)
159
160#define EXTI_DMA_M2M_SetIntState(__STATE__) SFRX_ASSIGN(DMA_M2M_CFG, 7, __STATE__)
161#define EXTI_DMA_ADC_SetIntState(__STATE__) SFRX_ASSIGN(DMA_ADC_CFG, 7, __STATE__)
162#define EXTI_DMA_SPI_SetIntState(__STATE__) SFRX_ASSIGN(DMA_SPI_CFG, 7, __STATE__)
163#define EXTI_DMA_UART1T_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR1T_CFG, 7, __STATE__)
164#define EXTI_DMA_UART1R_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR1R_CFG, 7, __STATE__)
165#define EXTI_DMA_UART2T_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR2T_CFG, 7, __STATE__)
166#define EXTI_DMA_UART2R_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR2R_CFG, 7, __STATE__)
167#define EXTI_DMA_UART3T_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR3T_CFG, 7, __STATE__)
168#define EXTI_DMA_UART3R_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR3R_CFG, 7, __STATE__)
169#define EXTI_DMA_UART4T_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR4T_CFG, 7, __STATE__)
170#define EXTI_DMA_UART4R_SetIntState(__STATE__) SFRX_ASSIGN(DMA_UR4R_CFG, 7, __STATE__)
171#define EXTI_DMA_LCM_SetIntState(__STATE__) SFRX_ASSIGN(DMA_LCM_CFG, 7, __STATE__)
172
173#define EXTI_INT_PWMA_Break_ON SFRX_SET(PWMA_IER, 7)
174#define EXTI_INT_PWMA_Break_OFF SFRX_RESET(PWMA_IER, 7)
175#define EXTI_INT_PWMA_Int_ON SFRX_SET(PWMA_IER, 6)
176#define EXTI_INT_PWMA_Int_OFF SFRX_RESET(PWMA_IER, 6)
177#define EXTI_INT_PWMA_Comp_ON SFRX_SET(PWMA_IER, 5)
178#define EXTI_INT_PWMA_Comp_OFF SFRX_RESET(PWMA_IER, 5)
179#define EXTI_INT_PWMA_CapCH4_ON SFRX_SET(PWMA_IER, 4)
180#define EXTI_INT_PWMA_CapCH4_OFF SFRX_RESET(PWMA_IER, 4)
181#define EXTI_INT_PWMA_CapCH3_ON SFRX_SET(PWMA_IER, 3)
182#define EXTI_INT_PWMA_CapCH3_OFF SFRX_RESET(PWMA_IER, 3)
183#define EXTI_INT_PWMA_CapCH2_ON SFRX_SET(PWMA_IER, 2)
184#define EXTI_INT_PWMA_CapCH2_OFF SFRX_RESET(PWMA_IER, 2)
185#define EXTI_INT_PWMA_CapCH1_OFF SFRX_SET(PWMA_IER, 1)
186#define EXTI_INT_PWMA_CapCH1_ON SFRX_RESET(PWMA_IER, 1)
187#define EXTI_INT_PWMA_Update_OFF SFRX_SET(PWMA_IER, 0)
188#define EXTI_INT_PWMA_Update_ON SFRX_RESET(PWMA_IER, 0)
189
190#define EXTI_INT_PWMB_Break_ON SFRX_SET(PWMB_IER, 7)
191#define EXTI_INT_PWMB_Break_OFF SFRX_RESET(PWMB_IER, 7)
192#define EXTI_INT_PWMB_Int_ON SFRX_SET(PWMB_IER, 6)
193#define EXTI_INT_PWMB_Int_OFF SFRX_RESET(PWMB_IER, 6)
194#define EXTI_INT_PWMB_Comp_ON SFRX_SET(PWMB_IER, 5)
195#define EXTI_INT_PWMB_Comp_OFF SFRX_RESET(PWMB_IER, 5)
196#define EXTI_INT_PWMB_CapCH4_ON SFRX_SET(PWMB_IER, 4)
197#define EXTI_INT_PWMB_CapCH4_OFF SFRX_RESET(PWMB_IER, 4)
198#define EXTI_INT_PWMB_CapCH3_ON SFRX_SET(PWMB_IER, 3)
199#define EXTI_INT_PWMB_CapCH3_OFF SFRX_RESET(PWMB_IER, 3)
200#define EXTI_INT_PWMB_CapCH2_ON SFRX_SET(PWMB_IER, 2)
201#define EXTI_INT_PWMB_CapCH2_OFF SFRX_RESET(PWMB_IER, 2)
202#define EXTI_INT_PWMB_CapCH1_OFF SFRX_SET(PWMB_IER, 1)
203#define EXTI_INT_PWMB_CapCH1_ON SFRX_RESET(PWMB_IER, 1)
204#define EXTI_INT_PWMB_Update_OFF SFRX_SET(PWMB_IER, 0)
205#define EXTI_INT_PWMB_Update_ON SFRX_RESET(PWMB_IER, 0)
206
207#define EXTI_INT_LCM_ON SFRX_SET(LCMIFCFG, 7)
208#define EXTI_INT_LCM_OFF SFRX_RESET(LCMIFCFG, 7)
209
210#define EXTI_Port_SetInterrupt_ON(__PORT__, __PINS__) do {SFRX_ON(); SFRX(PxINTE + (__PORT__)) |= (__PINS__); SFRX_OFF();} while(0)
211#define EXTI_Port_SetInterrupt_OFF(__PORT__, __PINS__) do {SFRX_ON(); SFRX(PxINTE + (__PORT__)) &= ~(__PINS__); SFRX_OFF();} while(0)
212
213#define EXTI_Int0_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP, IPH, 0, __PRIORITY__)
214#define EXTI_Timer0_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP, IPH, 1, __PRIORITY__)
215#define EXTI_Int1_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP, IPH, 2, __PRIORITY__)
216#define EXTI_Timer1_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP, IPH, 3, __PRIORITY__)
217#define EXTI_UART1_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP, IPH, 4, __PRIORITY__)
218#define EXTI_ADC_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP, IPH, 5, __PRIORITY__)
219#define EXTI_LowVoltDetect_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP, IPH, 6, __PRIORITY__)
220
221#define EXTI_UART2_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 0, __PRIORITY__)
222#define EXTI_SPI_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 1, __PRIORITY__)
223#define EXTI_PWMA_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 2, __PRIORITY__)
224#define EXTI_PWMB_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 3, __PRIORITY__)
225#define EXTI_Int4_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 4, __PRIORITY__)
226#define EXTI_CMP_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 5, __PRIORITY__)
227#define EXTI_I2c_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 6, __PRIORITY__)
228#define EXTI_USB_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP2, IP2H, 7, __PRIORITY__)
229
230#define EXTI_UART3_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP3, IP3H, 0, __PRIORITY__)
231#define EXTI_UART4_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP3, IP3H, 1, __PRIORITY__)
232#define EXTI_RTC_SetIntPriority(__PRIORITY__) SFR_DUAL_SET(IP3, IP3H, 2, __PRIORITY__)
233
234#define EXTI_DMA_M2M_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_M2M_CFG, 2, __PRIORITY__)
235#define EXTI_DMA_ADC_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_ADC_CFG, 2, __PRIORITY__)
236#define EXTI_DMA_SPI_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_SPI_CFG, 2, __PRIORITY__)
237#define EXTI_DMA_UART1T_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR1T_CFG, 2, __PRIORITY__)
238#define EXTI_DMA_UART1R_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR1R_CFG, 2, __PRIORITY__)
239#define EXTI_DMA_UART2T_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR2T_CFG, 2, __PRIORITY__)
240#define EXTI_DMA_UART2R_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR2R_CFG, 2, __PRIORITY__)
241#define EXTI_DMA_UART3T_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR3T_CFG, 2, __PRIORITY__)
242#define EXTI_DMA_UART3R_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR3R_CFG, 2, __PRIORITY__)
243#define EXTI_DMA_UART4T_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR4T_CFG, 2, __PRIORITY__)
244#define EXTI_DMA_UART4R_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_UR4R_CFG, 2, __PRIORITY__)
245#define EXTI_DMA_LCM_SetIntPriority(__PRIORITY__) SFRX_ASSIGN2BIT(DMA_LCM_CFG, 2, __PRIORITY__)
246
247#define EXTI_Port_SetIntPriority(__PORT__, __PRIORITY__) SFRX_DUAL_SET(PIN_IP, PIN_IPH, __PORT__, __PRIORITY__)
248
249#define EXTI_Port_SetIntMode(__PORT__, __PINS__, __PORT_INT_MODE__) do { SFRX_ON(); \
250 SFRX(PxIM0 + (__PORT__)) = SFRX(PxIM0 + (__PORT__)) & ~(__PINS__) | (((__PORT_INT_MODE__) & 0x01)? (__PINS__) : 0x00); \
251 SFRX(PxIM1 + (__PORT__)) = SFRX(PxIM1 + (__PORT__)) & ~(__PINS__) | (((__PORT_INT_MODE__) & 0x02)? (__PINS__) : 0x00); \
252 SFRX_OFF(); } while(0)
253
254#endif
EXTI_IntPriority_t
Definition: fw_exti.h:22
@ EXTI_IntPriority_High
Definition: fw_exti.h:25
@ EXTI_IntPriority_Low
Definition: fw_exti.h:24
@ EXTI_IntPriority_Highest
Definition: fw_exti.h:26
@ EXTI_IntPriority_Lowest
Definition: fw_exti.h:23
EXTI_PortIntMode_t
Definition: fw_exti.h:30
@ EXTI_PortIntMode_Fall
Definition: fw_exti.h:31
@ EXTI_PortIntMode_High
Definition: fw_exti.h:34
@ EXTI_PortIntMode_Low
Definition: fw_exti.h:33
@ EXTI_PortIntMode_Rise
Definition: fw_exti.h:32