32 #ifndef __STC8x_GPIO_H_
33 #define __STC8x_GPIO_H_
44 #if (PER_LIB_MCU_MUODEL == STC8Ax)
46 #elif (PER_LIB_MCU_MUODEL == STC8Cx)
48 #elif (PER_LIB_MCU_MUODEL == STC8Fx)
50 #elif (PER_LIB_MCU_MUODEL == STC8Gx)
52 #elif (PER_LIB_MCU_MUODEL == STC8Hx)
61 #ifndef PER_LIB_MCU_MUODEL
64 #define PER_LIB_MCU_MUODEL STC8Ax
68 #ifndef PER_LIB_GPIO_CTRL
71 #define PER_LIB_GPIO_CTRL 1
75 #ifndef PER_LIB_GPIO_INIT_CTRL
78 #define PER_LIB_GPIO_INIT_CTRL 1
82 #ifndef PER_LIB_GPIO_NVIC_CTRL
85 #define PER_LIB_GPIO_NVIC_CTRL 1
89 #ifndef PER_LIB_GPIO_WORK_CTRL
92 #define PER_LIB_GPIO_WORK_CTRL 1
135 #define Pin_High 0xF0
155 #if (PER_LIB_GPIO_CTRL == 1)
157 #if (PER_LIB_GPIO_INIT_CTRL == 1)
170 #define GPIO_MODE_WEAK_PULL(gpio_x,pin) \
172 Px_M1(gpio_x) &= ~(pin); Px_M0(gpio_x) &= ~(pin); \
187 #define GPIO_MODE_IN_FLOATING(gpio_x,pin) \
189 Px_M1(gpio_x) |= (pin); Px_M0(gpio_x) &= ~(pin); \
204 #define GPIO_MODE_OUT_OD(gpio_x,pin) \
206 Px_M1(gpio_x) |= (pin); Px_M0(gpio_x) |= (pin); \
221 #define GPIO_MODE_OUT_PP(gpio_x,pin) \
223 Px_M1(gpio_x) &= ~(pin); Px_M0(gpio_x) |= (pin); \
238 #define GPIO_PULL_UP_ENABLE(gpio_x,pin) \
241 Px_PU(gpio_x) |= (pin); \
257 #define GPIO_PULL_UP_DISABLE(gpio_x,pin) \
260 Px_PU(gpio_x) &= ~(pin); \
276 #define GPIO_ST_ENABLE(gpio_x,pin) \
279 Px_NCS(gpio_x) |= (pin); \
295 #define GPIO_ST_DISABLE(gpio_x,pin) \
298 Px_NCS(gpio_x) &= ~(pin); \
314 #define GPIO_SPEED_LOW(gpio_x,pin) \
317 Px_SR(gpio_x) |= (pin); \
333 #define GPIO_SPEED_HIGH(gpio_x,pin) \
336 Px_SR(gpio_x) &= ~(pin); \
352 #define GPIO_DRIVE_MEDIUM(gpio_x,pin) \
355 Px_DR(gpio_x) |= (pin); \
371 #define GPIO_DRIVE_HIGH(gpio_x,pin) \
374 Px_DR(gpio_x) &= ~(pin); \
380 #if (PER_LIB_GPIO_WORK_CTRL == 1)
393 #define GPIO_FLIP_PIN_LEVEL(gpio_x,pin) \
395 GPIO_Px(gpio_x) ^= pin; \
400 #if (PER_LIB_GPIO_NVIC_CTRL == 1)
462 #define NVIC_EXTI0_CTRL(run) do{EX0 = run;}while(0)
470 #define NVIC_EXTI1_CTRL(run) do{EX1 = run;}while(0)
478 #define NVIC_EXTI2_CTRL(run) do{INTCLKO = (INTCLKO & 0xEF) | (run << 4);}while(0)
486 #define NVIC_EXTI0_PRI(pri) \
488 IPH = (IPH & 0xFE) | ((pri & 0x02) >> 1); \
489 IP = (IP & 0xFE) | (pri & 0x01); \
498 #define NVIC_EXTI1_PRI(pri) \
500 IPH = (IPH & 0xFB) | ((pri & 0x02) << 1); \
501 IP = (IP & 0xFB) | ((pri & 0x01) << 2); \
509 #define NVIC_EXTI4_PRI(pri) \
511 IP2H = (IPH & 0xEF) | ((pri & 0x02) << 3); \
512 IP2 = (IP & 0xEF) | ((pri & 0x01) << 4); \
520 #define NVIC_EXTI3_CTRL(run) do{INTCLKO = (INTCLKO & 0xDF) | (run << 5);}while(0)
528 #define NVIC_EXTI4_CTRL(run) do{INTCLKO = (INTCLKO & 0xBF) | (run << 6);}while(0)
NVICPri_Type
Definition: ELL_CORE.h:99
BOOL
Definition: ELL_CORE.h:50
FSCSTATE
Definition: ELL_CORE.h:65
FSCSTATE NVIC_EXTI2_Init(BOOL run)
外部中断2中断初始化函数,固定下降沿触发。
FSCSTATE NVIC_EXTI4_Init(NVICPri_Type pri, BOOL run)
外部中断4中断初始化函数,固定下降沿触发。
FSCSTATE NVIC_EXTI1_Init(EXTITri_Type triMode, NVICPri_Type pri, BOOL run)
外部中断1中断初始化函数。
FSCSTATE NVIC_EXTI0_Init(EXTITri_Type triMode, NVICPri_Type pri, BOOL run)
外部中断0中断初始化函数。
EXTITri_Type
外部中断触发方式枚举体。
Definition: STC8x_GPIO.h:143
@ EXTI_Tri_Edge
Definition: STC8x_GPIO.h:144
@ EXTI_Tri_Falling
Definition: STC8x_GPIO.h:145
FSCSTATE NVIC_EXTI3_Init(BOOL run)
外部中断3中断初始化函数,固定下降沿触发。