#include "app_gpio.h" void Gpio_Port_Initialization(void) { SYS_ClockEnable(SYS_PERIPH_CLOCK_GPIO0); } void GPIO0_IRQHandler(void) { GPIO_Handler(0); } void Gpio_Set_Port_Output(uint32_t Port, uint32_t Pin, gpio_pad_t PullUpDown) { gpio_cfg_t gpio_out; gpio_out.port = Port; gpio_out.mask = Pin; gpio_out.pad = PullUpDown; gpio_out.func = GPIO_FUNC_OUT; GPIO_Config(&gpio_out); } void Gpio_Set_Port_Input(uint32_t Port, uint32_t Pin, gpio_pad_t PullUpDown) { gpio_cfg_t gpio_in; gpio_in.port = Port; gpio_in.mask = Pin; gpio_in.pad = PullUpDown; gpio_in.func = GPIO_FUNC_IN; GPIO_Config(&gpio_in); } void Gpio_Register_Interrupt_Callback(uint32_t Port, uint32_t Pin, gpio_pad_t PullUpDown, gpio_int_pol_t int_state, gpio_callback_fn callback, void* pCallbackParam) { gpio_cfg_t gpio_interrupt; gpio_interrupt.port = Port; gpio_interrupt.mask = Pin; gpio_interrupt.pad = PullUpDown; gpio_interrupt.func = GPIO_FUNC_IN; GPIO_Config(&gpio_interrupt); GPIO_RegisterCallback(&gpio_interrupt, callback, pCallbackParam); GPIO_IntConfig(&gpio_interrupt, GPIO_INT_EDGE, int_state); GPIO_IntEnable(&gpio_interrupt); NVIC_EnableIRQ((IRQn_Type)MXC_GPIO_GET_IRQ(Port)); } void Gpio_UnRegister_Interrupt_Callback(uint32_t port, uint32_t pin) { gpio_cfg_t gpio_interrupt; gpio_interrupt.port = port; gpio_interrupt.mask = pin; GPIO_RegisterCallback(&gpio_interrupt, NULL, NULL); } uint32_t Gpio_Get_InputState(uint32_t Port, uint32_t Pin) { mxc_gpio_regs_t *gpio = MXC_GPIO_GET_GPIO(Port); return (gpio->in & Pin); } void Gpio_Output_Set(uint32_t port, uint32_t pin) { mxc_gpio_regs_t *gpio = MXC_GPIO_GET_GPIO(port); gpio->out_set = pin; } void Gpio_Output_Clear(uint32_t port, uint32_t pin) { mxc_gpio_regs_t *gpio = MXC_GPIO_GET_GPIO(port); gpio->out_clr = pin; } void Gpio_Output_Toggle(uint32_t port, uint32_t pin) { mxc_gpio_regs_t *gpio = MXC_GPIO_GET_GPIO(port); gpio->out ^= pin; }