You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.0 KiB

#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;
}