diff --git a/ChangeLog b/ChangeLog index fc2da4af370..deacdf8cefa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4752,4 +4752,7 @@ * nuttx/arch/arm/src/lm/chip/lm_flash.h and nuttx/arch/arm/src/lm/lm_flash.c: Add support for TI/Stellaris internal FLASH MTD driver. From Max Holtzberg (2013-5-20). - + * arm/src/stm32/chip/stm32l15xxx_vectors.h: After correcting errors in the + vector definition file, the STM32L-Discovery NSH port now seems to be + fully functional. Also fixed an error that was causing the LEDs to be + controlled incorrectly (2013-5-21). diff --git a/Documentation/NuttX.html b/Documentation/NuttX.html index f46048d2381..457302400bf 100644 --- a/Documentation/NuttX.html +++ b/Documentation/NuttX.html @@ -8,7 +8,7 @@
Last Updated: May 6, 2013
+Last Updated: May 21, 2013
NuttX, the NSH application, and GCC libraries use 34.2KB of FLASH leaving 93.8KB of FLASH (72%) free from additional application development.
- Static SRAM usage is about 1.2KB (<4%) and leaves 13.8KB (86%) available for heap at runtime.
+ Static SRAM usage is about 1.2KB (<4%) and leaves 14.8KB (86%) available for heap at runtime.
SRAM usage at run-time can be shown with the NSH free command:
@@ -2093,6 +2093,69 @@ nsh>
+
+
+
+
+
+
+
+
+ STMicro STM32L152 (STM32L "EnergyLite" Line).
+ This is a port of NuttX to the STMicro STM32L-Discovery development board.
+ The STM32L-Discovery board is based on the STM32L152RBT6 MCU (128KB FLASH and 16KB of SRAM).
+
+
+
+ The STM32L-Discovery and 32L152CDISCOVERY kits are functionally equivalent.
+ The difference is the internal Flash memory size (STM32L152RBT6 with 128 Kbytes or STM32L152RCT6 with 256 Kbytes).
+ Both boards feature:
+
+
+ - An ST-LINK/V2 embedded debug tool interface,
+ - LCD (24 segments, 4 commons),
+ - LEDs,
+ - Pushbuttons,
+ - A linear touch sensor, and
+ - Four touchkeys.
+
+
+ STATUS.
+ Initial support for the STM32L-Discovery was released in NuttX-6.28.
+ This initial support is very minimal:
+ There is a configuration using the NuttShell (NSH) that might be the basis for an application development.
+ As of this writing, more device drivers are needed to make this a more complete port.
+
+
+ Memory Usage.
+ For a full-featured RTOS such as NuttX, providing support in a usable and meaningful way within the tiny memories of the STM32L152RBT6 demonstrates the scalability of NuttX. The STM32L152RBT6 comes in a 64-pin package and has 128KB FLASH and 16KB of SRAM.
+
+
+ Static memory usage can be shown with size command:
+
+
+$ size nuttx
+ text data bss dec hex filename
+ 39664 132 1124 40920 9fd8 nuttx
+
+
+ NuttX, the NSH application, and GCC libraries use 38.7KB of FLASH leaving 89.3B of FLASH (70%) free from additional application development.
+ Static SRAM usage is about 1.2KB (<4%) and leaves 14.8KB (86%) available for heap at runtime.
+
+ SRAM usage at run-time can be shown with the NSH free command:
+
+NuttShell (NSH) NuttX-6.27
+nsh> free
+ total used free largest
+Mem: 14096 3928 10168 10168
+nsh>
+
+
+ You can see that 9.9KB (62%) of SRAM heap is staill available for further application development while NSH is running.
+
+
+
+
diff --git a/arch/arm/src/stm32/chip/stm32l15xxx_vectors.h b/arch/arm/src/stm32/chip/stm32l15xxx_vectors.h
index 0ec03c07150..632bb3373b2 100644
--- a/arch/arm/src/stm32/chip/stm32l15xxx_vectors.h
+++ b/arch/arm/src/stm32/chip/stm32l15xxx_vectors.h
@@ -54,58 +54,58 @@
* definition that provides the number of supported vectors.
*/
-# ifdef CONFIG_ARMV7M_CMNVECTOR
+#ifdef CONFIG_ARMV7M_CMNVECTOR
/* Reserve 61 interrupt table entries for I/O interrupts. */
-# define ARMV7M_PERIPHERAL_INTERRUPTS 45
+# define ARMV7M_PERIPHERAL_INTERRUPTS 45
#else
-# VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog interrupt */
-# VECTOR(stm32_pvd, STM32_IRQ_PVD) /* 1: PVD through EXTI Line detection interrupt */
-# VECTOR(stm32_tamper, STM32_IRQ_TAMPER) /* 2: Tamper through EXTI line interrupt */
-# VECTOR(stm32_rtc_wkup, STM32_IRQ_RTC_WKUP) /* 3: RTC Wakeup through EXTI line interrupt */
-# VECTOR(stm32_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
-# VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC global interrupt */
-# VECTOR(stm32_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
-# VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 interrupt */
-# VECTOR(stm32_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
-# VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 interrupt */
-# VECTOR(stm32_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
-# VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global interrupt */
-# VECTOR(stm32_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
-# VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 global interrupt */
-# VECTOR(stm32_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
-# VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 global interrupt */
-# VECTOR(stm32_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
-# VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 global interrupt */
-# VECTOR(stm32_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
-# VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
-# VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
-# VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
-# VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI interrupt */
-# VECTOR(stm32_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
-# VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
-# VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
-# VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
-# VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
-# VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
-# VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
-# VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
-# VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
-# VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
-# VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
-# VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
-# VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
-# VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
-# VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
-# VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
-# VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 global interrupt */
-# VECTOR(stm32_exti1510, STM32_IRQ_EXTI1510) /* 40: EXTI Line[15:10] interrupts */
-# VECTOR(stm32_rtcalrm, STM32_IRQ_RTCALRM) /* 41: RTC alarm through EXTI line interrupt */
-# VECTOR(stm32_usbwkup, STM32_IRQ_USBWKUP) /* 42: USB wakeup from suspend through EXTI line interrupt */
-# VECTOR(stm32_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
-# VECTOR(stm32_TIM7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
+ VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog interrupt */
+ VECTOR(stm32_pvd, STM32_IRQ_PVD) /* 1: PVD through EXTI Line detection interrupt */
+ VECTOR(stm32_tamper, STM32_IRQ_TAMPER) /* 2: Tamper through EXTI line interrupt */
+ VECTOR(stm32_rtc_wkup, STM32_IRQ_RTC_WKUP) /* 3: RTC Wakeup through EXTI line interrupt */
+ VECTOR(stm32_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
+ VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC global interrupt */
+ VECTOR(stm32_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
+ VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 interrupt */
+ VECTOR(stm32_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
+ VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 interrupt */
+ VECTOR(stm32_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
+ VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global interrupt */
+ VECTOR(stm32_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
+ VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 global interrupt */
+ VECTOR(stm32_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
+ VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 global interrupt */
+ VECTOR(stm32_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
+ VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 global interrupt */
+ VECTOR(stm32_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
+ VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
+ VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
+ VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
+ VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI interrupt */
+ VECTOR(stm32_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
+ VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
+ VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
+ VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
+ VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
+ VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
+ VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
+ VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
+ VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
+ VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
+ VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
+ VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
+ VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
+ VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
+ VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
+ VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
+ VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 global interrupt */
+ VECTOR(stm32_exti1510, STM32_IRQ_EXTI1510) /* 40: EXTI Line[15:10] interrupts */
+ VECTOR(stm32_rtcalrm, STM32_IRQ_RTCALRM) /* 41: RTC alarm through EXTI line interrupt */
+ VECTOR(stm32_usbwkup, STM32_IRQ_USBWKUP) /* 42: USB wakeup from suspend through EXTI line interrupt */
+ VECTOR(stm32_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
+ VECTOR(stm32_TIM7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
#endif
/* Vectors for medium+ density devices */
@@ -116,67 +116,67 @@
* definition that provides the number of supported vectors.
*/
-# ifdef CONFIG_ARMV7M_CMNVECTOR
+#ifdef CONFIG_ARMV7M_CMNVECTOR
/* Reserve 61 interrupt table entries for I/O interrupts. */
-# define ARMV7M_PERIPHERAL_INTERRUPTS 54
+# define ARMV7M_PERIPHERAL_INTERRUPTS 54
#else
-# VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog interrupt */
-# VECTOR(stm32_pvd, STM32_IRQ_PVD) /* 1: PVD through EXTI Line detection interrupt */
-# VECTOR(stm32_tamper, STM32_IRQ_TAMPER) /* 2: Tamper through EXTI line interrupt */
-# VECTOR(stm32_rtc_wkup, STM32_IRQ_RTC_WKUP) /* 3: RTC Wakeup through EXTI line interrupt */
-# VECTOR(stm32_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
-# VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC global interrupt */
-# VECTOR(stm32_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
-# VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 interrupt */
-# VECTOR(stm32_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
-# VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 interrupt */
-# VECTOR(stm32_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
-# VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global interrupt */
-# VECTOR(stm32_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
-# VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 global interrupt */
-# VECTOR(stm32_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
-# VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 global interrupt */
-# VECTOR(stm32_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
-# VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 global interrupt */
-# VECTOR(stm32_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
-# VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
-# VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
-# VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
-# VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI interrupt */
-# VECTOR(stm32_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
-# VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
-# VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
-# VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
-# VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
-# VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
-# VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
-# VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
-# VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
-# VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
-# VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
-# VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
-# VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
-# VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
-# VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
-# VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
-# VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 global interrupt */
-# VECTOR(stm32_exti1510, STM32_IRQ_EXTI1510) /* 40: EXTI Line[15:10] interrupts */
-# VECTOR(stm32_rtcalrm, STM32_IRQ_RTCALRM) /* 41: RTC alarm through EXTI line interrupt */
-# VECTOR(stm32_usbwkup, STM32_IRQ_USBWKUP) /* 42: USB wakeup from suspend through EXTI line interrupt */
-# VECTOR(stm32_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
-# VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
-# VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 45: TIM5 global interrupt */
-# VECTOR(stm32_spi3, STM32_IRQ_SPI3) /* 46: SPI3 global interrupt */
-# VECTOR(stm32_dma2ch1, STM32_IRQ_DMA2CH1) /* 47: DMA2 channel 1 global interrupt */
-# VECTOR(stm32_dma2ch2, STM32_IRQ_DMA2CH2) /* 48: DMA2 channel 2 global interrupt */
-# VECTOR(stm32_dma2ch3, STM32_IRQ_DMA2CH3) /* 49: DMA2 channel 3 global interrupt */
-# VECTOR(stm32_dma2ch4, STM32_IRQ_DMA2CH4) /* 50: DMA2 channel 4 global interrupt */
-# VECTOR(stm32_dma2ch5, STM32_IRQ_DMA2CH5) /* 51: DMA2 channel 5 global interrupt */
-# VECTOR(stm32_aes, STM32_IRQ_AES) /* 52: AES global interrupt */
-# VECTOR(stm32_compacq, STM32_IRQ_COMPACQ) /* 53: Comparator Channel Acquisition Interrupt */
+ VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog interrupt */
+ VECTOR(stm32_pvd, STM32_IRQ_PVD) /* 1: PVD through EXTI Line detection interrupt */
+ VECTOR(stm32_tamper, STM32_IRQ_TAMPER) /* 2: Tamper through EXTI line interrupt */
+ VECTOR(stm32_rtc_wkup, STM32_IRQ_RTC_WKUP) /* 3: RTC Wakeup through EXTI line interrupt */
+ VECTOR(stm32_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
+ VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC global interrupt */
+ VECTOR(stm32_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
+ VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 interrupt */
+ VECTOR(stm32_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
+ VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 interrupt */
+ VECTOR(stm32_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
+ VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global interrupt */
+ VECTOR(stm32_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
+ VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 global interrupt */
+ VECTOR(stm32_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
+ VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 global interrupt */
+ VECTOR(stm32_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
+ VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 global interrupt */
+ VECTOR(stm32_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
+ VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
+ VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
+ VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
+ VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI interrupt */
+ VECTOR(stm32_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
+ VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
+ VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
+ VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
+ VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
+ VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
+ VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
+ VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
+ VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
+ VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
+ VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
+ VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
+ VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
+ VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
+ VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
+ VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
+ VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 global interrupt */
+ VECTOR(stm32_exti1510, STM32_IRQ_EXTI1510) /* 40: EXTI Line[15:10] interrupts */
+ VECTOR(stm32_rtcalrm, STM32_IRQ_RTCALRM) /* 41: RTC alarm through EXTI line interrupt */
+ VECTOR(stm32_usbwkup, STM32_IRQ_USBWKUP) /* 42: USB wakeup from suspend through EXTI line interrupt */
+ VECTOR(stm32_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
+ VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
+ VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 45: TIM5 global interrupt */
+ VECTOR(stm32_spi3, STM32_IRQ_SPI3) /* 46: SPI3 global interrupt */
+ VECTOR(stm32_dma2ch1, STM32_IRQ_DMA2CH1) /* 47: DMA2 channel 1 global interrupt */
+ VECTOR(stm32_dma2ch2, STM32_IRQ_DMA2CH2) /* 48: DMA2 channel 2 global interrupt */
+ VECTOR(stm32_dma2ch3, STM32_IRQ_DMA2CH3) /* 49: DMA2 channel 3 global interrupt */
+ VECTOR(stm32_dma2ch4, STM32_IRQ_DMA2CH4) /* 50: DMA2 channel 4 global interrupt */
+ VECTOR(stm32_dma2ch5, STM32_IRQ_DMA2CH5) /* 51: DMA2 channel 5 global interrupt */
+ VECTOR(stm32_aes, STM32_IRQ_AES) /* 52: AES global interrupt */
+ VECTOR(stm32_compacq, STM32_IRQ_COMPACQ) /* 53: Comparator Channel Acquisition Interrupt */
#endif
/* Vectors for high density devices */
@@ -187,70 +187,70 @@
* definition that provides the number of supported vectors.
*/
-# ifdef CONFIG_ARMV7M_CMNVECTOR
+#ifdef CONFIG_ARMV7M_CMNVECTOR
/* Reserve 61 interrupt table entries for I/O interrupts. */
-# define ARMV7M_PERIPHERAL_INTERRUPTS 57
+# define ARMV7M_PERIPHERAL_INTERRUPTS 57
#else
-# VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog interrupt */
-# VECTOR(stm32_pvd, STM32_IRQ_PVD) /* 1: PVD through EXTI Line detection interrupt */
-# VECTOR(stm32_tamper, STM32_IRQ_TAMPER) /* 2: Tamper through EXTI line interrupt */
-# VECTOR(stm32_rtc_wkup, STM32_IRQ_RTC_WKUP) /* 3: RTC Wakeup through EXTI line interrupt */
-# VECTOR(stm32_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
-# VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC global interrupt */
-# VECTOR(stm32_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
-# VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 interrupt */
-# VECTOR(stm32_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
-# VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 interrupt */
-# VECTOR(stm32_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
-# VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global interrupt */
-# VECTOR(stm32_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
-# VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 global interrupt */
-# VECTOR(stm32_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
-# VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 global interrupt */
-# VECTOR(stm32_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
-# VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 global interrupt */
-# VECTOR(stm32_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
-# VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
-# VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
-# VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
-# VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI interrupt */
-# VECTOR(stm32_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
-# VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
-# VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
-# VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
-# VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
-# VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
-# VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
-# VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
-# VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
-# VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
-# VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
-# VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
-# VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
-# VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
-# VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
-# VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
-# VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 global interrupt */
-# VECTOR(stm32_exti1510, STM32_IRQ_EXTI1510) /* 40: EXTI Line[15:10] interrupts */
-# VECTOR(stm32_rtcalrm, STM32_IRQ_RTCALRM) /* 41: RTC alarm through EXTI line interrupt */
-# VECTOR(stm32_usbwkup, STM32_IRQ_USBWKUP) /* 42: USB wakeup from suspend through EXTI line interrupt */
-# VECTOR(stm32_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
-# VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
-# VECTOR(stm32_sdio, STM32_IRQ_SDIO) /* 45: SDIO Global interrupt */
-# VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 46: TIM5 global interrupt */
-# VECTOR(stm32_spi3, STM32_IRQ_SPI3) /* 47: SPI3 global interrupt */
-# VECTOR(stm32_usart4, STM32_IRQ_USART4) /* 48: USART4 global interrupt */
-# VECTOR(stm32_usart5, STM32_IRQ_USART5) /* 49: USART5 global interrupt */
-# VECTOR(stm32_dma2ch1, STM32_IRQ_DMA2CH1) /* 50: DMA2 channel 1 global interrupt */
-# VECTOR(stm32_dma2ch2, STM32_IRQ_DMA2CH2) /* 51: DMA2 channel 2 global interrupt */
-# VECTOR(stm32_dma2ch3, STM32_IRQ_DMA2CH3) /* 52: DMA2 channel 3 global interrupt */
-# VECTOR(stm32_dma2ch4, STM32_IRQ_DMA2CH4) /* 53: DMA2 channel 4 global interrupt */
-# VECTOR(stm32_dma2ch5, STM32_IRQ_DMA2CH5) /* 54: DMA2 channel 5 global interrupt */
-# VECTOR(stm32_aes, STM32_IRQ_AES) /* 55: AES global interrupt */
-# VECTOR(stm32_compacq, STM32_IRQ_COMPACQ) /* 56: Comparator Channel Acquisition Interrupt */
+ VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog interrupt */
+ VECTOR(stm32_pvd, STM32_IRQ_PVD) /* 1: PVD through EXTI Line detection interrupt */
+ VECTOR(stm32_tamper, STM32_IRQ_TAMPER) /* 2: Tamper through EXTI line interrupt */
+ VECTOR(stm32_rtc_wkup, STM32_IRQ_RTC_WKUP) /* 3: RTC Wakeup through EXTI line interrupt */
+ VECTOR(stm32_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
+ VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC global interrupt */
+ VECTOR(stm32_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
+ VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 interrupt */
+ VECTOR(stm32_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
+ VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 interrupt */
+ VECTOR(stm32_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
+ VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global interrupt */
+ VECTOR(stm32_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
+ VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 global interrupt */
+ VECTOR(stm32_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
+ VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 global interrupt */
+ VECTOR(stm32_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
+ VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 global interrupt */
+ VECTOR(stm32_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
+ VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
+ VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
+ VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
+ VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI interrupt */
+ VECTOR(stm32_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
+ VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
+ VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
+ VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
+ VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
+ VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
+ VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
+ VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
+ VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
+ VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
+ VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
+ VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
+ VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
+ VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
+ VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
+ VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
+ VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 global interrupt */
+ VECTOR(stm32_exti1510, STM32_IRQ_EXTI1510) /* 40: EXTI Line[15:10] interrupts */
+ VECTOR(stm32_rtcalrm, STM32_IRQ_RTCALRM) /* 41: RTC alarm through EXTI line interrupt */
+ VECTOR(stm32_usbwkup, STM32_IRQ_USBWKUP) /* 42: USB wakeup from suspend through EXTI line interrupt */
+ VECTOR(stm32_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
+ VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
+ VECTOR(stm32_sdio, STM32_IRQ_SDIO) /* 45: SDIO Global interrupt */
+ VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 46: TIM5 global interrupt */
+ VECTOR(stm32_spi3, STM32_IRQ_SPI3) /* 47: SPI3 global interrupt */
+ VECTOR(stm32_usart4, STM32_IRQ_USART4) /* 48: USART4 global interrupt */
+ VECTOR(stm32_usart5, STM32_IRQ_USART5) /* 49: USART5 global interrupt */
+ VECTOR(stm32_dma2ch1, STM32_IRQ_DMA2CH1) /* 50: DMA2 channel 1 global interrupt */
+ VECTOR(stm32_dma2ch2, STM32_IRQ_DMA2CH2) /* 51: DMA2 channel 2 global interrupt */
+ VECTOR(stm32_dma2ch3, STM32_IRQ_DMA2CH3) /* 52: DMA2 channel 3 global interrupt */
+ VECTOR(stm32_dma2ch4, STM32_IRQ_DMA2CH4) /* 53: DMA2 channel 4 global interrupt */
+ VECTOR(stm32_dma2ch5, STM32_IRQ_DMA2CH5) /* 54: DMA2 channel 5 global interrupt */
+ VECTOR(stm32_aes, STM32_IRQ_AES) /* 55: AES global interrupt */
+ VECTOR(stm32_compacq, STM32_IRQ_COMPACQ) /* 56: Comparator Channel Acquisition Interrupt */
#endif
#else
diff --git a/arch/arm/src/stm32/stm32_vectors.S b/arch/arm/src/stm32/stm32_vectors.S
index 85d110be262..37c53e8d515 100644
--- a/arch/arm/src/stm32/stm32_vectors.S
+++ b/arch/arm/src/stm32/stm32_vectors.S
@@ -139,15 +139,15 @@ stm32_vectors:
#define UNUSED(i) .word stm32_reserved
#if defined(CONFIG_STM32_STM32L15XX)
-# include "chip/chip/stm32l15xxx_vectors.h"
+# include "chip/stm32l15xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F10XX)
-# include "chip/chip/stm32f10xxx_vectors.h"
+# include "chip/stm32f10xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F20XX)
-# include "chip/chip/stm32f20xxx_vectors.h"
+# include "chip/stm32f20xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F30XX)
-# include "chip/chip/stm32f30xxx_vectors.h"
+# include "chip/stm32f30xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F40XX)
-# include "chip/chip/stm32f40xxx_vectors.h"
+# include "chip/stm32f40xxx_vectors.h"
#else
# error "No vectors for STM32 chip"
#endif
@@ -179,15 +179,15 @@ handlers:
#define UNUSED(i)
#if defined(CONFIG_STM32_STM32L15XX)
-# include "chip/chip/stm32l15xxx_vectors.h"
+# include "chip/stm32l15xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F10XX)
-# include "chip/chip/stm32f10xxx_vectors.h"
+# include "chip/stm32f10xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F20XX)
-# include "chip/chip/stm32f20xxx_vectors.h"
+# include "chip/stm32f20xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F30XX)
-# include "chip/chip/stm32f30xxx_vectors.h"
+# include "chip/stm32f30xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F40XX)
-# include "chip/chip/stm32f40xxx_vectors.h"
+# include "chip/stm32f40xxx_vectors.h"
#else
# error "No handlers for STM32 chip"
#endif
diff --git a/arch/arm/src/stm32/stm32l15xxx_rcc.c b/arch/arm/src/stm32/stm32l15xxx_rcc.c
index 1063c27c138..c41280bf4ad 100644
--- a/arch/arm/src/stm32/stm32l15xxx_rcc.c
+++ b/arch/arm/src/stm32/stm32l15xxx_rcc.c
@@ -500,7 +500,7 @@ static void stm32_stdclockconfig(void)
* the PLL VCO frequency can be up to 96MHz. USB and SDIO can be supported.
*
* Range 1: PLLVCO up to 96MHz in range 1 (1.8V)
- * Range 2: PLLVCO up to 48MHz in range 2 (1.5V)
+ * Range 2: PLLVCO up to 48MHz in range 2 (1.5V) (default)
* Range 3: PLLVCO up to 24MHz in range 3 (1.2V)
*/
diff --git a/configs/open1788/README.txt b/configs/open1788/README.txt
index d1093122433..6f79ab34ddf 100644
--- a/configs/open1788/README.txt
+++ b/configs/open1788/README.txt
@@ -518,50 +518,57 @@ CONFIGURATION
0xa000:0000 (CS0).
6. This configuration has been used for verifying the touchscreen on
- on the 4.3" LCD module by modifying the configuration in the
- following ways:
+ on the 4.3" LCD module.
- Drivers:
- CONFIG_INPUT=y : Enable support for input devices
- CONFIG_INPUT_ADS7843E=y : Enable support for the XPT2048
- CONFIG_ADS7843E_SPIDEV=1 : Use SSP1 for communication
- CONFIG_SPI=y : Enable SPI support
- CONFIG_SPI_EXCHANGE=n : exchange() method is not supported
+ a) As of this writing, this touchscreen is still not function.
+ Rommel Marcelo has tracked this problem done to noise on the
+ PENIRQ interrupt. There are so many false interrupts that
+ the NuttX interrupt-driven touchscreen driver cannot be used.
- System Type:
- CONFIG_GPIO_IRQ=y : GPIO interrupt support
- CONFIG_LPC17_SSP1=y : Enable support for SSP1
+ b) You can enable the touchscreen by modifying the configuration
+ in the following ways:
+
+ Drivers:
+ CONFIG_INPUT=y : Enable support for input devices
+ CONFIG_INPUT_ADS7843E=y : Enable support for the XPT2048
+ CONFIG_ADS7843E_SPIDEV=1 : Use SSP1 for communication
+ CONFIG_SPI=y : Enable SPI support
+ CONFIG_SPI_EXCHANGE=n : exchange() method is not supported
+
+ System Type:
+ CONFIG_GPIO_IRQ=y : GPIO interrupt support
+ CONFIG_LPC17_SSP1=y : Enable support for SSP1
- Applicaton Configuration:
- CONFIG_EXAMPLES_TOUCHSCREEN=y : Enable the touchscreen built-int test
- CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN=y
+ Applicaton Configuration:
+ CONFIG_EXAMPLES_TOUCHSCREEN=y : Enable the touchscreen built-int test
+ CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN=y
- Defaults should be okay for related touchscreen settings.
+ Defaults should be okay for related touchscreen settings.
- You will also have to disable SD card support to use this test. The
- SD card detect (CD) signal is on P0[13]. This signal is shared. It
- is also used for MOSI1 and USB_UP_LED. The CD pin may be disconnected.
- There is a jumper on board that enables the CD pin. OR, you can simply
- remove the SD module so that it does not drive the CD pin.
+ c) You will also have to disable SD card support to use this test. The
+ SD card detect (CD) signal is on P0[13]. This signal is shared. It
+ is also used for MOSI1 and USB_UP_LED. The CD pin may be disconnected.
+ There is a jumper on board that enables the CD pin. OR, you can simply
+ remove the SD module so that it does not drive the CD pin.
- Drivers:
- CONFIG_MMCSD=n : No MMC/SD driver support
+ Drivers:
+ CONFIG_MMCSD=n : No MMC/SD driver support
- System Type:
- CONFIG_LPC17_GPDMA=n : No DMA
- CONFIG_LPC17_SDCARD=n : No SD card driver
- CONFIG_SDIO_DMA=n : No SD card DMA
- CONFIG_ARCH_DMA=n
+ System Type:
+ CONFIG_LPC17_GPDMA=n : No DMA
+ CONFIG_LPC17_SDCARD=n : No SD card driver
+ CONFIG_SDIO_DMA=n : No SD card DMA
+ CONFIG_ARCH_DMA=n
- File Systems:
- CONFIG_FS_FAT=n : No FAT file system support
+ File Systems:
+ CONFIG_FS_FAT=n : No FAT file system support
- For touchscreen debug output:
+ For touchscreen debug output:
- Build Setup:
- CONFIG_DEBUG=y
- CONFIG_DEBUG_VERBOSE=y
- CONFIG_DEBUG_INPUT=y
+ Build Setup:
+ CONFIG_DEBUG=y
+ CONFIG_DEBUG_VERBOSE=y
+ CONFIG_DEBUG_INPUT=y
7. The button test (apps/examples/buttons) can be built-in by adding
the following options. See apps/examples/README.txt for further
diff --git a/configs/stm32ldiscovery/README.txt b/configs/stm32ldiscovery/README.txt
index 860e220b1da..55d95dfb7c7 100644
--- a/configs/stm32ldiscovery/README.txt
+++ b/configs/stm32ldiscovery/README.txt
@@ -15,8 +15,8 @@ Both boards feature:
- LCD (24 segments, 4 commons),
- LEDs,
- Pushbuttons,
- - A linear touch sensor, and
- - four touchkeys.
+ - A linear touch sensor, and
+ - Four touchkeys.
Contents
========
diff --git a/configs/stm32ldiscovery/include/board.h b/configs/stm32ldiscovery/include/board.h
index 83edb182cc5..23132c38b9e 100644
--- a/configs/stm32ldiscovery/include/board.h
+++ b/configs/stm32ldiscovery/include/board.h
@@ -195,7 +195,7 @@
* STM32L-Discovery. The following definitions describe how NuttX controls the LEDs:
*
* SYMBOL Meaning LED state
- * LED3 LED4
+ * LED1 LED2
* ------------------- ----------------------- -------- --------
* LED_STARTED NuttX has been started OFF OFF
* LED_HEAPALLOCATE Heap has been allocated OFF OFF
@@ -253,25 +253,25 @@
#if !defined(CONFIG_STM32_LCD)
/* Select PA9 and PA10 if the LCD is not enabled */
-# define GPIO_USART1_RX GPIO_USART1_RX_1
-# define GPIO_USART1_TX GPIO_USART1_TX_1
+# define GPIO_USART1_RX GPIO_USART1_RX_1 /* PA10 */
+# define GPIO_USART1_TX GPIO_USART1_TX_1 /* PA9 */
/* This there are no other options for USART1 on this part */
-# define GPIO_USART2_RX GPIO_USART2_RX_1
-# define GPIO_USART2_TX GPIO_USART2_TX_1
+# define GPIO_USART2_RX GPIO_USART2_RX_1 /* PA3 */
+# define GPIO_USART2_TX GPIO_USART2_TX_1 /* PA2 */
/* Arbirtrarily select PB10 and PB11 */
-# define GPIO_USART3_RX GPIO_USART3_RX_1
-# define GPIO_USART3_TX GPIO_USART3_TX_1
+# define GPIO_USART3_RX GPIO_USART3_RX_1 /* PB11 */
+# define GPIO_USART3_TX GPIO_USART3_TX_1 /* PB10 */
#elif !defined(CONFIG_ARCH_LEDS)
/* Select PB6 and PB7 if the LEDs are not enabled */
-# define GPIO_USART1_RX GPIO_USART1_RX_2
-# define GPIO_USART1_TX GPIO_USART1_TX_2
+# define GPIO_USART1_RX GPIO_USART1_RX_2 /* PB7 */
+# define GPIO_USART1_TX GPIO_USART1_TX_2 /* PB6 */
#endif
diff --git a/configs/stm32ldiscovery/src/stm32_autoleds.c b/configs/stm32ldiscovery/src/stm32_autoleds.c
index 5a113eabc87..b03a6126604 100644
--- a/configs/stm32ldiscovery/src/stm32_autoleds.c
+++ b/configs/stm32ldiscovery/src/stm32_autoleds.c
@@ -60,7 +60,7 @@
* controls the LEDs:
*
* SYMBOL Meaning LED state
- * LED3 LED4
+ * LED1 LED2
* ------------------- ----------------------- -------- --------
* LED_STARTED NuttX has been started OFF OFF
* LED_HEAPALLOCATE Heap has been allocated OFF OFF
@@ -146,8 +146,11 @@ void up_ledon(int led)
void up_ledoff(int led)
{
- stm32_gpiowrite(GPIO_LED1, false);
- stm32_gpiowrite(GPIO_LED2, false);
+ if (led != 2)
+ {
+ stm32_gpiowrite(GPIO_LED1, false);
+ stm32_gpiowrite(GPIO_LED2, false);
+ }
}
#endif /* CONFIG_ARCH_LEDS */