You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ag...@apache.org on 2020/11/21 18:24:09 UTC
[incubator-nuttx] branch master updated:
boards/arm/stm32/stm32ldiscovery: modernize board init little bit,
userleds and buttons like for other boards
This is an automated email from the ASF dual-hosted git repository.
aguettouche pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new e9bd306 boards/arm/stm32/stm32ldiscovery: modernize board init little bit, userleds and buttons like for other boards
e9bd306 is described below
commit e9bd30626560d0e61d3081633c867ecaeca89a53
Author: Juha Niskanen <ju...@haltian.com>
AuthorDate: Sat Nov 21 17:20:38 2020 +0200
boards/arm/stm32/stm32ldiscovery: modernize board init little bit, userleds and buttons like for other boards
Also fix typo in Kconfig
Update some obsolete comments
nxstyle changes
Signed-off-by: Juha Niskanen <ju...@haltian.com>
---
boards/arm/stm32/stm32ldiscovery/Kconfig | 2 +-
boards/arm/stm32/stm32ldiscovery/README.txt | 4 +-
boards/arm/stm32/stm32ldiscovery/include/board.h | 75 +++++++++++++---------
.../arm/stm32/stm32ldiscovery/src/stm32_appinit.c | 6 +-
.../arm/stm32/stm32ldiscovery/src/stm32_autoleds.c | 3 +-
boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c | 38 +++++------
.../arm/stm32/stm32ldiscovery/src/stm32_bringup.c | 41 +++++++++++-
.../stm32/stm32ldiscovery/src/stm32ldiscovery.h | 6 +-
8 files changed, 109 insertions(+), 66 deletions(-)
diff --git a/boards/arm/stm32/stm32ldiscovery/Kconfig b/boards/arm/stm32/stm32ldiscovery/Kconfig
index ea61f46..a78d6e1 100644
--- a/boards/arm/stm32/stm32ldiscovery/Kconfig
+++ b/boards/arm/stm32/stm32ldiscovery/Kconfig
@@ -3,7 +3,7 @@
# see the file kconfig-language.txt in the NuttX tools repository.
#
-if ARCH_BOARD_STM32FL_DISCOVERY
+if ARCH_BOARD_STM32L_DISCOVERY
config STM32LDISCO_QETIMER
int "Timer to use with QE encoder"
diff --git a/boards/arm/stm32/stm32ldiscovery/README.txt b/boards/arm/stm32/stm32ldiscovery/README.txt
index 0dd15ee..7fdfdae 100644
--- a/boards/arm/stm32/stm32ldiscovery/README.txt
+++ b/boards/arm/stm32/stm32ldiscovery/README.txt
@@ -199,8 +199,8 @@ LEDs
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/up_leds.c. The LEDs are used to encode OS-related
- events as follows:
+ include/board.h and src/stm32_autoleds.c. The LEDs are used to encode
+ OS-related events as follows:
SYMBOL Meaning LED state
LED3 LED4
diff --git a/boards/arm/stm32/stm32ldiscovery/include/board.h b/boards/arm/stm32/stm32ldiscovery/include/board.h
index 5f459e6..46f3b70 100644
--- a/boards/arm/stm32/stm32ldiscovery/include/board.h
+++ b/boards/arm/stm32/stm32ldiscovery/include/board.h
@@ -52,19 +52,22 @@
* Pre-processor Definitions
****************************************************************************/
-/* Clocking *************************************************************************/
-/* Four different clock sources can be used to drive the system clock (SYSCLK):
+/* Clocking *****************************************************************/
+
+/* Four different clock sources can be used to drive the system clock
+ * (SYSCLK):
*
* - HSI high-speed internal oscillator clock
* Generated from an internal 16 MHz RC oscillator
* - HSE high-speed external oscillator clock
- * Normally driven by an external crystal (X3). However, this crystal is not fitted
- * on the STM32L-Discovery board.
+ * Normally driven by an external crystal (X3). However, this crystal is
+ * not fitted on the STM32L-Discovery board.
* - PLL clock
* - MSI multispeed internal oscillator clock
- * The MSI clock signal is generated from an internal RC oscillator. Seven frequency
- * ranges are available: 65.536 kHz, 131.072 kHz, 262.144 kHz, 524.288 kHz, 1.048 MHz,
- * 2.097 MHz (default value) and 4.194 MHz.
+ * The MSI clock signal is generated from an internal RC oscillator.
+ * Seven frequency ranges are available: 65.536 kHz, 131.072 kHz,
+ * 262.144 kHz, 524.288 kHz, 1.048 MHz, 2.097 MHz (default value) and
+ * 4.194 MHz.
*
* The devices have the following two secondary clock sources
* - LSI low-speed internal RC clock
@@ -95,13 +98,15 @@
* MHz frequency. This is required to provide a 48 MHz clock to the USB or
* SDIO (SDIOCLK or USBCLK = PLLVCO/2).
* SYSCLK
- * The system clock is derived from the PLL VCO divided by the output division factor.
+ * The system clock is derived from the PLL VCO divided by the output
+ * division factor.
* Limitations:
* 96 MHz as PLLVCO when the product is in range 1 (1.8V),
* 48 MHz as PLLVCO when the product is in range 2 (1.5V),
* 24 MHz when the product is in range 3 (1.2V).
* Output division to avoid exceeding 32 MHz as SYSCLK.
- * The minimum input clock frequency for PLL is 2 MHz (when using HSE as PLL source).
+ * The minimum input clock frequency for PLL is 2 MHz (when using HSE as
+ * PLL source).
*/
#define STM32_CFGR_PLLSRC 0 /* Source is 16MHz HSI */
@@ -115,8 +120,8 @@
# define STM32_PLL_FREQUENCY (4*STM32_HSI_FREQUENCY) /* PLL VCO Frequency is 64MHz */
#endif
-/* Use the PLL and set the SYSCLK source to be the divided down PLL VCO output
- * frequency (STM32_PLL_FREQUENCY divided by the PLLDIV value).
+/* Use the PLL and set the SYSCLK source to be the divided down PLL VCO
+ * output frequency (STM32_PLL_FREQUENCY divided by the PLLDIV value).
*/
#define STM32_SYSCLK_SW RCC_CFGR_SW_PLL /* Use the PLL as the SYSCLK */
@@ -159,23 +164,25 @@
#define STM32_APB1_TIM6_CLKIN (STM32_PCLK1_FREQUENCY)
#define STM32_APB1_TIM7_CLKIN (STM32_PCLK1_FREQUENCY)
-/* LED definitions ******************************************************************/
+/* LED definitions **********************************************************/
+
/* The STM32L-Discovery board has four LEDs. Two of these are controlled by
* logic on the board and are not available for software control:
*
- * LD1 COM: LD2 default status is red. LD2 turns to green to indicate that
- * communications are in progress between the PC and the ST-LINK/V2.
+ * LD1 COM: LD2 default status is red. LD2 turns to green to indicate
+ * that communications are in progress between the PC and the
+ * ST-LINK/V2.
* LD2 PWR: Red LED indicates that the board is powered.
*
* And two LEDs can be controlled by software:
*
- * User LD3: Green LED is a user LED connected to the I/O PB7 of the STM32L152
- * MCU.
- * User LD4: Blue LED is a user LED connected to the I/O PB6 of the STM32L152
- * MCU.
+ * User LD3: Green LED is a user LED connected to the I/O PB7 of the
+ * STM32L152 MCU.
+ * User LD4: Blue LED is a user LED connected to the I/O PB6 of the
+ * STM32L152 MCU.
*
- * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any
- * way. The following definitions are used to access individual LEDs.
+ * If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in
+ * any way. The following definitions are used to access individual LEDs.
*/
/* LED index values for use with board_userled() */
@@ -189,8 +196,9 @@
#define BOARD_LED1_BIT (1 << BOARD_LED1)
#define BOARD_LED2_BIT (1 << BOARD_LED2)
-/* If CONFIG_ARCH_LEDs is defined, then NuttX will control the 8 LEDs on board the
- * STM32L-Discovery. The following definitions describe how NuttX controls the LEDs:
+/* If CONFIG_ARCH_LEDS is defined, then NuttX will control the 2 LEDs on
+ * board the STM32L-Discovery. The following definitions describe how NuttX
+ * controls the LEDs:
*
* SYMBOL Meaning LED state
* LED1 LED2
@@ -215,12 +223,14 @@
#define LED_ASSERTION 2
#define LED_PANIC 3
-/* Button definitions ***************************************************************/
-/* The STM32L-Discovery supports two buttons; only one button is controllable by
- * software:
+/* Button definitions *******************************************************/
+
+/* The STM32L-Discovery supports two buttons; only one button is controllable
+ * by software:
*
- * B1 USER: user and wake-up button connected to the I/O PA0 of the STM32L152RBT6.
- * B2 RESET: pushbutton connected to NRST is used to RESET the STM32L152RBT6.
+ * B1 USER: user and wake-up button connected to the I/O PA0 of the
+ * STM32L152.
+ * B2 RESET: pushbutton connected to NRST is used to RESET the STM32L152.
*/
#define BUTTON_USER 0
@@ -228,11 +238,12 @@
#define BUTTON_USER_BIT (1 << BUTTON_USER)
-/* Alternate Pin Functions **********************************************************/
-/* The STM32L-Discovery has no on-board RS-232 driver. Further, there are no USART
- * pins that do not conflict with the on board resources, in particular, the LCD:
- * Most USART pins are available if the LCD is enabled; USART2 may be used if either
- * the LCD or the on-board LEDs are disabled.
+/* Alternate Pin Functions **************************************************/
+
+/* The STM32L-Discovery has no on-board RS-232 driver. Further, there
+ * are no USART pins that do not conflict with the on board resources, in
+ * particular, the LCD. Most USART pins are available if the LCD is enabled;
+ * USART2 may be used if either the LCD or the on-board LEDs are disabled.
*
* PA9 USART1_TX LCD glass COM1 P2, pin 22
* PA10 USART1_RX LCD glass COM2 P2, pin 21
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c
index a20a0c4..0bd7f81 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_appinit.c
@@ -39,8 +39,6 @@
#include <nuttx/config.h>
-#include <syslog.h>
-
#include <nuttx/board.h>
#include <arch/board/board.h>
@@ -77,7 +75,11 @@
int board_app_initialize(uintptr_t arg)
{
+#ifndef CONFIG_BOARD_LATE_INITIALIZE
/* Perform board initialization here */
return stm32_bringup();
+#else
+ return OK;
+#endif
}
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c
index db59e10..2c6157c 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_autoleds.c
@@ -55,7 +55,8 @@
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
-/* If CONFIG_ARCH_LEDs is defined, then NuttX will control the 2 LEDs on
+
+/* If CONFIG_ARCH_LEDS is defined, then NuttX will control the 2 LEDs on
* board the STM32L-Discovery. The following definitions describe how NuttX
* controls the LEDs:
*
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c
index 1158c0b..8aa7f0e 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_boot.c
@@ -48,14 +48,6 @@
#include "stm32ldiscovery.h"
/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/****************************************************************************
- * Private Functions
- ****************************************************************************/
-
-/****************************************************************************
* Public Functions
****************************************************************************/
@@ -63,16 +55,17 @@
* Name: stm32_boardinitialize
*
* Description:
- * All STM32 architectures must provide the following entry point. This entry point
- * is called early in the initialization -- after all memory has been configured
- * and mapped but before any devices have been initialized.
+ * All STM32 architectures must provide the following entry point.
+ * This entry point is called early in the initialization -- after all
+ * memory has been configured and mapped but before any devices have been
+ * initialized.
*
****************************************************************************/
void stm32_boardinitialize(void)
{
- /* Configure SPI chip selects if 1) SPI is not disabled, and 2) the weak function
- * stm32_spidev_initialize() has been brought into the link.
+ /* Configure SPI chip selects if 1) SPI is not disabled, and 2) the weak
+ * function stm32_spidev_initialize() has been brought into the link.
*/
#if defined(CONFIG_STM32_SPI1) || defined(CONFIG_STM32_SPI2) || defined(CONFIG_STM32_SPI3)
@@ -93,22 +86,23 @@ void stm32_boardinitialize(void)
* Name: board_late_initialize
*
* Description:
- * If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional initialization call
- * will be performed in the boot-up sequence to a function called
- * board_late_initialize(). board_late_initialize() will be called immediately after
- * up_initialize() is called and just before the initial application is started.
- * This additional initialization phase may be used, for example, to initialize
- * board-specific device drivers.
+ * If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
+ * initialization call will be performed in the boot-up sequence to a
+ * function called board_late_initialize(). board_late_initialize() will
+ * be called immediately after up_initialize() is called and just before
+ * the initial application is started. This additional initialization
+ * phase may be used, for example, to initialize board-specific device
+ * drivers.
*
****************************************************************************/
#ifdef CONFIG_BOARD_LATE_INITIALIZE
void board_late_initialize(void)
{
-#ifndef CONFIG_LIB_BOARDCTL
- /* Perform board initialization here instead of from the board_app_initialize(). */
+ /* Perform board initialization here instead of from the
+ * board_app_initialize().
+ */
stm32_bringup();
-#endif
}
#endif
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c b/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c
index ad6d370..13ce8c9 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32_bringup.c
@@ -39,17 +39,20 @@
#include <nuttx/config.h>
+#include <sys/types.h>
+#include <sys/mount.h>
#include <syslog.h>
-#include <nuttx/board.h>
#include <nuttx/input/buttons.h>
+#include <nuttx/leds/userled.h>
+#include <nuttx/board.h>
#include <arch/board/board.h>
#include "stm32ldiscovery.h"
#ifdef CONFIG_SENSORS_QENCODER
-#include "board_qencoder.h"
+# include "board_qencoder.h"
#endif
/****************************************************************************
@@ -74,7 +77,34 @@ int stm32_bringup(void)
{
int ret = OK;
+#ifdef CONFIG_FS_PROCFS
+ /* Mount the procfs file system */
+
+ ret = mount(NULL, "/proc", "procfs", 0, NULL);
+ if (ret < 0)
+ {
+ syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", ret);
+ }
+#endif
+
+#if defined(CONFIG_USERLED) && !defined(CONFIG_ARCH_LEDS)
+#ifdef CONFIG_USERLED_LOWER
+ /* Register the LED driver */
+
+ ret = userled_lower_initialize("/dev/userleds");
+ if (ret != OK)
+ {
+ syslog(LOG_ERR, "ERROR: userled_lower_initialize() failed: %d\n", ret);
+ }
+#else
+ /* Enable USER LED support for some other purpose */
+
+ board_userled_initialize();
+#endif /* CONFIG_USERLED_LOWER */
+#endif /* CONFIG_USERLED && !CONFIG_ARCH_LEDS */
+
#ifdef CONFIG_BUTTONS
+#ifdef CONFIG_BUTTONS_LOWER
/* Register the BUTTON driver */
ret = btn_lower_initialize("/dev/buttons");
@@ -82,7 +112,12 @@ int stm32_bringup(void)
{
syslog(LOG_ERR, "ERROR: btn_lower_initialize() failed: %d\n", ret);
}
-#endif
+#else
+ /* Enable BUTTON support for some other purpose */
+
+ board_button_initialize();
+#endif /* CONFIG_BUTTONS_LOWER */
+#endif /* CONFIG_BUTTONS */
#ifdef CONFIG_STM32_LCD
/* Initialize the SLCD and register the SLCD device as /dev/slcd0 */
diff --git a/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h b/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h
index 8e98af0..fbc68e2 100644
--- a/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h
+++ b/boards/arm/stm32/stm32ldiscovery/src/stm32ldiscovery.h
@@ -34,8 +34,8 @@
*
****************************************************************************/
-#ifndef __BOARDS_ARM_STM32_STM32F3DISCOVERY_SRC_STM32F3DISCOVERY_H
-#define __BOARDS_ARM_STM32_STM32F3DISCOVERY_SRC_STM32F3DISCOVERY_H
+#ifndef __BOARDS_ARM_STM32_STM32LDISCOVERY_SRC_STM32LDISCOVERY_H
+#define __BOARDS_ARM_STM32_STM32LDISCOVERY_SRC_STM32LDISCOVERY_H
/****************************************************************************
* Included Files
@@ -289,4 +289,4 @@ int stm32_pwm_setup(void);
#endif
#endif /* __ASSEMBLY__ */
-#endif /* __BOARDS_ARM_STM32_STM32F3DISCOVERY_SRC_STM32F3DISCOVERY_H */
+#endif /* __BOARDS_ARM_STM32_STM32LDISCOVERY_SRC_STM32LDISCOVERY_H */