1 #include "Driver_GPIO.h"
3 /* GPIO driver instance */
4 extern ARM_DRIVER_GPIO Driver_GPIO0;
5 static ARM_DRIVER_GPIO *GPIOdrv = &Driver_GPIO0;
13 /* GPIO Signal Event callback */
14 static void GPIO_SignalEvent (ARM_GPIO_Pin_t pin, uint32_t event) {
18 /* Events on pin GPIO_PIN1 */
19 if (event & ARM_GPIO_EVENT_RISING_EDGE) {
20 /* Rising-edge detected */
22 if (event & ARM_GPIO_EVENT_FALLING_EDGE) {
23 /* Falling-edge detected */
29 /* Get GPIO Input 0 */
30 uint32_t GPIO_GetInput0 (void) {
31 return (GPIOdrv->GetInput(GPIO_PIN0));
34 /* Get GPIO Input 1 */
35 uint32_t GPIO_GetInput1 (void) {
36 return (GPIOdrv->GetInput(GPIO_PIN1));
39 /* Set GPIO Output Pin 2 */
40 void GPIO_SetOutput2 (uint32_t val) {
41 GPIOdrv->SetOutput(GPIO_PIN2, val);
44 /* Set GPIO Output Pin 3 */
45 void GPIO_SetOutput3 (uint32_t val) {
46 GPIOdrv->SetOutput(GPIO_PIN3, val);
50 void GPIO_Setup (void) {
52 /* Pin GPIO_PIN0: Input */
53 GPIOdrv->Setup (GPIO_PIN0, NULL);
54 GPIOdrv->SetDirection (GPIO_PIN0, ARM_GPIO_INPUT);
56 /* Pin GPIO_PIN1: Input with trigger on rising and falling edge */
57 GPIOdrv->Setup (GPIO_PIN1, GPIO_SignalEvent);
58 GPIOdrv->SetDirection (GPIO_PIN1, ARM_GPIO_INPUT);
59 GPIOdrv->SetEventTrigger(GPIO_PIN1, ARM_GPIO_TRIGGER_EITHER_EDGE);
61 /* Pin GPIO_PIN2: Output push-pull (initial level 0) */
62 GPIOdrv->Setup (GPIO_PIN2, NULL);
63 GPIOdrv->SetOutput (GPIO_PIN2, 0U);
64 GPIOdrv->SetDirection (GPIO_PIN2, ARM_GPIO_OUTPUT);
66 /* Pin GPIO_PIN3: Output open-drain with pull-up resistor (initial level 1) */
67 GPIOdrv->Setup (GPIO_PIN3, NULL);
68 GPIOdrv->SetPullResistor(GPIO_PIN3, ARM_GPIO_PULL_UP);
69 GPIOdrv->SetOutputMode (GPIO_PIN3, ARM_GPIO_OPEN_DRAIN);
70 GPIOdrv->SetOutput (GPIO_PIN3, 1U);
71 GPIOdrv->SetDirection (GPIO_PIN3, ARM_GPIO_OUTPUT);