mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 00:14:22 +08:00
Finish code for basic STM3240 port
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4124 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -12,6 +12,7 @@ Contents
|
|||||||
- IDEs
|
- IDEs
|
||||||
- NuttX buildroot Toolchain
|
- NuttX buildroot Toolchain
|
||||||
- STM3240G-EVAL-specific Configuration Options
|
- STM3240G-EVAL-specific Configuration Options
|
||||||
|
- LEDs
|
||||||
- Configurations
|
- Configurations
|
||||||
|
|
||||||
Development Environment
|
Development Environment
|
||||||
@@ -160,6 +161,31 @@ NuttX buildroot Toolchain
|
|||||||
detailed PLUS some special instructions that you will need to follow if you are
|
detailed PLUS some special instructions that you will need to follow if you are
|
||||||
building a Cortex-M3 toolchain for Cygwin under Windows.
|
building a Cortex-M3 toolchain for Cygwin under Windows.
|
||||||
|
|
||||||
|
LEDs
|
||||||
|
====
|
||||||
|
|
||||||
|
The STM3240G-EVAL board has four LEDs labeled. Usage of these LEDs is defined
|
||||||
|
in include/board.h and src/up_leds.c. They are encoded as follows:
|
||||||
|
|
||||||
|
SYMBOL Meaning LED1* LED2 LED3 LED4
|
||||||
|
------------------- ----------------------- ------- ------- ------- ------
|
||||||
|
LED_STARTED NuttX has been started ON OFF OFF OFF
|
||||||
|
LED_HEAPALLOCATE Heap has been allocated OFF ON OFF OFF
|
||||||
|
LED_IRQSENABLED Interrupts enabled ON ON OFF OFF
|
||||||
|
LED_STACKCREATED Idle stack created OFF OFF ON OFF
|
||||||
|
LED_INIRQ In an interrupt** ON N/C N/C OFF
|
||||||
|
LED_SIGNAL In a signal handler*** N/C ON N/C OFF
|
||||||
|
LED_ASSERTION An assertion failed ON ON N/C OFF
|
||||||
|
LED_PANIC The system has crashed N/C N/C N/C ON
|
||||||
|
LED_IDLE STM32 is is sleep mode (Optional, not used)
|
||||||
|
|
||||||
|
* If LED1, LED2, LED3 are statically on, then NuttX probably failed to boot
|
||||||
|
and these LEDs will give you some indication of where the failure was
|
||||||
|
** The normal state is LED3 ON and LED1 faintly glowing. This faint glow
|
||||||
|
is because of timer interupts that result in the LED being illuminated
|
||||||
|
on a small proportion of the time.
|
||||||
|
*** LED2 may also flicker normally if signals are processed.
|
||||||
|
|
||||||
STM3240G-EVAL-specific Configuration Options
|
STM3240G-EVAL-specific Configuration Options
|
||||||
============================================
|
============================================
|
||||||
|
|
||||||
@@ -221,6 +247,10 @@ STM3240G-EVAL-specific Configuration Options
|
|||||||
|
|
||||||
CONFIG_ARCH_IRQPRIO=y
|
CONFIG_ARCH_IRQPRIO=y
|
||||||
|
|
||||||
|
CONFIG_ARCH_FPU - The STM3240xxx supports a floating point unit (FPU)
|
||||||
|
|
||||||
|
CONFIG_ARCH_FPU=y
|
||||||
|
|
||||||
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
||||||
have LEDs
|
have LEDs
|
||||||
|
|
||||||
|
|||||||
@@ -174,18 +174,28 @@
|
|||||||
|
|
||||||
/* LED definitions ******************************************************************/
|
/* LED definitions ******************************************************************/
|
||||||
|
|
||||||
#define LED_STARTED 0
|
/* The STM3240G-EVAL board has 4 LEDs that we will encode as: */
|
||||||
#define LED_HEAPALLOCATE 1
|
|
||||||
#define LED_IRQSENABLED 2
|
|
||||||
#define LED_STACKCREATED 3
|
|
||||||
#define LED_INIRQ 4
|
|
||||||
#define LED_SIGNAL 5
|
|
||||||
#define LED_ASSERTION 6
|
|
||||||
#define LED_PANIC 7
|
|
||||||
|
|
||||||
/* The STM3240G-EVAL supports several buttons */
|
#define LED_STARTED 0 /* LED1 */
|
||||||
|
#define LED_HEAPALLOCATE 1 /* LED2 */
|
||||||
|
#define LED_IRQSENABLED 2 /* LED1 + LED2 */
|
||||||
|
#define LED_STACKCREATED 3 /* LED3 */
|
||||||
|
#define LED_INIRQ 4 /* LED1 + LED3 */
|
||||||
|
#define LED_SIGNAL 5 /* LED2 + LED3 */
|
||||||
|
#define LED_ASSERTION 6 /* LED1 + LED2 + LED3 */
|
||||||
|
#define LED_PANIC 7 /* N/C + N/C + N/C + LED4 */
|
||||||
|
|
||||||
#warning "Missing logic"
|
/* The STM3240G-EVAL supports three buttons: */
|
||||||
|
|
||||||
|
#define BUTTON_WAKEUP 0
|
||||||
|
#define BUTTON_TAMPER 1
|
||||||
|
#define BUTTON_USER 2
|
||||||
|
|
||||||
|
#define NUM_BUTTONS 3
|
||||||
|
|
||||||
|
#define BUTTON_WAKEUP_BIT (1 << BUTTON_WAKEUP)
|
||||||
|
#define BUTTON_TAMPER_BIT (1 << BUTTON_TAMPER)
|
||||||
|
#define BUTTON_USER_BIT (1 << BUTTON_USER)
|
||||||
|
|
||||||
/* Alternate function pin selections ************************************************/
|
/* Alternate function pin selections ************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,8 @@
|
|||||||
# CONFIG_DRAM_SIZE - Describes the installed DRAM.
|
# CONFIG_DRAM_SIZE - Describes the installed DRAM.
|
||||||
# CONFIG_DRAM_START - The start address of DRAM (physical)
|
# CONFIG_DRAM_START - The start address of DRAM (physical)
|
||||||
# CONFIG_DRAM_END - Last address+1 of installed RAM
|
# CONFIG_DRAM_END - Last address+1 of installed RAM
|
||||||
# CONFIG_ARCH_IRQPRIO - The ST32F103Z supports interrupt prioritization
|
# CONFIG_ARCH_IRQPRIO - The STM3240xxx supports interrupt prioritization
|
||||||
|
# CONFIG_ARCH_FPU - The STM3240xxx supports a floating point unit (FPU)
|
||||||
# CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
# CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
||||||
# stack. If defined, this symbol is the size of the interrupt
|
# stack. If defined, this symbol is the size of the interrupt
|
||||||
# stack in bytes. If not defined, the user task stacks will be
|
# stack in bytes. If not defined, the user task stacks will be
|
||||||
@@ -81,6 +82,7 @@ CONFIG_DRAM_SIZE=0x00030000
|
|||||||
CONFIG_DRAM_START=0x20000000
|
CONFIG_DRAM_START=0x20000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
CONFIG_ARCH_IRQPRIO=y
|
CONFIG_ARCH_IRQPRIO=y
|
||||||
|
CONFIG_ARCH_FPU=y
|
||||||
CONFIG_ARCH_INTERRUPTSTACK=n
|
CONFIG_ARCH_INTERRUPTSTACK=n
|
||||||
CONFIG_ARCH_STACKDUMP=y
|
CONFIG_ARCH_STACKDUMP=y
|
||||||
CONFIG_ARCH_BOOTLOADER=n
|
CONFIG_ARCH_BOOTLOADER=n
|
||||||
@@ -372,7 +374,7 @@ CONFIG_DEBUG=n
|
|||||||
CONFIG_DEBUG_VERBOSE=n
|
CONFIG_DEBUG_VERBOSE=n
|
||||||
CONFIG_DEBUG_SYMBOLS=n
|
CONFIG_DEBUG_SYMBOLS=n
|
||||||
CONFIG_HAVE_CXX=n
|
CONFIG_HAVE_CXX=n
|
||||||
CONFIG_MM_REGIONS=1
|
CONFIG_MM_REGIONS=2
|
||||||
CONFIG_ARCH_LOWPUTC=y
|
CONFIG_ARCH_LOWPUTC=y
|
||||||
CONFIG_RR_INTERVAL=200
|
CONFIG_RR_INTERVAL=200
|
||||||
CONFIG_SCHED_INSTRUMENTATION=n
|
CONFIG_SCHED_INSTRUMENTATION=n
|
||||||
|
|||||||
@@ -64,10 +64,25 @@
|
|||||||
|
|
||||||
/* STM3240G-EVAL GPIOs ******************************************************************************/
|
/* STM3240G-EVAL GPIOs ******************************************************************************/
|
||||||
/* LEDs */
|
/* LEDs */
|
||||||
#warning "Missing logic"
|
|
||||||
|
|
||||||
/* BUTTONS -- NOTE that some have EXTI interrupts configured */
|
#define GPIO_LED1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|\
|
||||||
#warning "Missing logic"
|
GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN6)
|
||||||
|
#define GPIO_LED2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|\
|
||||||
|
GPIO_OUTPUT_CLEAR|GPIO_PORTG|GPIO_PIN8)
|
||||||
|
#define GPIO_LED3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|\
|
||||||
|
GPIO_OUTPUT_CLEAR|GPIO_PORTI|GPIO_PIN9)
|
||||||
|
#define GPIO_LED4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|\
|
||||||
|
GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN7)
|
||||||
|
|
||||||
|
/* BUTTONS -- NOTE that all have EXTI interrupts configured */
|
||||||
|
|
||||||
|
#define MIN_IRQBUTTON BUTTON_WAKEUP
|
||||||
|
#define MAX_IRQBUTTON BUTTON_USER
|
||||||
|
#define NUM_IRQBUTTONS (BUTTON_USER - BUTTON_WAKEUP + 1)
|
||||||
|
|
||||||
|
#define GPIO_BTN_WAKEUP (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTA|GPIO_PIN0)
|
||||||
|
#define GPIO_BTN_TAMPER (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTC|GPIO_PIN13)
|
||||||
|
#define GPIO_BTN_USER (GPIO_INPUT|GPIO_FLOAT|GPIO_EXTI|GPIO_PORTG|GPIO_PIN15)
|
||||||
|
|
||||||
/****************************************************************************************************
|
/****************************************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
|
|||||||
@@ -58,6 +58,15 @@
|
|||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* Pin configuration for each STM3210E-EVAL button. This array is indexed by
|
||||||
|
* the BUTTON_* and JOYSTICK_* definitions in board.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
static const uint16_t g_buttons[NUM_BUTTONS] =
|
||||||
|
{
|
||||||
|
GPIO_BTN_WAKEUP, GPIO_BTN_TAMPER, GPIO_BTN_USER
|
||||||
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -75,7 +84,16 @@
|
|||||||
|
|
||||||
void up_buttoninit(void)
|
void up_buttoninit(void)
|
||||||
{
|
{
|
||||||
#warning "Missing logic"
|
int i;
|
||||||
|
|
||||||
|
/* Configure the GPIO pins as inputs. NOTE that EXTI interrupts are
|
||||||
|
* configured for all pins.
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_BUTTONS; i++)
|
||||||
|
{
|
||||||
|
stm32_configgpio(g_buttons[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -84,7 +102,32 @@ void up_buttoninit(void)
|
|||||||
|
|
||||||
uint8_t up_buttons(void)
|
uint8_t up_buttons(void)
|
||||||
{
|
{
|
||||||
#warning "Missing logic"
|
uint8_t ret = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Check that state of each key */
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_BUTTONS; i++)
|
||||||
|
{
|
||||||
|
/* A LOW value means that the key is pressed for most keys. The exception
|
||||||
|
* is the WAKEUP button.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool released = stm32_gpioread(g_buttons[i]);
|
||||||
|
if (i == BUTTON_WAKEUP)
|
||||||
|
{
|
||||||
|
released = !released;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Accumulate the set of depressed (not released) keys */
|
||||||
|
|
||||||
|
if (!released)
|
||||||
|
{
|
||||||
|
ret |= (1 << i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
@@ -113,7 +156,15 @@ uint8_t up_buttons(void)
|
|||||||
#ifdef CONFIG_ARCH_IRQBUTTONS
|
#ifdef CONFIG_ARCH_IRQBUTTONS
|
||||||
xcpt_t up_irqbutton(int id, xcpt_t irqhandler)
|
xcpt_t up_irqbutton(int id, xcpt_t irqhandler)
|
||||||
{
|
{
|
||||||
#warning "Missing logic"
|
xcpt_t oldhandler = NULL;
|
||||||
|
|
||||||
|
/* The following should be atomic */
|
||||||
|
|
||||||
|
if (id >= MIN_IRQBUTTON && id <= MAX_IRQBUTTON)
|
||||||
|
{
|
||||||
|
oldhandler = stm32_gpiosetevent(g_buttons[id], true, true, true, irqhandler);
|
||||||
|
}
|
||||||
|
return oldhandler;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif /* CONFIG_ARCH_BUTTONS */
|
#endif /* CONFIG_ARCH_BUTTONS */
|
||||||
|
|||||||
@@ -70,14 +70,155 @@
|
|||||||
# define ledvdbg(x...)
|
# define ledvdbg(x...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* The following definitions map the encoded LED setting to GPIO settings */
|
||||||
|
|
||||||
|
#define STM3210E_LED1 (1 << 0)
|
||||||
|
#define STM3210E_LED2 (1 << 1)
|
||||||
|
#define STM3210E_LED3 (1 << 2)
|
||||||
|
#define STM3210E_LED4 (1 << 3)
|
||||||
|
|
||||||
|
#define ON_SETBITS_SHIFT (0)
|
||||||
|
#define ON_CLRBITS_SHIFT (4)
|
||||||
|
#define OFF_SETBITS_SHIFT (8)
|
||||||
|
#define OFF_CLRBITS_SHIFT (12)
|
||||||
|
|
||||||
|
#define ON_BITS(v) ((v) & 0xff)
|
||||||
|
#define OFF_BITS(v) (((v) >> 8) & 0x0ff)
|
||||||
|
#define SETBITS(b) ((b) & 0x0f)
|
||||||
|
#define CLRBITS(b) (((b) >> 4) & 0x0f)
|
||||||
|
|
||||||
|
#define ON_SETBITS(v) (SETBITS(ON_BITS(v))
|
||||||
|
#define ON_CLRBITS(v) (CLRBITS(ON_BITS(v))
|
||||||
|
#define OFF_SETBITS(v) (SETBITS(OFF_BITS(v))
|
||||||
|
#define OFF_CLRBITS(v) (CLRBITS(OFF_BITS(v))
|
||||||
|
|
||||||
|
#define LED_STARTED_ON_SETBITS ((STM3210E_LED1) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_STARTED_ON_CLRBITS ((STM3210E_LED2|STM3210E_LED3|STM3210E_LED4) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_STARTED_OFF_SETBITS (0 << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_STARTED_OFF_CLRBITS ((STM3210E_LED1|STM3210E_LED2|STM3210E_LED3|STM3210E_LED4) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
|
#define LED_HEAPALLOCATE_ON_SETBITS ((STM3210E_LED2) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_HEAPALLOCATE_ON_CLRBITS ((STM3210E_LED1|STM3210E_LED3|STM3210E_LED4) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_HEAPALLOCATE_OFF_SETBITS ((STM3210E_LED1) << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_HEAPALLOCATE_OFF_CLRBITS ((STM3210E_LED2|STM3210E_LED3|STM3210E_LED4) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
|
#define LED_IRQSENABLED_ON_SETBITS ((STM3210E_LED1|STM3210E_LED2) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_IRQSENABLED_ON_CLRBITS ((STM3210E_LED3|STM3210E_LED4) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_IRQSENABLED_OFF_SETBITS ((STM3210E_LED2) << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_IRQSENABLED_OFF_CLRBITS ((STM3210E_LED1|STM3210E_LED3|STM3210E_LED4) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
|
#define LED_STACKCREATED_ON_SETBITS ((STM3210E_LED3) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_STACKCREATED_ON_CLRBITS ((STM3210E_LED1|STM3210E_LED2|STM3210E_LED4) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_STACKCREATED_OFF_SETBITS ((STM3210E_LED1|STM3210E_LED2) << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_STACKCREATED_OFF_CLRBITS ((STM3210E_LED3|STM3210E_LED4) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
|
#define LED_INIRQ_ON_SETBITS ((STM3210E_LED1) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_INIRQ_ON_CLRBITS ((0) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_INIRQ_OFF_SETBITS ((0) << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_INIRQ_OFF_CLRBITS ((STM3210E_LED1) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
|
#define LED_SIGNAL_ON_SETBITS ((STM3210E_LED2) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_SIGNAL_ON_CLRBITS ((0) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_SIGNAL_OFF_SETBITS ((0) << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_SIGNAL_OFF_CLRBITS ((STM3210E_LED2) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
|
#define LED_ASSERTION_ON_SETBITS ((STM3210E_LED4) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_ASSERTION_ON_CLRBITS ((0) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_ASSERTION_OFF_SETBITS ((0) << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_ASSERTION_OFF_CLRBITS ((STM3210E_LED4) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
|
#define LED_PANIC_ON_SETBITS ((STM3210E_LED4) << ON_SETBITS_SHIFT)
|
||||||
|
#define LED_PANIC_ON_CLRBITS ((0) << ON_CLRBITS_SHIFT)
|
||||||
|
#define LED_PANIC_OFF_SETBITS ((0) << OFF_SETBITS_SHIFT)
|
||||||
|
#define LED_PANIC_OFF_CLRBITS ((STM3210E_LED4) << OFF_CLRBITS_SHIFT)
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Data
|
* Private Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
static const uint16_t g_ledbits[8] =
|
||||||
|
{
|
||||||
|
(LED_STARTED_ON_SETBITS | LED_STARTED_ON_CLRBITS |
|
||||||
|
LED_STARTED_OFF_SETBITS | LED_STARTED_OFF_CLRBITS),
|
||||||
|
|
||||||
|
(LED_HEAPALLOCATE_ON_SETBITS | LED_HEAPALLOCATE_ON_CLRBITS |
|
||||||
|
LED_HEAPALLOCATE_OFF_SETBITS | LED_HEAPALLOCATE_OFF_CLRBITS),
|
||||||
|
|
||||||
|
(LED_IRQSENABLED_ON_SETBITS | LED_IRQSENABLED_ON_CLRBITS |
|
||||||
|
LED_IRQSENABLED_OFF_SETBITS | LED_IRQSENABLED_OFF_CLRBITS),
|
||||||
|
|
||||||
|
(LED_STACKCREATED_ON_SETBITS | LED_STACKCREATED_ON_CLRBITS |
|
||||||
|
LED_STACKCREATED_OFF_SETBITS | LED_STACKCREATED_OFF_CLRBITS),
|
||||||
|
|
||||||
|
(LED_INIRQ_ON_SETBITS | LED_INIRQ_ON_CLRBITS |
|
||||||
|
LED_INIRQ_OFF_SETBITS | LED_INIRQ_OFF_CLRBITS),
|
||||||
|
|
||||||
|
(LED_SIGNAL_ON_SETBITS | LED_SIGNAL_ON_CLRBITS |
|
||||||
|
LED_SIGNAL_OFF_SETBITS | LED_SIGNAL_OFF_CLRBITS),
|
||||||
|
|
||||||
|
(LED_ASSERTION_ON_SETBITS | LED_ASSERTION_ON_CLRBITS |
|
||||||
|
LED_ASSERTION_OFF_SETBITS | LED_ASSERTION_OFF_CLRBITS),
|
||||||
|
|
||||||
|
(LED_PANIC_ON_SETBITS | LED_PANIC_ON_CLRBITS |
|
||||||
|
LED_PANIC_OFF_SETBITS | LED_PANIC_OFF_CLRBITS)
|
||||||
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
static inline void led_clrbits(unsigned int clrbits)
|
||||||
|
{
|
||||||
|
if ((clrbits & STM3210E_LED1) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED1, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((clrbits & STM3210E_LED2) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED2, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((clrbits & STM3210E_LED3) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED3, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((clrbits & STM3210E_LED4) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED4, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void led_setbits(unsigned int setbits)
|
||||||
|
{
|
||||||
|
if ((setbits & STM3210E_LED1) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((setbits & STM3210E_LED2) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED2, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((setbits & STM3210E_LED3) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED3, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((setbits & STM3210E_LED4) != 0)
|
||||||
|
{
|
||||||
|
stm32_gpiowrite(GPIO_LED4, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void led_setonoff(unsigned int bits)
|
||||||
|
{
|
||||||
|
led_clrbits(CLRBITS(bits));
|
||||||
|
led_setbits(SETBITS(bits));
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@@ -89,7 +230,12 @@
|
|||||||
#ifdef CONFIG_ARCH_LEDS
|
#ifdef CONFIG_ARCH_LEDS
|
||||||
void up_ledinit(void)
|
void up_ledinit(void)
|
||||||
{
|
{
|
||||||
#warning "Missing logic"
|
/* Configure LED1-4 GPIOs for output */
|
||||||
|
|
||||||
|
stm32_configgpio(GPIO_LED1);
|
||||||
|
stm32_configgpio(GPIO_LED2);
|
||||||
|
stm32_configgpio(GPIO_LED3);
|
||||||
|
stm32_configgpio(GPIO_LED4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -98,7 +244,7 @@ void up_ledinit(void)
|
|||||||
|
|
||||||
void up_ledon(int led)
|
void up_ledon(int led)
|
||||||
{
|
{
|
||||||
#warning "Missing logic"
|
led_setonoff(ON_BITS(g_ledbits[led]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -107,7 +253,7 @@ void up_ledon(int led)
|
|||||||
|
|
||||||
void up_ledoff(int led)
|
void up_ledoff(int led)
|
||||||
{
|
{
|
||||||
#warning "Missing logic"
|
led_setonoff(OFF_BITS(g_ledbits[led]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_ARCH_LEDS */
|
#endif /* CONFIG_ARCH_LEDS */
|
||||||
|
|||||||
Reference in New Issue
Block a user