1 /* 2 * Copyright (c) 2006-2022, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2020-12-27 iysheng first release 9 * 2021-09-07 FuC Suit for V85XX 10 * 2021-09-09 ZhuXW Add GPIO interrupt 11 * 2021-09-12 ZhuXW Suit for V85XXP 12 */ 13 14 #ifndef __DRV_GPIO_H__ 15 #define __DRV_GPIO_H__ 16 17 #include <rtthread.h> 18 #include <rthw.h> 19 #include <rtdevice.h> 20 #include <board.h> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 #define __V85XXP_PORT(port) GPIO##port##_BASE 27 28 #define GET_PIN(PORTx,PIN) (__V85XXP_PORT(PORTx)==GPIOA_BASE) ? (rt_base_t)(0 + PIN):(rt_base_t)((16 * ( ((rt_base_t)__V85XXP_PORT(PORTx) - (rt_base_t)GPIOB_BASE)/(0x0400UL) +1)) + PIN) 29 30 #define PIN_NUM(port, no) (((((port) & 0xFu) << 4) | ((no) & 0xFu))) 31 #define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) 32 #define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) 33 34 #define PIN_V85XXPPORT(pin) ((GPIO_Type *)(GPIOB_BASE + (0x400u * PIN_PORT(pin)))) 35 #define PIN_V85XXPPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) 36 37 struct pin_irq_map 38 { 39 rt_uint16_t pinbit; 40 IRQn_Type irqno; 41 }; 42 43 #ifdef __cplusplus 44 } 45 #endif 46 47 #endif /* __DRV_GPIO_H__ */ 48 49