127 lines
4.7 KiB
C
127 lines
4.7 KiB
C
/*
|
|
* buttons_config.h
|
|
*
|
|
* Copyright (c) 2021-2023, Erich Styger
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef BUTTONS_CONFIG_H_
|
|
#define BUTTONS_CONFIG_H_
|
|
|
|
#include "McuLib.h"
|
|
#include "platform.h"
|
|
|
|
#if McuLib_CONFIG_CPU_IS_KINETIS
|
|
#define BUTTONS_PINS_NAVUP_GPIO GPIOB
|
|
#define BUTTONS_PINS_NAVUP_PORT PORTB
|
|
#define BUTTONS_PINS_NAVUP_PIN 3u
|
|
|
|
#define BUTTONS_PINS_NAVDOWN_GPIO GPIOB
|
|
#define BUTTONS_PINS_NAVDOWN_PORT PORTB
|
|
#define BUTTONS_PINS_NAVDOWN_PIN 2u
|
|
|
|
#define BUTTONS_PINS_NAVLEFT_GPIO GPIOA
|
|
#define BUTTONS_PINS_NAVLEFT_PORT PORTA
|
|
#define BUTTONS_PINS_NAVLEFT_PIN 13u
|
|
|
|
#define BUTTONS_PINS_NAVRIGHT_GPIO GPIOA
|
|
#define BUTTONS_PINS_NAVRIGHT_PORT PORTA
|
|
#define BUTTONS_PINS_NAVRIGHT_PIN 12u
|
|
|
|
#define BUTTONS_PINS_NAVCENTER_GPIO GPIOB
|
|
#define BUTTONS_PINS_NAVCENTER_PORT PORTB
|
|
#define BUTTONS_PINS_NAVCENTER_PIN 16u
|
|
|
|
#define BUTTONS_ENABLE_CLOCK() CLOCK_EnableClock(kCLOCK_PortA); CLOCK_EnableClock(kCLOCK_PortB) /* enable clocking */
|
|
#elif McuLib_CONFIG_CPU_IS_LPC
|
|
/* user button on LPC845-BRK board: PIO0_4 */
|
|
#define BUTTONS_PINS_USER_GPIO GPIO
|
|
#define BUTTONS_PINS_USER_PORT 0
|
|
#define BUTTONS_PINS_USER_PIN 4
|
|
#define BUTTONS_PINS_USER_IOCON IOCON_INDEX_PIO0_4
|
|
#define BUTTONS_PINS_USER_PINTSEL kSYSCON_GpioPort0Pin4ToPintsel
|
|
|
|
#define BUTTONS_PINS_NAVUP_GPIO GPIO
|
|
#define BUTTONS_PINS_NAVUP_PORT 0
|
|
#define BUTTONS_PINS_NAVUP_PIN 8u
|
|
#define BUTTONS_PINS_NAVUP_IOCON IOCON_INDEX_PIO0_8
|
|
#define BUTTONS_PINS_NAVUP_PINTSEL kSYSCON_GpioPort0Pin8ToPintsel
|
|
|
|
#define BUTTONS_PINS_NAVDOWN_GPIO GPIO
|
|
#define BUTTONS_PINS_NAVDOWN_PORT 0
|
|
#define BUTTONS_PINS_NAVDOWN_PIN 9u
|
|
#define BUTTONS_PINS_NAVDOWN_IOCON IOCON_INDEX_PIO0_9
|
|
#define BUTTONS_PINS_NAVDOWN_PINTSEL kSYSCON_GpioPort0Pin9ToPintsel
|
|
|
|
#define BUTTONS_PINS_NAVLEFT_GPIO GPIO
|
|
#define BUTTONS_PINS_NAVLEFT_PORT 0
|
|
#define BUTTONS_PINS_NAVLEFT_PIN 29u
|
|
#define BUTTONS_PINS_NAVLEFT_IOCON IOCON_INDEX_PIO0_29
|
|
#define BUTTONS_PINS_NAVLEFT_PINTSEL kSYSCON_GpioPort0Pin29ToPintsel
|
|
|
|
#define BUTTONS_PINS_NAVRIGHT_GPIO GPIO
|
|
#define BUTTONS_PINS_NAVRIGHT_PORT 0
|
|
#define BUTTONS_PINS_NAVRIGHT_PIN 28u
|
|
#define BUTTONS_PINS_NAVRIGHT_IOCON IOCON_INDEX_PIO0_28
|
|
#define BUTTONS_PINS_NAVRIGHT_PINTSEL kSYSCON_GpioPort0Pin28ToPintsel
|
|
|
|
#define BUTTONS_PINS_NAVCENTER_GPIO GPIO
|
|
#define BUTTONS_PINS_NAVCENTER_PORT 0
|
|
#define BUTTONS_PINS_NAVCENTER_PIN 27u
|
|
#define BUTTONS_PINS_NAVCENTER_IOCON IOCON_INDEX_PIO0_27
|
|
#define BUTTONS_PINS_NAVCENTER_PINTSEL kSYSCON_GpioPort0Pin27ToPintsel
|
|
|
|
#define BUTTONS_ENABLE_CLOCK() GPIO_PortInit(GPIO, 0) /* ungate the clocks for GPIO0: used for user button */
|
|
#elif PL_CONFIG_HW_VERSION==PL_CONFIG_HW_ADIS_PICO_W_CONSOLE_V0_1
|
|
#define BUTTONS_PINS_NAVUP_PIN 15u
|
|
#define BUTTONS_PINS_NAVDOWN_PIN 14u
|
|
#define BUTTONS_PINS_NAVLEFT_PIN 13u
|
|
#define BUTTONS_PINS_NAVRIGHT_PIN 12u
|
|
#define BUTTONS_PINS_NAVCENTER_PIN 11u
|
|
|
|
#define BUTTONS_ENABLE_CLOCK() /* nothing */
|
|
#elif PL_CONFIG_HW_VERSION==PL_CONFIG_HW_ADIS_PICO_W_CONSOLE_V0_2
|
|
#define BUTTONS_PINS_NAVUP_PIN 14u
|
|
#define BUTTONS_PINS_NAVDOWN_PIN 15u
|
|
#define BUTTONS_PINS_NAVLEFT_PIN 28u
|
|
#define BUTTONS_PINS_NAVRIGHT_PIN 26u
|
|
#define BUTTONS_PINS_NAVCENTER_PIN 27u
|
|
|
|
#define BUTTONS_ENABLE_CLOCK() /* nothing */
|
|
#elif McuLib_CONFIG_CPU_IS_ESP32
|
|
/* ESP32: Only pins that support both input & output have integrated pull-up and pull-down resistors. Input-only GPIOs 34-39 do not. */
|
|
#define BUTTONS_PINS_NAVUP_PIN GPIO_NUM_25
|
|
#define BUTTONS_PINS_NAVDOWN_PIN GPIO_NUM_39 /* hardware bug: with WiFi enabled, it triggers an interrupt if using interrupts! */
|
|
#define BUTTONS_PINS_NAVLEFT_PIN GPIO_NUM_35
|
|
#define BUTTONS_PINS_NAVRIGHT_PIN GPIO_NUM_36 /* hardware bug: with WiFi enabled, it triggers an interrupt if using interrupts! */
|
|
#define BUTTONS_PINS_NAVCENTER_PIN GPIO_NUM_34
|
|
#define BUTTONS_ENABLE_CLOCK() /* nothing */
|
|
#endif
|
|
|
|
typedef enum {
|
|
BTN_NAV_UP,
|
|
BTN_NAV_DOWN,
|
|
BTN_NAV_LEFT,
|
|
BTN_NAV_RIGHT,
|
|
BTN_NAV_CENTER,
|
|
#if McuLib_CONFIG_CPU_IS_LPC
|
|
BTN_USER,
|
|
#endif
|
|
BTN_NOF_BUTTONS /* sentinel, must be last in list! */
|
|
} BTN_Buttons_e;
|
|
|
|
/* bits of the buttons */
|
|
#define BTN_BIT_NAV_UP (1<<0)
|
|
#define BTN_BIT_NAV_DOWN (1<<1)
|
|
#define BTN_BIT_NAV_LEFT (1<<2)
|
|
#define BTN_BIT_NAV_RIGHT (1<<3)
|
|
#define BTN_BIT_NAV_CENTER (1<<4)
|
|
#if McuLib_CONFIG_CPU_IS_LPC
|
|
#define BTN_BIT_USER (1<<5)
|
|
#endif
|
|
|
|
#define BTN_CONFIG_ROTATION (0) /* 180 for rotated nav 180 degree */
|
|
|
|
#endif /* BUTTONS_CONFIG_H_ */
|