XMC4500-Relax: Add LED support.
This commit is contained in:
parent
3a91ba5264
commit
e1f86f407f
@ -42,6 +42,8 @@
|
|||||||
|
|
||||||
#include <nuttx/config.h>
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include "xmc4_gpio.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Pre-processor Definitions
|
* Pre-processor Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -50,18 +52,30 @@
|
|||||||
*
|
*
|
||||||
* The XMC4500 Relax Lite v1 board has two LEDs:
|
* The XMC4500 Relax Lite v1 board has two LEDs:
|
||||||
*
|
*
|
||||||
* LED1 P1.1 High output illuminates
|
* LED1 P1.1, Pad type A1+, High output illuminates
|
||||||
* LED2 P1.0 High output illuminates
|
* LED2 P1.0, Pad type A1+ High output illuminates
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define GPIO_LED1 (GPIO_OUTPUT | GPIO_OUTPUT_PUSHPULL | \
|
||||||
|
GPIO_PADA1P_STRONGSOFT | GPIO_PINCTRL_SOFTWARE | \
|
||||||
|
GPIO_OUTPUT_CLEAR | GPIO_PORT1 | GPIO_PIN1)
|
||||||
|
#define GPIO_LED2 (GPIO_OUTPUT | GPIO_OUTPUT_PUSHPULL | \
|
||||||
|
GPIO_PADA1P_STRONGSOFT | GPIO_PINCTRL_SOFTWARE | \
|
||||||
|
GPIO_OUTPUT_CLEAR | GPIO_PORT1 | GPIO_PIN0)
|
||||||
|
|
||||||
/* BUTTONS
|
/* BUTTONS
|
||||||
*
|
*
|
||||||
* The XMC4500 Relax Lite v1 board has two buttons:
|
* The XMC4500 Relax Lite v1 board has two buttons:
|
||||||
*
|
*
|
||||||
* BUTTON1 P1.14 Low input sensed when button pressed
|
* BUTTON1 P1.14, Pad type A2, Low input sensed when button pressed
|
||||||
* BUTTON2 P1.15 Low input sensed when button pressed
|
* BUTTON2 P1.15, Pad type A2, Low input sensed when button pressed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define GPIO_BUTTON1 (GPIO_INPUT | GPIO_PINCTRL_SOFTWARE | \
|
||||||
|
GPIO_PORT1 | GPIO_PIN14)
|
||||||
|
#define GPIO_BUTTON2 (GPIO_INPUT | GPIO_PINCTRL_SOFTWARE | \
|
||||||
|
GPIO_PORT1 | GPIO_PIN15)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -33,6 +33,30 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* The XMC4500 Relax Lite v1 board has two LEDs:
|
||||||
|
*
|
||||||
|
* LED1 P1.1 High output illuminates
|
||||||
|
* LED2 P1.0 High output illuminates
|
||||||
|
*
|
||||||
|
* These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is
|
||||||
|
* defined. In that case, the usage by the board port is defined in
|
||||||
|
* include/board.h and src/sam_autoleds.c. The LEDs are used to encode
|
||||||
|
* OS-related events as follows:
|
||||||
|
*
|
||||||
|
* SYMBOL Meaning LED state
|
||||||
|
* LED2 LED1
|
||||||
|
* --------------------- -------------------------- ------ ------ */
|
||||||
|
|
||||||
|
#define LED_STARTED 0 /* NuttX has been started OFF OFF */
|
||||||
|
#define LED_HEAPALLOCATE 0 /* Heap has been allocated OFF OFF */
|
||||||
|
#define LED_IRQSENABLED 0 /* Interrupts enabled OFF OFF */
|
||||||
|
#define LED_STACKCREATED 1 /* Idle stack created ON OFF */
|
||||||
|
#define LED_INIRQ 2 /* In an interrupt No change */
|
||||||
|
#define LED_SIGNAL 2 /* In a signal handler No change */
|
||||||
|
#define LED_ASSERTION 2 /* An assertion failed No change */
|
||||||
|
#define LED_PANIC 3 /* The system has crashed N/C Blinking */
|
||||||
|
#undef LED_IDLE /* MCU is is sleep mode Not used */
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Included Files
|
* Included Files
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -42,10 +66,93 @@
|
|||||||
#include <nuttx/board.h>
|
#include <nuttx/board.h>
|
||||||
#include <arch/board/board.h>
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "xmc4_gpio.h"
|
||||||
#include "xmc4500-relax.h"
|
#include "xmc4500-relax.h"
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_LEDS
|
#ifdef CONFIG_ARCH_LEDS
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Private Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static void board_led1_on(int led)
|
||||||
|
{
|
||||||
|
bool ledon = false;
|
||||||
|
|
||||||
|
switch (led)
|
||||||
|
{
|
||||||
|
case 0: /* LED1=OFF */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: /* LED1=ON */
|
||||||
|
ledon = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* LED1=N/C */
|
||||||
|
case 3: /* LED1=N/C */
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
xmc4_gpio_write(GPIO_LED1, ledon);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void board_led2_on(int led)
|
||||||
|
{
|
||||||
|
bool ledon = false;
|
||||||
|
|
||||||
|
switch (led)
|
||||||
|
{
|
||||||
|
case 0: /* LED2=OFF */
|
||||||
|
case 1: /* LED2=OFF */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: /* LED2=ON */
|
||||||
|
ledon = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* LED2=N/C */
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
xmc4_gpio_write(GPIO_LED2, ledon);
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_led1_off(int led)
|
||||||
|
{
|
||||||
|
switch (led)
|
||||||
|
{
|
||||||
|
case 0: /* LED1=OFF */
|
||||||
|
case 1: /* LED1=OFF */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* LED1=N/C */
|
||||||
|
case 3: /* LED1=N/C */
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
xmc4_gpio_write(GPIO_LED1, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_led2_off(int led)
|
||||||
|
{
|
||||||
|
switch (led)
|
||||||
|
{
|
||||||
|
case 0: /* LED2=OFF */
|
||||||
|
case 1: /* LED2=OFF */
|
||||||
|
case 3: /* LED2=OFF */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* LED2=N/C */
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
xmc4_gpio_write(GPIO_LED2, false);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -56,7 +163,10 @@
|
|||||||
|
|
||||||
void board_autoled_initialize(void)
|
void board_autoled_initialize(void)
|
||||||
{
|
{
|
||||||
#warning Missing logic
|
/* Configure LED1-2 GPIOs for output */
|
||||||
|
|
||||||
|
(void)xmc4_gpio_config(GPIO_LED1);
|
||||||
|
(void)xmc4_gpio_config(GPIO_LED2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -65,7 +175,8 @@ void board_autoled_initialize(void)
|
|||||||
|
|
||||||
void board_autoled_on(int led)
|
void board_autoled_on(int led)
|
||||||
{
|
{
|
||||||
#warning Missing logic
|
board_led1_on(led);
|
||||||
|
board_led2_on(led);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -74,7 +185,8 @@ void board_autoled_on(int led)
|
|||||||
|
|
||||||
void board_autoled_off(int led)
|
void board_autoled_off(int led)
|
||||||
{
|
{
|
||||||
#warning Missing logic
|
board_led1_off(led);
|
||||||
|
board_led2_off(led);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_ARCH_LEDS */
|
#endif /* CONFIG_ARCH_LEDS */
|
||||||
|
@ -41,6 +41,8 @@
|
|||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
#include <arch/board/board.h>
|
#include <arch/board/board.h>
|
||||||
|
|
||||||
|
#include "xmc4_gpio.h"
|
||||||
#include "xmc4500-relax.h"
|
#include "xmc4500-relax.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -53,7 +55,10 @@
|
|||||||
|
|
||||||
void board_userled_initialize(void)
|
void board_userled_initialize(void)
|
||||||
{
|
{
|
||||||
#warning Missing logic
|
/* Configure LED1-2 GPIOs for output */
|
||||||
|
|
||||||
|
(void)xmc4_gpio_config(GPIO_LED1);
|
||||||
|
(void)xmc4_gpio_config(GPIO_LED2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -62,7 +67,22 @@ void board_userled_initialize(void)
|
|||||||
|
|
||||||
void board_userled(int led, bool ledon)
|
void board_userled(int led, bool ledon)
|
||||||
{
|
{
|
||||||
#warning Missing logic
|
gpioconfig_t ledcfg;
|
||||||
|
|
||||||
|
if (led == BOARD_LED1)
|
||||||
|
{
|
||||||
|
ledcfg = GPIO_LED1;
|
||||||
|
}
|
||||||
|
else if (led == BOARD_LED2)
|
||||||
|
{
|
||||||
|
ledcfg = GPIO_LED2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
xmc4_gpio_write(ledcfg, ledon);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -71,5 +91,11 @@ void board_userled(int led, bool ledon)
|
|||||||
|
|
||||||
void board_userled_all(uint8_t ledset)
|
void board_userled_all(uint8_t ledset)
|
||||||
{
|
{
|
||||||
#warning Missing logic
|
bool ledon;
|
||||||
|
|
||||||
|
ledon = ((ledset & BOARD_LED1_BIT) != 0);
|
||||||
|
xmc4_gpio_write(GPIO_LED1, ledon);
|
||||||
|
|
||||||
|
ledon = ((ledset & BOARD_LED2_BIT) != 0);
|
||||||
|
xmc4_gpio_write(GPIO_LED2, ledon);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user