void Keyboard_Initialize (void) { uint32_t n; /* Configure pins: Input Mode (25 MHz) */ for (n = 0; n < NUM_KEYS; n++) { GPIO_PortClock (Pin_Key[n].port, true); GPIO_PinWrite (Pin_Key[n].port, Pin_Key[n].num, 0); GPIO_PinConfigure(Pin_Key[n].port, Pin_Key[n].num, GPIO_MODE_INPUT, GPIO_OUTPUT_PUSH_PULL, GPIO_OUTPUT_SPEED_25MHz, GPIO_NO_PULL_UP_DOWN); } RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI3_PC; /* button right */ SYSCFG->EXTICR[3] |= SYSCFG_EXTICR4_EXTI14_PB; /* button left */ NVIC_EnableIRQ(EXTI3_IRQn); NVIC_EnableIRQ(EXTI15_10_IRQn); /* Enable interrupts from both rising and falling edge of buttons */ EXTI->IMR |= EXTI_IMR_MR3 | EXTI_IMR_MR14; EXTI->RTSR |= EXTI_RTSR_TR3 | EXTI_RTSR_TR14; EXTI->FTSR |= EXTI_FTSR_TR3 | EXTI_FTSR_TR14; }
/*----------------------------------------------------------------------------- * LED_Uninitialize: Uninitialize LEDs * * Parameters: (none) * Return: (none) *----------------------------------------------------------------------------*/ void LED_Uninitialize (void) { uint32_t n; /* Configure pins: Input mode, without Pull-up/down resistors */ for (n = 0; n < NUM_LEDS; n++) { GPIO_PinConfigure(Pin_LED[n].port, Pin_LED[n].num, GPIO_IN_FLOATING, GPIO_MODE_INPUT); } }
/*----------------------------------------------------------------------------- * LED_Initialize: Initialize LEDs * * Parameters: (none) * Return: (none) *----------------------------------------------------------------------------*/ void LED_Initialize (void) { uint32_t n; /* Configure pins: Push-pull Output Mode (50 MHz) with Pull-down resistors */ for (n = 0; n < NUM_LEDS; n++) { GPIO_PortClock (Pin_LED[n].port, true); GPIO_PinWrite (Pin_LED[n].port, Pin_LED[n].num, 0); GPIO_PinConfigure(Pin_LED[n].port, Pin_LED[n].num, GPIO_OUT_PUSH_PULL, GPIO_MODE_OUT2MHZ); } }
/*----------------------------------------------------------------------------- * LED_Uninitialize: Uninitialize LEDs * * Parameters: (none) * Return: (none) *----------------------------------------------------------------------------*/ void LED_Uninitialize (void) { uint32_t n; /* Configure pins: Input mode, without Pull-up/down resistors */ for (n = 0; n < NUM_LEDS; n++) { GPIO_PinConfigure(Pin_LED[n].port, Pin_LED[n].num, GPIO_MODE_INPUT, GPIO_OUTPUT_PUSH_PULL, GPIO_OUTPUT_SPEED_2MHz, GPIO_NO_PULL_UP_DOWN); } }