Freedom K64F: Correct button support

This commit is contained in:
Gregory Nutt
2016-07-02 08:18:42 -06:00
parent 966a6d3ba2
commit adbbca0bfc
4 changed files with 64 additions and 25 deletions
+12
View File
@@ -87,6 +87,18 @@ LEDs and Buttons
LED_PANIC The system has crashed FLASH OFF OFF
LED_IDLE K64 is in sleep mode (Optional, not used)
Buttons
-------
Two push buttons, SW2 and SW3, are available on FRDM-K64F board, where
SW2 is connected to PTC6 and SW3 is connected to PTA4. Besides the
general purpose input/output functions, SW2 and SW3 can be low-power
wake up signal. Also, only SW3 can be a non-maskable interrupt.
Switch GPIO Function
--------- ---------------------------------------------------------------
SW2 PTC6/SPI0_SOUT/PD0_EXTRG/I2S0_RX_BCLK/FB_AD9/I2S0_MCLK/LLWU_P10
SW3 PTA4/FTM0_CH1/NMI_b/LLWU_P3
Development Environment
=======================
+12 -7
View File
@@ -167,17 +167,22 @@
#undef LED_IDLE /* K64 is in sleep mode (Not used) */
/* Button definitions ***************************************************************/
/* The FREEDOM-K64F has user buttons (plus a reset button):
/* Two push buttons, SW2 and SW3, are available on FRDM-K64F board, where SW2 is
* connected to PTC6 and SW3 is connected to PTA4. Besides the general purpose
* input/output functions, SW2 and SW3 can be low-power wake up signal. Also, only
* SW3 can be a non-maskable interrupt.
*
* 1. SW1 (IRQ0) PTA19
* 2. SW2 (IRQ1) PTE26
* Switch GPIO Function
* --------- ---------------------------------------------------------------
* SW2 PTC6/SPI0_SOUT/PD0_EXTRG/I2S0_RX_BCLK/FB_AD9/I2S0_MCLK/LLWU_P10
* SW3 PTA4/FTM0_CH1/NMI_b/LLWU_P3
*/
#define BUTTON_SW1 0
#define BUTTON_SW2 1
#define BUTTON_SW2 0
#define BUTTON_SW3 1
#define BUTTON_SW1_BIT (1 << BUTTON_WAKEUP)
#define BUTTON_SW2_BIT (1 << BUTTON_TAMPER)
#define BUTTON_SW2_BIT (1 << BUTTON_WAKEUP)
#define BUTTON_SW3_BIT (1 << BUTTON_TAMPER)
/* Alternative pin resolution *******************************************************/
/* If there are alternative configurations for various pins in the
+21 -4
View File
@@ -62,12 +62,29 @@
#endif
/* FREEDOM-K64F GPIOs ****************************************************************/
/* A micro Secure Digital (SD) card slot is available on the FRDM-K64F connected to
* the SD Host Controller (SDHC) signals of the MCU. This slot will accept micro
* format SD memory cards. The SD card detect pin (PTE6) is an open switch that
* shorts with VDD when card is inserted.
*
* There is no Write Protect pin available to the K64F.
*/
#define GPIO_SD_CARDDETECT (GPIO_PULLUP | PIN_INT_BOTH | PIN_PORTE | PIN28)
#define GPIO_SD_WRPROTECT (GPIO_PULLUP | PIN_PORTE | PIN27)
#define GPIO_SD_CARDDETECT (GPIO_PULLUP | PIN_INT_BOTH | PIN_PORTE | PIN6)
#define GPIO_SW1 (GPIO_PULLUP | PIN_INT_BOTH | PIN_PORTA | PIN19)
#define GPIO_SW2 (GPIO_PULLUP | PIN_INT_BOTH | PIN_PORTE | PIN26)
/* Two push buttons, SW2 and SW3, are available on FRDM-K64F board, where SW2 is
* connected to PTC6 and SW3 is connected to PTA4. Besides the general purpose
* input/output functions, SW2 and SW3 can be low-power wake up signal. Also, only
* SW3 can be a non-maskable interrupt.
*
* Switch GPIO Function
* --------- ---------------------------------------------------------------
* SW2 PTC6/SPI0_SOUT/PD0_EXTRG/I2S0_RX_BCLK/FB_AD9/I2S0_MCLK/LLWU_P10
* SW3 PTA4/FTM0_CH1/NMI_b/LLWU_P3
*/
#define GPIO_SW2 (GPIO_PULLUP | PIN_INT_BOTH | PIN_PORTC | PIN6)
#define GPIO_SW3 (GPIO_PULLUP | PIN_INT_BOTH | PIN_PORTA | PIN4)
/* An RGB LED is connected through GPIO as shown below:
*
+19 -14
View File
@@ -53,10 +53,15 @@
* Pre-processor Definitions
****************************************************************************/
/* The TWR-K60N512 has user buttons (plus a reset button):
/* Two push buttons, SW2 and SW3, are available on FRDM-K64F board, where SW2 is
* connected to PTC6 and SW3 is connected to PTA4. Besides the general purpose
* input/output functions, SW2 and SW3 can be low-power wake up signal. Also, only
* SW3 can be a non-maskable interrupt.
*
* 1. SW1 (IRQ0) PTA19
* 2. SW2 (IRQ1) PTE26
* Switch GPIO Function
* --------- ---------------------------------------------------------------
* SW2 PTC6/SPI0_SOUT/PD0_EXTRG/I2S0_RX_BCLK/FB_AD9/I2S0_MCLK/LLWU_P10
* SW3 PTA4/FTM0_CH1/NMI_b/LLWU_P3
*/
/****************************************************************************
@@ -78,8 +83,8 @@ void board_button_initialize(void)
{
/* Configure the two buttons as inputs */
kinetis_pinconfig(GPIO_SW1);
kinetis_pinconfig(GPIO_SW2);
kinetis_pinconfig(GPIO_SW3);
}
/****************************************************************************
@@ -90,16 +95,16 @@ uint8_t board_buttons(void)
{
uint8_t ret = 0;
if (kinetis_gpioread(GPIO_SW1))
{
ret |= BUTTON_SW1_BIT;
}
if (kinetis_gpioread(GPIO_SW2))
{
ret |= BUTTON_SW2_BIT;
}
if (kinetis_gpioread(GPIO_SW3))
{
ret |= BUTTON_SW3_BIT;
}
return ret
}
@@ -135,14 +140,14 @@ xcpt_t board_button_irq(int id, xcpt_t irqhandler)
/* Map the button id to the GPIO bit set. */
if (id == BUTTON_SW1)
{
pinset = GPIO_SW1;
}
else if (id == BUTTON_SW2)
if (id == BUTTON_SW2)
{
pinset = GPIO_SW2;
}
else if (id == BUTTON_SW3)
{
pinset = GPIO_SW3;
}
else
{
return NULL;