Fix STM32L15X vector definitions; Fix STM32L-Discovery LED controls. The NSH configuration is now fully functional on the STM32L-Discovery board.

This commit is contained in:
Gregory Nutt
2013-05-21 11:25:30 -06:00
parent 9ea58951b4
commit e4d906960a
9 changed files with 301 additions and 225 deletions
+4 -1
View File
@@ -4752,4 +4752,7 @@
* nuttx/arch/arm/src/lm/chip/lm_flash.h and nuttx/arch/arm/src/lm/lm_flash.c: * 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 Add support for TI/Stellaris internal FLASH MTD driver. From Max
Holtzberg (2013-5-20). 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).
+66 -3
View File
@@ -8,7 +8,7 @@
<tr align="center" bgcolor="#e4e4e4"> <tr align="center" bgcolor="#e4e4e4">
<td> <td>
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1> <h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
<p>Last Updated: May 6, 2013</p> <p>Last Updated: May 21, 2013</p>
</td> </td>
</tr> </tr>
</table> </table>
@@ -1554,7 +1554,7 @@
<li><a href="#arm920t">ARM920T</a> (1) </li> <li><a href="#arm920t">ARM920T</a> (1) </li>
<li><a href="#arm926ejs">ARM926EJS</a> (3) </li> <li><a href="#arm926ejs">ARM926EJS</a> (3) </li>
<li><a href="#armcortexm0">ARM Cortex-M0/M0+</a> (2)</li> <li><a href="#armcortexm0">ARM Cortex-M0/M0+</a> (2)</li>
<li><a href="#armcortexm3">ARM Cortex-M3</a> (17)</li> <li><a href="#armcortexm3">ARM Cortex-M3</a> (18)</li>
<li><a href="#armcortexm4">ARM Cortex-M4</a> (7)</li> <li><a href="#armcortexm4">ARM Cortex-M4</a> (7)</li>
</ul> </ul>
<li>Atmel AVR <li>Atmel AVR
@@ -1906,7 +1906,7 @@ $ size nuttx
</pre></ul> </pre></ul>
<p> <p>
NuttX, the NSH application, and GCC libraries use 34.2KB of FLASH leaving 93.8KB of FLASH (72%) free from additional application development. 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 (&lt;4%) and leaves 13.8KB (86%) available for heap at runtime. Static SRAM usage is about 1.2KB (&lt;4%) and leaves 14.8KB (86%) available for heap at runtime.
SRAM usage at run-time can be shown with the NSH <code>free</code> command: SRAM usage at run-time can be shown with the NSH <code>free</code> command:
</p> </p>
<ul><pre> <ul><pre>
@@ -2093,6 +2093,69 @@ nsh>
</ul> </ul>
</td> </td>
</tr> </tr>
<tr>
<td><br></td>
<td><hr></td>
</tr>
<tr>
<td><br></td>
<td>
<p>
<b>STMicro STM32L152 (STM32L &quot;EnergyLite&quot; Line)</b>.
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).
</p>
<ul>
<p>
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:
</p>
<ul>
<li>An ST-LINK/V2 embedded debug tool interface,</li>
<li>LCD (24 segments, 4 commons),</li>
<li>LEDs,</li>
<li>Pushbuttons,</li>
<li>A linear touch sensor, and</li>
<li>Four touchkeys.</li>
</ul>
<p>
<b>STATUS</b>.
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 (<a href="NuttShell.html">NSH</a>) 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.
</p>
<p>
<b>Memory Usage</b>.
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.
</p>
<p>
Static memory usage can be shown with <code>size</code> command:
</p>
<ul><pre>
$ size nuttx
text data bss dec hex filename
39664 132 1124 40920 9fd8 nuttx
</pre></ul>
<p>
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 (&lt;4%) and leaves 14.8KB (86%) available for heap at runtime.
</p>
SRAM usage at run-time can be shown with the NSH <code>free</code> command:
<ul><pre>
NuttShell (NSH) NuttX-6.27
nsh> free
total used free largest
Mem: 14096 3928 10168 10168
nsh>
</pre></ul>
<p>
You can see that 9.9KB (62%) of SRAM heap is staill available for further application development while NSH is running.
</p>
</td>
</tr>
<tr> <tr>
<td><br></td> <td><br></td>
<td><hr></td> <td><hr></td>
+162 -162
View File
@@ -54,58 +54,58 @@
* definition that provides the number of supported vectors. * 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. */ /* Reserve 61 interrupt table entries for I/O interrupts. */
# define ARMV7M_PERIPHERAL_INTERRUPTS 45 # define ARMV7M_PERIPHERAL_INTERRUPTS 45
#else #else
# VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog 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_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_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_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_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
# VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC 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_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
# VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 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_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
# VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 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_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
# VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global 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_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
# VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 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_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
# VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 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_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
# VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 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_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
# VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */ VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
# VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */ VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
# VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */ VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
# VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI 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_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
# VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */ VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
# VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */ VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
# VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */ VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
# VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */ VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
# VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */ VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
# VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */ VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
# VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */ VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
# VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */ VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
# VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */ VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
# VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */ VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
# VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */ VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
# VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */ VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
# VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */ VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
# VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */ VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
# VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */ VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
# VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 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_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_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_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_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
# VECTOR(stm32_TIM7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */ VECTOR(stm32_TIM7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
#endif #endif
/* Vectors for medium+ density devices */ /* Vectors for medium+ density devices */
@@ -116,67 +116,67 @@
* definition that provides the number of supported vectors. * 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. */ /* Reserve 61 interrupt table entries for I/O interrupts. */
# define ARMV7M_PERIPHERAL_INTERRUPTS 54 # define ARMV7M_PERIPHERAL_INTERRUPTS 54
#else #else
# VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog 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_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_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_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_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
# VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC 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_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
# VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 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_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
# VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 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_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
# VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global 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_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
# VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 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_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
# VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 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_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
# VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 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_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
# VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */ VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
# VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */ VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
# VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */ VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
# VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI 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_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
# VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */ VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
# VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */ VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
# VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */ VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
# VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */ VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
# VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */ VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
# VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */ VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
# VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */ VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
# VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */ VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
# VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */ VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
# VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */ VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
# VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */ VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
# VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */ VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
# VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */ VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
# VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */ VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
# VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */ VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
# VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 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_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_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_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_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
# VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */ VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
# VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 45: TIM5 global interrupt */ VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 45: TIM5 global interrupt */
# VECTOR(stm32_spi3, STM32_IRQ_SPI3) /* 46: SPI3 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_dma2ch1, STM32_IRQ_DMA2CH1) /* 47: DMA2 channel 1 global interrupt */
# VECTOR(stm32_dma2ch2, STM32_IRQ_DMA2CH2) /* 48: DMA2 channel 2 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_dma2ch3, STM32_IRQ_DMA2CH3) /* 49: DMA2 channel 3 global interrupt */
# VECTOR(stm32_dma2ch4, STM32_IRQ_DMA2CH4) /* 50: DMA2 channel 4 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_dma2ch5, STM32_IRQ_DMA2CH5) /* 51: DMA2 channel 5 global interrupt */
# VECTOR(stm32_aes, STM32_IRQ_AES) /* 52: AES 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_compacq, STM32_IRQ_COMPACQ) /* 53: Comparator Channel Acquisition Interrupt */
#endif #endif
/* Vectors for high density devices */ /* Vectors for high density devices */
@@ -187,70 +187,70 @@
* definition that provides the number of supported vectors. * 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. */ /* Reserve 61 interrupt table entries for I/O interrupts. */
# define ARMV7M_PERIPHERAL_INTERRUPTS 57 # define ARMV7M_PERIPHERAL_INTERRUPTS 57
#else #else
# VECTOR(stm32_wwdg, STM32_IRQ_WWDG) /* 0: Window Watchdog 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_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_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_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_flash, STM32_IRQ_FLASH) /* 4: Flash global interrupt */
# VECTOR(stm32_rcc, STM32_IRQ_RCC) /* 5: RCC 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_exti0, STM32_IRQ_EXTI0) /* 6: EXTI Line 0 interrupt */
# VECTOR(stm32_exti1, STM32_IRQ_EXTI1) /* 7: EXTI Line 1 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_exti2, STM32_IRQ_EXTI2) /* 8: EXTI Line 2 interrupt */
# VECTOR(stm32_exti3, STM32_IRQ_EXTI3) /* 9: EXTI Line 3 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_exti4, STM32_IRQ_EXTI4) /* 10: EXTI Line 4 interrupt */
# VECTOR(stm32_dma1ch1, STM32_IRQ_DMA1CH1) /* 11: DMA1 channel 1 global 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_dma1ch2, STM32_IRQ_DMA1CH2) /* 12: DMA1 channel 2 global interrupt */
# VECTOR(stm32_dma1ch3, STM32_IRQ_DMA1CH3) /* 13: DMA1 channel 3 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_dma1ch4, STM32_IRQ_DMA1CH4) /* 14: DMA1 channel 4 global interrupt */
# VECTOR(stm32_dma1ch5, STM32_IRQ_DMA1CH5) /* 15: DMA1 channel 5 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_dma1ch6, STM32_IRQ_DMA1CH6) /* 16: DMA1 channel 6 global interrupt */
# VECTOR(stm32_dma1ch7, STM32_IRQ_DMA1CH7) /* 17: DMA1 channel 7 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_adc1, STM32_IRQ_ADC1) /* 18: ADC1 global interrupt */
# VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */ VECTOR(stm32_usbhp, STM32_IRQ_USBHP) /* 19: USB High Priority interrupts */
# VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */ VECTOR(stm32_usblp, STM32_IRQ_USBLP) /* 20: USB Low Priority interrupt */
# VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */ VECTOR(stm32_dac, STM32_IRQ_DAC) /* 21: DAC interrupt */
# VECTOR(stm32_comp, STM32_IRQ_COMP) /* 22: Comparator wakeup through EXTI 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_exti95, STM32_IRQ_EXTI95) /* 23: EXTI Line[9:5] interrupts */
# VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */ VECTOR(stm32_ldc, STM32_IRQ_LDC) /* 24: LCD global interrupt */
# VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */ VECTOR(stm32_tim9, STM32_IRQ_TIM9) /* 25: TIM9 global interrupt */
# VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */ VECTOR(stm32_tim10, STM32_IRQ_TIM10) /* 26: TIM10 global interrupt */
# VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */ VECTOR(stm32_tim11, STM32_IRQ_TIM11) /* 27: TIM11 global interrupt */
# VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */ VECTOR(stm32_tim2, STM32_IRQ_TIM2) /* 28: TIM2 global interrupt */
# VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */ VECTOR(stm32_tim3, STM32_IRQ_TIM3) /* 29: TIM3 global interrupt */
# VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */ VECTOR(stm32_tim4, STM32_IRQ_TIM4) /* 30: TIM4 global interrupt */
# VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */ VECTOR(stm32_i2c1ev, STM32_IRQ_I2C1EV) /* 31: I2C1 event interrupt */
# VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */ VECTOR(stm32_i2c1er, STM32_IRQ_I2C1ER) /* 32: I2C1 error interrupt */
# VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */ VECTOR(stm32_i2c2ev, STM32_IRQ_I2C2EV) /* 33: I2C2 event interrupt */
# VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */ VECTOR(stm32_i2c2er, STM32_IRQ_I2C2ER) /* 34: I2C2 error interrupt */
# VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */ VECTOR(stm32_spi1, STM32_IRQ_SPI1) /* 35: SPI1 global interrupt */
# VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */ VECTOR(stm32_spi2, STM32_IRQ_SPI2) /* 36: SPI2 global interrupt */
# VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */ VECTOR(stm32_usart1, STM32_IRQ_USART1) /* 37: USART1 global interrupt */
# VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */ VECTOR(stm32_usart2, STM32_IRQ_USART2) /* 38: USART2 global interrupt */
# VECTOR(stm32_usart3, STM32_IRQ_USART3) /* 39: USART3 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_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_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_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_tim6, STM32_IRQ_TIM6) /* 43: TIM6 global interrupt */
# VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */ VECTOR(stm32_tim7, STM32_IRQ_TIM7) /* 44: TIM7 global interrupt */
# VECTOR(stm32_sdio, STM32_IRQ_SDIO) /* 45: SDIO Global interrupt */ VECTOR(stm32_sdio, STM32_IRQ_SDIO) /* 45: SDIO Global interrupt */
# VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 46: TIM5 global interrupt */ VECTOR(stm32_tim5, STM32_IRQ_TIM5) /* 46: TIM5 global interrupt */
# VECTOR(stm32_spi3, STM32_IRQ_SPI3) /* 47: SPI3 global interrupt */ VECTOR(stm32_spi3, STM32_IRQ_SPI3) /* 47: SPI3 global interrupt */
# VECTOR(stm32_usart4, STM32_IRQ_USART4) /* 48: USART4 global interrupt */ VECTOR(stm32_usart4, STM32_IRQ_USART4) /* 48: USART4 global interrupt */
# VECTOR(stm32_usart5, STM32_IRQ_USART5) /* 49: USART5 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_dma2ch1, STM32_IRQ_DMA2CH1) /* 50: DMA2 channel 1 global interrupt */
# VECTOR(stm32_dma2ch2, STM32_IRQ_DMA2CH2) /* 51: DMA2 channel 2 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_dma2ch3, STM32_IRQ_DMA2CH3) /* 52: DMA2 channel 3 global interrupt */
# VECTOR(stm32_dma2ch4, STM32_IRQ_DMA2CH4) /* 53: DMA2 channel 4 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_dma2ch5, STM32_IRQ_DMA2CH5) /* 54: DMA2 channel 5 global interrupt */
# VECTOR(stm32_aes, STM32_IRQ_AES) /* 55: AES 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_compacq, STM32_IRQ_COMPACQ) /* 56: Comparator Channel Acquisition Interrupt */
#endif #endif
#else #else
+10 -10
View File
@@ -139,15 +139,15 @@ stm32_vectors:
#define UNUSED(i) .word stm32_reserved #define UNUSED(i) .word stm32_reserved
#if defined(CONFIG_STM32_STM32L15XX) #if defined(CONFIG_STM32_STM32L15XX)
# include "chip/chip/stm32l15xxx_vectors.h" # include "chip/stm32l15xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F10XX) #elif defined(CONFIG_STM32_STM32F10XX)
# include "chip/chip/stm32f10xxx_vectors.h" # include "chip/stm32f10xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F20XX) #elif defined(CONFIG_STM32_STM32F20XX)
# include "chip/chip/stm32f20xxx_vectors.h" # include "chip/stm32f20xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F30XX) #elif defined(CONFIG_STM32_STM32F30XX)
# include "chip/chip/stm32f30xxx_vectors.h" # include "chip/stm32f30xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F40XX) #elif defined(CONFIG_STM32_STM32F40XX)
# include "chip/chip/stm32f40xxx_vectors.h" # include "chip/stm32f40xxx_vectors.h"
#else #else
# error "No vectors for STM32 chip" # error "No vectors for STM32 chip"
#endif #endif
@@ -179,15 +179,15 @@ handlers:
#define UNUSED(i) #define UNUSED(i)
#if defined(CONFIG_STM32_STM32L15XX) #if defined(CONFIG_STM32_STM32L15XX)
# include "chip/chip/stm32l15xxx_vectors.h" # include "chip/stm32l15xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F10XX) #elif defined(CONFIG_STM32_STM32F10XX)
# include "chip/chip/stm32f10xxx_vectors.h" # include "chip/stm32f10xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F20XX) #elif defined(CONFIG_STM32_STM32F20XX)
# include "chip/chip/stm32f20xxx_vectors.h" # include "chip/stm32f20xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F30XX) #elif defined(CONFIG_STM32_STM32F30XX)
# include "chip/chip/stm32f30xxx_vectors.h" # include "chip/stm32f30xxx_vectors.h"
#elif defined(CONFIG_STM32_STM32F40XX) #elif defined(CONFIG_STM32_STM32F40XX)
# include "chip/chip/stm32f40xxx_vectors.h" # include "chip/stm32f40xxx_vectors.h"
#else #else
# error "No handlers for STM32 chip" # error "No handlers for STM32 chip"
#endif #endif
+1 -1
View File
@@ -500,7 +500,7 @@ static void stm32_stdclockconfig(void)
* the PLL VCO frequency can be up to 96MHz. USB and SDIO can be supported. * 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 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) * Range 3: PLLVCO up to 24MHz in range 3 (1.2V)
*/ */
+41 -34
View File
@@ -518,50 +518,57 @@ CONFIGURATION
0xa000:0000 (CS0). 0xa000:0000 (CS0).
6. This configuration has been used for verifying the touchscreen on 6. This configuration has been used for verifying the touchscreen on
on the 4.3" LCD module by modifying the configuration in the on the 4.3" LCD module.
following ways:
Drivers: a) As of this writing, this touchscreen is still not function.
CONFIG_INPUT=y : Enable support for input devices Rommel Marcelo has tracked this problem done to noise on the
CONFIG_INPUT_ADS7843E=y : Enable support for the XPT2048 PENIRQ interrupt. There are so many false interrupts that
CONFIG_ADS7843E_SPIDEV=1 : Use SSP1 for communication the NuttX interrupt-driven touchscreen driver cannot be used.
CONFIG_SPI=y : Enable SPI support
CONFIG_SPI_EXCHANGE=n : exchange() method is not supported
System Type: b) You can enable the touchscreen by modifying the configuration
CONFIG_GPIO_IRQ=y : GPIO interrupt support in the following ways:
CONFIG_LPC17_SSP1=y : Enable support for SSP1
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: Applicaton Configuration:
CONFIG_EXAMPLES_TOUCHSCREEN=y : Enable the touchscreen built-int test CONFIG_EXAMPLES_TOUCHSCREEN=y : Enable the touchscreen built-int test
CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN=y 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 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 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. 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 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. remove the SD module so that it does not drive the CD pin.
Drivers: Drivers:
CONFIG_MMCSD=n : No MMC/SD driver support CONFIG_MMCSD=n : No MMC/SD driver support
System Type: System Type:
CONFIG_LPC17_GPDMA=n : No DMA CONFIG_LPC17_GPDMA=n : No DMA
CONFIG_LPC17_SDCARD=n : No SD card driver CONFIG_LPC17_SDCARD=n : No SD card driver
CONFIG_SDIO_DMA=n : No SD card DMA CONFIG_SDIO_DMA=n : No SD card DMA
CONFIG_ARCH_DMA=n CONFIG_ARCH_DMA=n
File Systems: File Systems:
CONFIG_FS_FAT=n : No FAT file system support CONFIG_FS_FAT=n : No FAT file system support
For touchscreen debug output: For touchscreen debug output:
Build Setup: Build Setup:
CONFIG_DEBUG=y CONFIG_DEBUG=y
CONFIG_DEBUG_VERBOSE=y CONFIG_DEBUG_VERBOSE=y
CONFIG_DEBUG_INPUT=y CONFIG_DEBUG_INPUT=y
7. The button test (apps/examples/buttons) can be built-in by adding 7. The button test (apps/examples/buttons) can be built-in by adding
the following options. See apps/examples/README.txt for further the following options. See apps/examples/README.txt for further
+2 -2
View File
@@ -15,8 +15,8 @@ Both boards feature:
- LCD (24 segments, 4 commons), - LCD (24 segments, 4 commons),
- LEDs, - LEDs,
- Pushbuttons, - Pushbuttons,
- A linear touch sensor, and - A linear touch sensor, and
- four touchkeys. - Four touchkeys.
Contents Contents
======== ========
+9 -9
View File
@@ -195,7 +195,7 @@
* STM32L-Discovery. The following definitions describe how NuttX controls the LEDs: * STM32L-Discovery. The following definitions describe how NuttX controls the LEDs:
* *
* SYMBOL Meaning LED state * SYMBOL Meaning LED state
* LED3 LED4 * LED1 LED2
* ------------------- ----------------------- -------- -------- * ------------------- ----------------------- -------- --------
* LED_STARTED NuttX has been started OFF OFF * LED_STARTED NuttX has been started OFF OFF
* LED_HEAPALLOCATE Heap has been allocated OFF OFF * LED_HEAPALLOCATE Heap has been allocated OFF OFF
@@ -253,25 +253,25 @@
#if !defined(CONFIG_STM32_LCD) #if !defined(CONFIG_STM32_LCD)
/* Select PA9 and PA10 if the LCD is not enabled */ /* Select PA9 and PA10 if the LCD is not enabled */
# define GPIO_USART1_RX GPIO_USART1_RX_1 # define GPIO_USART1_RX GPIO_USART1_RX_1 /* PA10 */
# define GPIO_USART1_TX GPIO_USART1_TX_1 # define GPIO_USART1_TX GPIO_USART1_TX_1 /* PA9 */
/* This there are no other options for USART1 on this part */ /* This there are no other options for USART1 on this part */
# define GPIO_USART2_RX GPIO_USART2_RX_1 # define GPIO_USART2_RX GPIO_USART2_RX_1 /* PA3 */
# define GPIO_USART2_TX GPIO_USART2_TX_1 # define GPIO_USART2_TX GPIO_USART2_TX_1 /* PA2 */
/* Arbirtrarily select PB10 and PB11 */ /* Arbirtrarily select PB10 and PB11 */
# define GPIO_USART3_RX GPIO_USART3_RX_1 # define GPIO_USART3_RX GPIO_USART3_RX_1 /* PB11 */
# define GPIO_USART3_TX GPIO_USART3_TX_1 # define GPIO_USART3_TX GPIO_USART3_TX_1 /* PB10 */
#elif !defined(CONFIG_ARCH_LEDS) #elif !defined(CONFIG_ARCH_LEDS)
/* Select PB6 and PB7 if the LEDs are not enabled */ /* Select PB6 and PB7 if the LEDs are not enabled */
# define GPIO_USART1_RX GPIO_USART1_RX_2 # define GPIO_USART1_RX GPIO_USART1_RX_2 /* PB7 */
# define GPIO_USART1_TX GPIO_USART1_TX_2 # define GPIO_USART1_TX GPIO_USART1_TX_2 /* PB6 */
#endif #endif
+6 -3
View File
@@ -60,7 +60,7 @@
* controls the LEDs: * controls the LEDs:
* *
* SYMBOL Meaning LED state * SYMBOL Meaning LED state
* LED3 LED4 * LED1 LED2
* ------------------- ----------------------- -------- -------- * ------------------- ----------------------- -------- --------
* LED_STARTED NuttX has been started OFF OFF * LED_STARTED NuttX has been started OFF OFF
* LED_HEAPALLOCATE Heap has been allocated OFF OFF * LED_HEAPALLOCATE Heap has been allocated OFF OFF
@@ -146,8 +146,11 @@ void up_ledon(int led)
void up_ledoff(int led) void up_ledoff(int led)
{ {
stm32_gpiowrite(GPIO_LED1, false); if (led != 2)
stm32_gpiowrite(GPIO_LED2, false); {
stm32_gpiowrite(GPIO_LED1, false);
stm32_gpiowrite(GPIO_LED2, false);
}
} }
#endif /* CONFIG_ARCH_LEDS */ #endif /* CONFIG_ARCH_LEDS */