123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #include "fsl_gpio.h"
- #ifndef FSL_COMPONENT_ID
- #define FSL_COMPONENT_ID "platform.drivers.lpc_gpio"
- #endif
- #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
- static const clock_ip_name_t s_gpioClockName[] = GPIO_CLOCKS;
- #endif
- #if !(defined(FSL_FEATURE_GPIO_HAS_NO_RESET) && FSL_FEATURE_GPIO_HAS_NO_RESET)
- static const reset_ip_name_t s_gpioResets[] = GPIO_RSTS_N;
- #endif
- void GPIO_PortInit(GPIO_Type *base, uint32_t port)
- {
- #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
- assert(port < ARRAY_SIZE(s_gpioClockName));
-
- CLOCK_EnableClock(s_gpioClockName[port]);
- #endif
- #if !(defined(FSL_FEATURE_GPIO_HAS_NO_RESET) && FSL_FEATURE_GPIO_HAS_NO_RESET)
-
- RESET_PeripheralReset(s_gpioResets[port]);
- #endif
- }
- void GPIO_PinInit(GPIO_Type *base, uint32_t port, uint32_t pin, const gpio_pin_config_t *config)
- {
- if (config->pinDirection == kGPIO_DigitalInput)
- {
- #if defined(FSL_FEATURE_GPIO_DIRSET_AND_DIRCLR) && (FSL_FEATURE_GPIO_DIRSET_AND_DIRCLR)
- base->DIRCLR[port] = 1U << pin;
- #else
- base->DIR[port] &= ~(1U << pin);
- #endif
- }
- else
- {
-
- if (config->outputLogic == 0U)
- {
- base->CLR[port] = (1U << pin);
- }
- else
- {
- base->SET[port] = (1U << pin);
- }
- #if defined(FSL_FEATURE_GPIO_DIRSET_AND_DIRCLR) && (FSL_FEATURE_GPIO_DIRSET_AND_DIRCLR)
- base->DIRSET[port] = 1U << pin;
- #else
- base->DIR[port] |= 1U << pin;
- #endif
- }
- }
|