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-10 ZhuXW add V85XX support 10 */ 11 12 #ifndef __DRV_GPIO_H__ 13 #define __DRV_GPIO_H__ 14 15 #include <rtthread.h> 16 #include <rthw.h> 17 #include <rtdevice.h> 18 #include <board.h> 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 #define __V85XX_PORT(port) GPIO##port##_BASE 25 26 #define GET_PIN(PORTx,PIN) (__V85XX_PORT(PORTx)==GPIOA_BASE) ? (rt_base_t)(0 + PIN):(rt_base_t)((16 * ( ((rt_base_t)__V85XX_PORT(PORTx) - (rt_base_t)GPIOB_BASE)/(0x0400UL) +1)) + PIN) 27 28 #define PIN_NUM(port, no) (((((port) & 0xFu) << 4) | ((no) & 0xFu))) 29 #define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) 30 #define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) 31 32 #define PIN_V85XXPORT(pin) ((GPIO_TypeDef *)(GPIOB_BASE + (0x400u * PIN_PORT(pin)))) 33 #define PIN_V85XXPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) 34 35 struct pin_irq_map 36 { 37 rt_uint16_t pinbit; 38 IRQn_Type irqno; 39 }; 40 41 #ifdef __cplusplus 42 } 43 #endif 44 45 #endif /* __DRV_GPIO_H__ */ 46 47