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