mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 15:58:59 +08:00
Changes from review of last PR
This commit is contained in:
@@ -648,6 +648,11 @@ configs/stm32f746g-disco
|
||||
MCU. The STM32F746NGH6 is a 216MHz Cortex-M7 operation with 1024Kb Flash
|
||||
memory and 300Kb SRAM.
|
||||
|
||||
configs/stm32l476vg-disco
|
||||
STMicro STM32L476VG_DISCO development board featuring the STM32L476VG
|
||||
MCU. The STM32L476VG is a Cortex-M4 optimised for low-power operation
|
||||
at up to 80MHz operation with 1024Kb Flash memory and 96+32Kb SRAM.
|
||||
|
||||
configs/stm32ldiscovery
|
||||
STMicro STM32L-Discovery board based on the STMicro STM32L152RB MCU.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/************************************************************************************
|
||||
* configs/stm32l476vg-disco/include/board.h
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: dev@ziggurat29.com
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -55,7 +55,6 @@
|
||||
|
||||
#include <arch/board/stm32l476vg-disco-clocking.h>
|
||||
|
||||
|
||||
/* DMA Channel/Stream Selections ****************************************************/
|
||||
/* Stream selections are arbitrary for now but might become important in the future
|
||||
* is we set aside more DMA channels/streams.
|
||||
@@ -154,8 +153,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* SPI2 is used for several peripherals on the Discovery board, including
|
||||
/* SPI2 is used for several peripherals on the Discovery board, including
|
||||
* L3GD20 - 3 axis Gyroscope
|
||||
* LSM303CTR - eCompass, comprising an accelerometer and magnetometer
|
||||
*/
|
||||
@@ -164,9 +162,8 @@
|
||||
#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_3
|
||||
#define GPIO_SPI2_SCK GPIO_SPI2_SCK_3
|
||||
|
||||
/*
|
||||
* PD7; gyroscope CS
|
||||
*/
|
||||
/* PD7; gyroscope CS */
|
||||
|
||||
#define GPIO_SPI_CS_GYRO_OFF \
|
||||
(GPIO_INPUT | GPIO_PULLDOWN | GPIO_SPEED_2MHz | \
|
||||
GPIO_PORTD | GPIO_PIN7)
|
||||
@@ -174,9 +171,8 @@
|
||||
(GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_2MHz | \
|
||||
GPIO_OUTPUT_SET | GPIO_PORTD | GPIO_PIN7)
|
||||
|
||||
/*
|
||||
* PE0; accelerometer CS
|
||||
*/
|
||||
/* PE0; accelerometer CS */
|
||||
|
||||
#define GPIO_SPI_CS_ACCEL_OFF \
|
||||
(GPIO_INPUT | GPIO_PULLDOWN | GPIO_SPEED_2MHz | \
|
||||
GPIO_PORTE | GPIO_PIN0)
|
||||
@@ -184,9 +180,8 @@
|
||||
(GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_2MHz | \
|
||||
GPIO_OUTPUT_SET | GPIO_PORTE | GPIO_PIN0)
|
||||
|
||||
/*
|
||||
* PC0; magnetometer CS
|
||||
*/
|
||||
/* PC0; magnetometer CS */
|
||||
|
||||
#define GPIO_SPI_CS_MAGNETO_OFF \
|
||||
(GPIO_INPUT | GPIO_PULLDOWN | GPIO_SPEED_2MHz | \
|
||||
GPIO_PORTC | GPIO_PIN0)
|
||||
@@ -194,15 +189,13 @@
|
||||
(GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_2MHz | \
|
||||
GPIO_OUTPUT_SET | GPIO_PORTC | GPIO_PIN0)
|
||||
|
||||
|
||||
/*
|
||||
XXX these will need to be set up when these get implemented:
|
||||
PD2 gyro INT1
|
||||
PB8 gyro INT2/DRDY
|
||||
|
||||
PE1 accel INT
|
||||
PC2 magneto DRDY
|
||||
PC1 magneto INT
|
||||
/* XXX these will need to be set up when these get implemented:
|
||||
* PD2 gyro INT1
|
||||
* PB8 gyro INT2/DRDY
|
||||
*
|
||||
* PE1 accel INT
|
||||
* PC2 magneto DRDY
|
||||
* PC1 magneto INT
|
||||
*/
|
||||
|
||||
/* LEDs
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/************************************************************************************
|
||||
* configs/stm32l476vg-disco/include/stm32l476vg-disco-clocking.h
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: dev@ziggurat29.com
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -68,12 +68,12 @@
|
||||
#define STM32L4_LSE_FREQUENCY 32768
|
||||
|
||||
/* XXX review the STM32L4_BOARD_USEHSI usage, it has too much influence in
|
||||
stm32l4x6xx_rcc.c. I suspect it is fine for it to turn on and off that
|
||||
ocillator, but really that's all it should do (e.g. it also controls
|
||||
input of teh PLLs. Also, it should be fine/desireable to support things
|
||||
like turning on both HSI and MSI, because they plausibly can both be
|
||||
used at the same time; currently those choices HSE/HSI16/MSI are
|
||||
mutually exclusive.
|
||||
* stm32l4x6xx_rcc.c. I suspect it is fine for it to turn on and off that
|
||||
* ocillator, but really that's all it should do (e.g. it also controls
|
||||
* input of teh PLLs. Also, it should be fine/desireable to support things
|
||||
* like turning on both HSI and MSI, because they plausibly can both be
|
||||
* used at the same time; currently those choices HSE/HSI16/MSI are
|
||||
* mutually exclusive.
|
||||
*/
|
||||
|
||||
#define STM32L4_BOARD_USEHSI 1
|
||||
@@ -84,11 +84,11 @@
|
||||
#define STM32L4_PLLCFG_PLLM RCC_PLLCFG_PLLM(1)
|
||||
|
||||
/* 'main' PLL config; we use this to generate our system clock via the R
|
||||
output. We set it up as
|
||||
16 MHz / 1 * 10 / 2 = 80 MHz
|
||||
XXX NOTE: currently the main PLL is implicitly turned on and is implicitly
|
||||
the system clock; this should be configurable since not all applications may
|
||||
want things done this way.
|
||||
* output. We set it up as 16 MHz / 1 * 10 / 2 = 80 MHz
|
||||
*
|
||||
* XXX NOTE: currently the main PLL is implicitly turned on and is implicitly
|
||||
* the system clock; this should be configurable since not all applications may
|
||||
* want things done this way.
|
||||
*/
|
||||
|
||||
#define STM32L4_PLLCFG_PLLN RCC_PLLCFG_PLLN(10)
|
||||
@@ -100,14 +100,15 @@
|
||||
#define STM32L4_PLLCFG_PLLR_ENABLED
|
||||
|
||||
/* 'SAIPLL1' is used to generate the 48 MHz clock, since we can't
|
||||
do that with the main PLL's N value. We set N = 13, and enable
|
||||
the Q output (ultimately for CLK48) with /4. So,
|
||||
16 MHz / 1 * 12 / 4 = 48 MHz
|
||||
XXX NOTE: currently the SAIPLL /must/ be explicitly selected in the
|
||||
menuconfig, or else all this is a moot point, and the various 48 MHz
|
||||
peripherals will not work (RNG at present). I would suggest removing
|
||||
that option from Kconfig altogether, and simply making it an option
|
||||
that is selected via a #define here, like all these other params.
|
||||
* do that with the main PLL's N value. We set N = 13, and enable
|
||||
* the Q output (ultimately for CLK48) with /4. So,
|
||||
* 16 MHz / 1 * 12 / 4 = 48 MHz
|
||||
*
|
||||
* XXX NOTE: currently the SAIPLL /must/ be explicitly selected in the
|
||||
* menuconfig, or else all this is a moot point, and the various 48 MHz
|
||||
* peripherals will not work (RNG at present). I would suggest removing
|
||||
* that option from Kconfig altogether, and simply making it an option
|
||||
* that is selected via a #define here, like all these other params.
|
||||
*/
|
||||
|
||||
#define STM32L4_PLLSAI1CFG_PLLN RCC_PLLSAI1CFG_PLLN(12)
|
||||
@@ -171,7 +172,6 @@
|
||||
*/
|
||||
/* REVISIT : this can be configured */
|
||||
|
||||
|
||||
/************************************************************************************
|
||||
* Public Data
|
||||
************************************************************************************/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
############################################################################
|
||||
# configs/stm32l476vg-disco/nsh/Make.defs
|
||||
#
|
||||
# Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
# Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
# Author: dev@ziggurat29.com
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
# configs/stm32l476vg-disco/nsh/setenv.sh
|
||||
#
|
||||
# Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
# Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* configs/stm32l476vg-disco/scripts/l476rg.ld
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
* Sebastien Lorquet <sebastien@lorquet.fr>
|
||||
* dev@ziggurat29.com
|
||||
|
||||
@@ -46,10 +46,6 @@ ifeq ($(CONFIG_STM32_OTGFS),y)
|
||||
CSRCS += stm32_usb.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_HAVE_CXX),y)
|
||||
CSRCS += stm32_cxxinitialize.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_LEDS),y)
|
||||
CSRCS += stm32_autoleds.c
|
||||
else
|
||||
@@ -68,7 +64,7 @@ endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_NSH_LIBRARY),y)
|
||||
CSRCS += stm32_nsh.c
|
||||
CSRCS += stm32_appinit.c
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/configs/Board.mk
|
||||
|
||||
+2
-15
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_nsh.c
|
||||
* configs/stm32l476vg-disco/src/stm32_appinit.c
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -53,18 +53,6 @@
|
||||
|
||||
#include "stm32l476vg-disco.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
@@ -79,7 +67,6 @@
|
||||
|
||||
int board_app_initialize(void)
|
||||
{
|
||||
|
||||
/* Configure CPU load estimation */
|
||||
|
||||
#ifdef CONFIG_SCHED_INSTRUMENTATION
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_autoleds.c
|
||||
*
|
||||
* Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: dev@ziggurat29.com
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -70,14 +70,6 @@
|
||||
# define ledvdbg(x...)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
@@ -89,6 +81,7 @@
|
||||
void board_autoled_initialize(void)
|
||||
{
|
||||
/* Configure LD4,5 GPIO for output */
|
||||
|
||||
stm32l4_configgpio(GPIO_LED_RED);
|
||||
stm32l4_configgpio(GPIO_LED_GRN);
|
||||
}
|
||||
@@ -106,6 +99,7 @@ void board_autoled_on(int led)
|
||||
* Since the LEDs were initially all OFF and since this state only
|
||||
* occurs one time, nothing need be done.
|
||||
*/
|
||||
|
||||
default:
|
||||
case LED_STARTED:
|
||||
case LED_HEAPALLOCATE:
|
||||
@@ -116,6 +110,7 @@ void board_autoled_on(int led)
|
||||
*
|
||||
* This case will also occur only once.
|
||||
*/
|
||||
|
||||
case LED_STACKCREATED:
|
||||
break;
|
||||
|
||||
@@ -123,6 +118,7 @@ void board_autoled_on(int led)
|
||||
*
|
||||
* This case will occur many times.
|
||||
*/
|
||||
|
||||
case LED_INIRQ:
|
||||
case LED_SIGNAL:
|
||||
case LED_ASSERTION:
|
||||
@@ -133,6 +129,7 @@ void board_autoled_on(int led)
|
||||
*
|
||||
* This case will also occur many times.
|
||||
*/
|
||||
|
||||
case LED_PANIC:
|
||||
stm32l4_gpiowrite(GPIO_LED_GRN, false);
|
||||
stm32l4_gpiowrite(GPIO_LED_RED, true);
|
||||
@@ -158,6 +155,7 @@ void board_autoled_off(int led)
|
||||
*
|
||||
* These cases should never happen.
|
||||
*/
|
||||
|
||||
default:
|
||||
case LED_STARTED:
|
||||
case LED_HEAPALLOCATE:
|
||||
@@ -169,6 +167,7 @@ void board_autoled_off(int led)
|
||||
*
|
||||
* This case will occur many times.
|
||||
*/
|
||||
|
||||
case LED_INIRQ:
|
||||
case LED_SIGNAL:
|
||||
case LED_ASSERTION:
|
||||
@@ -179,6 +178,7 @@ void board_autoled_off(int led)
|
||||
*
|
||||
* This case will also occur many times.
|
||||
*/
|
||||
|
||||
case LED_PANIC:
|
||||
stm32l4_gpiowrite(GPIO_LED_GRN, false);
|
||||
stm32l4_gpiowrite(GPIO_LED_RED, false);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/************************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_boot.c
|
||||
*
|
||||
* Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
* dev@ziggurat29.com
|
||||
*
|
||||
@@ -51,14 +51,6 @@
|
||||
#include "up_arch.h"
|
||||
#include "stm32l476vg-disco.h"
|
||||
|
||||
/************************************************************************************
|
||||
* Pre-processor Definitions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Private Data
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************************/
|
||||
@@ -123,6 +115,5 @@ void board_initialize(void)
|
||||
#if defined(CONFIG_NSH_LIBRARY) && !defined(CONFIG_NSH_ARCHINIT)
|
||||
board_app_initialize();
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_buttons.c
|
||||
*
|
||||
* Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: dev@ziggurat29.com
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -73,8 +73,8 @@ static int button_pm_prepare(struct pm_callback_s *cb, enum pm_state_e pmstate);
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/* Pin configuration for each STM32L476 Discovery button. This array is indexed by
|
||||
* the BUTTON_* definitions in board.h
|
||||
/* Pin configuration for each STM32L476 Discovery button. This array is
|
||||
* indexed by the BUTTON_* definitions in board.h
|
||||
*/
|
||||
|
||||
static const uint32_t g_buttons[NUM_BUTTONS] =
|
||||
@@ -161,13 +161,14 @@ static void button_pm_notify(struct pm_callback_s *cb , enum pm_state_e pmstate)
|
||||
*
|
||||
****************************************************************************/
|
||||
/* XXX it's not completely clear to me if this is appropriate; on the one
|
||||
hand, it seems to make sense that this would be the module to have the ISR
|
||||
for the buttons. On the other hand, it will conflict with things done in
|
||||
the buttons example, which registers it's own ISR, and warns if it sees
|
||||
one already there. I don't know if 'buttons' is overstepping it's bounds
|
||||
in the interst of providing a compact example, (like the I2C app directly
|
||||
talking to the bus), or if really that should be an expected thing to do.
|
||||
* hand, it seems to make sense that this would be the module to have the ISR
|
||||
* for the buttons. On the other hand, it will conflict with things done in
|
||||
* the buttons example, which registers it's own ISR, and warns if it sees
|
||||
* one already there. I don't know if 'buttons' is overstepping it's bounds
|
||||
* in the interst of providing a compact example, (like the I2C app directly
|
||||
* talking to the bus), or if really that should be an expected thing to do.
|
||||
*/
|
||||
|
||||
#if 0
|
||||
#ifdef CONFIG_ARCH_IRQBUTTONS
|
||||
static int button_handler(int irq, FAR void *context)
|
||||
@@ -237,8 +238,10 @@ void board_button_initialize(void)
|
||||
{
|
||||
stm32l4_configgpio(g_buttons[i]);
|
||||
|
||||
//It's not clear if this is correct; I think so, but then there are
|
||||
//conflicts with the 'buttons' sample app.
|
||||
/* It's not clear if this is correct; I think so, but then there are
|
||||
* conflicts with the 'buttons' sample app.
|
||||
*/
|
||||
|
||||
#if 0
|
||||
#ifdef CONFIG_ARCH_IRQBUTTONS
|
||||
xcpt_t oldhandler = board_button_irq(i, button_handler);
|
||||
@@ -250,10 +253,7 @@ void board_button_initialize(void)
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@@ -269,8 +269,7 @@ uint8_t board_buttons(void)
|
||||
|
||||
for (i = 0; i < NUM_BUTTONS; i++)
|
||||
{
|
||||
/* A HIGH value means that the key is pressed.
|
||||
*/
|
||||
/* A HIGH value means that the key is pressed. */
|
||||
|
||||
bool pressed = stm32l4_gpioread(g_buttons[i]);
|
||||
|
||||
@@ -282,8 +281,10 @@ uint8_t board_buttons(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* if the user pressed any buttons, notify power management system we are active
|
||||
/* if the user pressed any buttons, notify power management system we are
|
||||
* active
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if ( 0 != ret )
|
||||
{
|
||||
@@ -328,6 +329,7 @@ xcpt_t board_button_irq(int id, xcpt_t irqhandler)
|
||||
{
|
||||
oldhandler = stm32l4_gpiosetevent(g_buttons[id], true, true, true, irqhandler);
|
||||
}
|
||||
|
||||
return oldhandler;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/************************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_clockconfig.c
|
||||
*
|
||||
* Copyright (C) 2011-2012 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: dev@ziggurat29.com
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -44,18 +44,9 @@
|
||||
#include <arch/board/board.h>
|
||||
#include <arch/board/stm32l476vg-disco-clocking.h>
|
||||
|
||||
|
||||
#include "up_arch.h"
|
||||
#include "stm32l476vg-disco.h"
|
||||
|
||||
/************************************************************************************
|
||||
* Pre-processor Definitions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Private Functions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************************/
|
||||
@@ -126,7 +117,8 @@ void stm32l4_board_clockconfig(void)
|
||||
/* XXX The choice of clock source to PLL (all three) is independent
|
||||
* of the sys clock source choice, review the STM32L4_BOARD_USEHSI
|
||||
* name; probably split it into two, one for PLL source and one
|
||||
* for sys clock source */
|
||||
* for sys clock source.
|
||||
*/
|
||||
|
||||
regval |= RCC_PLLCFG_PLLSRC_HSI;
|
||||
putreg32(regval, STM32L4_RCC_PLLCFG);
|
||||
@@ -231,14 +223,15 @@ void stm32l4_board_clockconfig(void)
|
||||
|
||||
/* XXX sanity if sdmmc1 or usb or rng, then we need to set the clk48 source
|
||||
* and then we can also do away with STM32L4_USE_CLK48, and give better
|
||||
* warning messages */
|
||||
/*XXX sanity if our STM32L4_CLK48_SEL is YYY then we need to have already
|
||||
* enabled ZZZ */
|
||||
* warning messages
|
||||
*
|
||||
* XXX sanity if our STM32L4_CLK48_SEL is YYY then we need to have already
|
||||
* enabled ZZZ
|
||||
*/
|
||||
|
||||
regval = getreg32(STM32L4_RCC_CCIPR);
|
||||
regval &= RCC_CCIPR_CLK48SEL_MASK;
|
||||
regval |= STM32L4_CLK48_SEL;
|
||||
putreg32(regval, STM32L4_RCC_CCIPR);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
/************************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_cxxinitialize.c
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Included Files
|
||||
************************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
|
||||
#include <arch/stm32l4/chip.h>
|
||||
#include "chip.h"
|
||||
|
||||
#if defined(CONFIG_HAVE_CXX) && defined(CONFIG_HAVE_CXXINITIALIZE)
|
||||
|
||||
/************************************************************************************
|
||||
* Pre-processor Definitions
|
||||
************************************************************************************/
|
||||
/* Debug ****************************************************************************/
|
||||
/* Non-standard debug that may be enabled just for testing the static constructors */
|
||||
|
||||
#ifndef CONFIG_DEBUG
|
||||
# undef CONFIG_DEBUG_CXX
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_CXX
|
||||
# define cxxdbg dbg
|
||||
# define cxxlldbg lldbg
|
||||
# ifdef CONFIG_DEBUG_VERBOSE
|
||||
# define cxxvdbg vdbg
|
||||
# define cxxllvdbg llvdbg
|
||||
# else
|
||||
# define cxxvdbg(x...)
|
||||
# define cxxllvdbg(x...)
|
||||
# endif
|
||||
#else
|
||||
# define cxxdbg(x...)
|
||||
# define cxxlldbg(x...)
|
||||
# define cxxvdbg(x...)
|
||||
# define cxxllvdbg(x...)
|
||||
#endif
|
||||
|
||||
/************************************************************************************
|
||||
* Private Types
|
||||
************************************************************************************/
|
||||
/* This type defines one entry in initialization array */
|
||||
|
||||
typedef void (*initializer_t)(void);
|
||||
|
||||
/************************************************************************************
|
||||
* External references
|
||||
************************************************************************************/
|
||||
/* _sinit and _einit are symbols exported by the linker script that mark the
|
||||
* beginning and the end of the C++ initialization section.
|
||||
*/
|
||||
|
||||
extern initializer_t _sinit;
|
||||
extern initializer_t _einit;
|
||||
|
||||
/* _stext and _etext are symbols exported by the linker script that mark the
|
||||
* beginning and the end of text.
|
||||
*/
|
||||
|
||||
extern uint32_t _stext;
|
||||
extern uint32_t _etext;
|
||||
|
||||
/************************************************************************************
|
||||
* Private Functions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: up_cxxinitialize
|
||||
*
|
||||
* Description:
|
||||
* If C++ and C++ static constructors are supported, then this function
|
||||
* must be provided by board-specific logic in order to perform
|
||||
* initialization of the static C++ class instances.
|
||||
*
|
||||
* This function should then be called in the application-specific
|
||||
* user_start logic in order to perform the C++ initialization. NOTE
|
||||
* that no component of the core NuttX RTOS logic is involved; This
|
||||
* function defintion only provides the 'contract' between application
|
||||
* specific C++ code and platform-specific toolchain support
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void up_cxxinitialize(void)
|
||||
{
|
||||
initializer_t *initp;
|
||||
|
||||
cxxdbg("_sinit: %p _einit: %p _stext: %p _etext: %p\n",
|
||||
&_sinit, &_einit, &_stext, &_etext);
|
||||
|
||||
/* Visit each entry in the initialzation table */
|
||||
|
||||
for (initp = &_sinit; initp != &_einit; initp++)
|
||||
{
|
||||
initializer_t initializer = *initp;
|
||||
cxxdbg("initp: %p initializer: %p\n", initp, initializer);
|
||||
|
||||
/* Make sure that the address is non-NULL and lies in the text region
|
||||
* defined by the linker script. Some toolchains may put NULL values
|
||||
* or counts in the initialization table
|
||||
*/
|
||||
|
||||
if ((void*)initializer > (void*)&_stext && (void*)initializer < (void*)&_etext)
|
||||
{
|
||||
cxxdbg("Calling %p\n", initializer);
|
||||
initializer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CONFIG_HAVE_CXX && CONFIG_HAVE_CXXINITIALIZE */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_spi.c
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32_userleds.c
|
||||
*
|
||||
* Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -70,10 +70,6 @@
|
||||
# define ledvdbg(x...)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
@@ -118,6 +114,7 @@ static void led_pm_notify(struct pm_callback_s *cb , enum pm_state_e pmstate)
|
||||
case(PM_NORMAL):
|
||||
{
|
||||
/* Restore normal LEDs operation */
|
||||
|
||||
//stm32l4_gpiowrite(GPIO_LED_RED, (ledset & BOARD_LED_RED_BIT) != 0);
|
||||
//stm32l4_gpiowrite(GPIO_LED_GRN, (ledset & BOARD_LED_GRN_BIT) != 0);
|
||||
}
|
||||
@@ -126,6 +123,7 @@ static void led_pm_notify(struct pm_callback_s *cb , enum pm_state_e pmstate)
|
||||
case(PM_IDLE):
|
||||
{
|
||||
/* Entering IDLE mode - Turn leds off */
|
||||
|
||||
stm32l4_gpiowrite(GPIO_LED_RED, 0);
|
||||
stm32l4_gpiowrite(GPIO_LED_GRN, 0);
|
||||
}
|
||||
@@ -134,6 +132,7 @@ static void led_pm_notify(struct pm_callback_s *cb , enum pm_state_e pmstate)
|
||||
case(PM_STANDBY):
|
||||
{
|
||||
/* Entering STANDBY mode - Logic for PM_STANDBY goes here */
|
||||
|
||||
stm32l4_gpiowrite(GPIO_LED_RED, 0);
|
||||
stm32l4_gpiowrite(GPIO_LED_GRN, 0);
|
||||
}
|
||||
@@ -142,6 +141,7 @@ static void led_pm_notify(struct pm_callback_s *cb , enum pm_state_e pmstate)
|
||||
case(PM_SLEEP):
|
||||
{
|
||||
/* Entering SLEEP mode - Logic for PM_SLEEP goes here */
|
||||
|
||||
stm32l4_gpiowrite(GPIO_LED_RED, 0);
|
||||
stm32l4_gpiowrite(GPIO_LED_GRN, 0);
|
||||
}
|
||||
@@ -150,7 +150,6 @@ static void led_pm_notify(struct pm_callback_s *cb , enum pm_state_e pmstate)
|
||||
default:
|
||||
{
|
||||
/* Should not get here */
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -191,6 +190,7 @@ static int led_pm_prepare(struct pm_callback_s *cb , enum pm_state_e pmstate)
|
||||
void board_userled_initialize(void)
|
||||
{
|
||||
/* Configure LD4,5 GPIO for output */
|
||||
|
||||
stm32l4_configgpio(GPIO_LED_RED);
|
||||
stm32l4_configgpio(GPIO_LED_GRN);
|
||||
}
|
||||
@@ -206,6 +206,7 @@ void board_userled(int led, bool ledon)
|
||||
case BOARD_LED_RED:
|
||||
stm32l4_gpiowrite(GPIO_LED_RED, ldeon);
|
||||
break;
|
||||
|
||||
case BOARD_LED_GRN:
|
||||
stm32l4_gpiowrite(GPIO_LED_GRN, ldeon);
|
||||
break;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/************************************************************************************
|
||||
* configs/stm32l476vg-disco/src/stm32l476vg-disco.h
|
||||
*
|
||||
* Copyright (C) 2014 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2016 Gregory Nutt. All rights reserved.
|
||||
* Authors: Frank Bennett
|
||||
* Gregory Nutt <gnutt@nuttx.org>
|
||||
* Sebastien Lorquet <sebastien@lorquet.fr>
|
||||
@@ -53,7 +53,6 @@
|
||||
************************************************************************************/
|
||||
/* Configuration ********************************************************************/
|
||||
|
||||
|
||||
/* LED.
|
||||
* LD4: the red LED on PB2
|
||||
* LD5: the green LED on PE8
|
||||
@@ -63,12 +62,12 @@
|
||||
*/
|
||||
|
||||
#define GPIO_LED_RED \
|
||||
(GPIO_PORTB | GPIO_PIN2 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_PULLUP | \
|
||||
GPIO_SPEED_50MHz)
|
||||
(GPIO_PORTB | GPIO_PIN2 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PUSHPULL | \
|
||||
GPIO_PULLUP | GPIO_SPEED_50MHz)
|
||||
|
||||
#define GPIO_LED_GRN \
|
||||
(GPIO_PORTE | GPIO_PIN8 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_PULLUP | \
|
||||
GPIO_SPEED_50MHz)
|
||||
(GPIO_PORTE | GPIO_PIN8 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PUSHPULL | \
|
||||
GPIO_PULLUP | GPIO_SPEED_50MHz)
|
||||
|
||||
/* Buttons
|
||||
*
|
||||
@@ -92,10 +91,9 @@
|
||||
#define GPIO_BTN_UP \
|
||||
(GPIO_INPUT |GPIO_PULLDOWN |GPIO_EXTI | GPIO_PORTA | GPIO_PIN3)
|
||||
|
||||
|
||||
|
||||
/* SPI1 off */
|
||||
/* XXX is this used on disco? */
|
||||
|
||||
#define GPIO_SPI1_MOSI_OFF (GPIO_INPUT | GPIO_PULLDOWN | \
|
||||
GPIO_PORTE | GPIO_PIN15)
|
||||
#define GPIO_SPI1_MISO_OFF (GPIO_INPUT | GPIO_PULLDOWN | \
|
||||
@@ -105,18 +103,15 @@
|
||||
#define GPIO_SPI1_NSS_OFF (GPIO_INPUT | GPIO_PULLDOWN | \
|
||||
GPIO_PORTE | GPIO_PIN12)
|
||||
|
||||
|
||||
|
||||
/* Devices on the onboard I2C bus.
|
||||
*
|
||||
* Note that these are unshifted addresses.
|
||||
*/
|
||||
|
||||
/* XXX IS this 'unshifted'? */
|
||||
|
||||
#define NUCLEO_I2C_OBDEV_CS43L22 0x94
|
||||
|
||||
|
||||
|
||||
/************************************************************************************
|
||||
* Public Data
|
||||
************************************************************************************/
|
||||
@@ -166,5 +161,4 @@ void stm32_usbinitialize(void);
|
||||
int board_adc_initialize(void);
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __CONFIGS_STM32L476VG_DISCO_SRC_STM32L476VG_DISCO_H */
|
||||
|
||||
Reference in New Issue
Block a user