drv_gpio.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. * 2022-03-02 FMD-AE first version
  9. */
  10. #ifndef __DRV_GPIO_H__
  11. #define __DRV_GPIO_H__
  12. #include <board.h>
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\
  17. ((__GPIOx__) == (GPIOB))? 1U :\
  18. ((__GPIOx__) == (GPIOC))? 2U :\
  19. ((__GPIOx__) == (GPIOD))? 3U :\
  20. ((__GPIOx__) == (GPIOF))? 5U : 4U)
  21. #define __GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))
  22. #define __GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
  23. #define __FT32_PORT(port) GPIO##port##_BASE
  24. #define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__FT32_PORT(PORTx) - (rt_base_t)GPIOA_BASE)/(0x0400UL) )) + PIN)
  25. struct pin_irq_map
  26. {
  27. rt_uint16_t pinbit;
  28. IRQn_Type irqno;
  29. };
  30. int rt_hw_pin_init(void);
  31. #ifdef __cplusplus
  32. }
  33. #endif
  34. #endif /* __DRV_GPIO_H__ */