Skip to content

Commit ef751e5

Browse files
authored
Merge pull request #53 from fpistm/nucleo_l432kc
Add Nucleo L432KC variant
2 parents 3c06986 + cfbccbd commit ef751e5

File tree

8 files changed

+1156
-5
lines changed

8 files changed

+1156
-5
lines changed

boards.txt

+39
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# See: http://code.google.com/p/arduino/wiki/Platforms
22

33
menu.upload_method=Upload method
4+
menu.Nucleo_32_board=Nucleo 32 boards
45
menu.Nucleo_64_board=Nucleo 64 boards
56
menu.Nucleo_144_board=Nucleo 144 boards
67
menu.Disco_board=Discovery boards
@@ -144,6 +145,44 @@ Nucleo_64.menu.upload_method.STLinkMethod=STLink
144145
Nucleo_64.menu.upload_method.STLinkMethod.upload.protocol=STLink
145146
Nucleo_64.menu.upload_method.STLinkMethod.upload.tool=stlink_upload
146147

148+
################################################################################
149+
# Nucleo 32 boards
150+
151+
Nucleo_32.name=Nucleo-32
152+
153+
Nucleo_32.build.vid=0x0483
154+
Nucleo_32.build.pid=0x5711
155+
Nucleo_32.vid.0=0x0483
156+
Nucleo_32.pid.0=0x5711
157+
158+
Nucleo_32.build.core=arduino
159+
Nucleo_32.build.board=Nucleo_32
160+
161+
# NUCLEO_L432KC board
162+
163+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC=Nucleo L432KC
164+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.node=NODE_L432KC
165+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.upload.maximum_size=65536
166+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.upload.maximum_data_size=262144
167+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.mcu=cortex-m4
168+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.f_cpu=80000000L
169+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.usb_product="NUCLEO-L432KC"
170+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.board=NUCLEO_L432KC
171+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.series=STM32L4xx
172+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.variant=NUCLEO_L432KC
173+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.cmsis_lib_gcc=arm_cortexM4l_math
174+
#To enable Serial1 (USART1 on PA10, PA9) add -DENABLE_SERIAL1
175+
Nucleo_32.menu.Nucleo_32_board.NUCLEO_L432KC.build.extra_flags=-DSTM32L432xx {build.usb_flags}
176+
177+
178+
Nucleo_32.menu.upload_method.MassStorageMethod=Mass Storage
179+
Nucleo_32.menu.upload_method.MassStorageMethod.upload.protocol=
180+
Nucleo_32.menu.upload_method.MassStorageMethod.upload.tool=massStorageCopy
181+
182+
Nucleo_32.menu.upload_method.STLinkMethod=STLink
183+
Nucleo_32.menu.upload_method.STLinkMethod.upload.protocol=STLink
184+
Nucleo_32.menu.upload_method.STLinkMethod.upload.tool=stlink_upload
185+
147186
################################################################################
148187
# Discovery boards
149188

cores/arduino/stm32/stm32_def_build.h

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
#define CMSIS_STARTUP_FILE "startup_stm32l053xx.s"
3939
#elif defined(STM32L476xx)
4040
#define CMSIS_STARTUP_FILE "startup_stm32l476xx.s"
41+
#elif defined(STM32L432xx)
42+
#define CMSIS_STARTUP_FILE "startup_stm32l432xx.s"
4143
#else
4244
#error UNKNOWN CHIP
4345
#endif

cores/arduino/stm32/stm32_eeprom.c

+9-5
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,15 @@
8484
#elif defined (STM32L0xx)
8585
#define FLASH_BASE_ADDRESS ((uint32_t)(DATA_EEPROM_BASE)) /* 0x08080000 */
8686
#elif defined (STM32L4xx)
87-
// Flash base address (Bank2, page 256)
88-
#define FLASH_BASE_ADDRESS 0x080FF800
89-
#define FLASH_PAGE_NUMBER 255
87+
#ifndef FLASH_BANK_2
88+
#define FLASH_BANK_NUMBER FLASH_BANK_1
89+
#else
90+
#define FLASH_BANK_NUMBER FLASH_BANK_2
91+
#endif // FLASH_BANK_2
92+
// Flash base address
93+
#define FLASH_PAGE_NUMBER ((uint32_t)((FLASH_SIZE/FLASH_PAGE_SIZE) -1))
94+
#define FLASH_BASE_ADDRESS ((uint32_t)(0x08000000 + (FLASH_PAGE_NUMBER*FLASH_PAGE_SIZE)))
9095
#endif
91-
9296
/**
9397
* @}
9498
*/
@@ -176,7 +180,7 @@ void set_data_to_flash(void)
176180
// ERASING page
177181
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
178182
#ifdef STM32L4xx
179-
EraseInitStruct.Banks = FLASH_BANK_2;
183+
EraseInitStruct.Banks = FLASH_BANK_NUMBER;
180184
EraseInitStruct.Page = FLASH_PAGE_NUMBER;
181185
#else // STM32F4xx
182186
EraseInitStruct.PageAddress = FLASH_BASE_ADDRESS;
+218
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2016, STMicroelectronics
4+
* All rights reserved.
5+
*
6+
* Redistribution and use in source and binary forms, with or without
7+
* modification, are permitted provided that the following conditions are met:
8+
*
9+
* 1. Redistributions of source code must retain the above copyright notice,
10+
* this list of conditions and the following disclaimer.
11+
* 2. Redistributions in binary form must reproduce the above copyright notice,
12+
* this list of conditions and the following disclaimer in the documentation
13+
* and/or other materials provided with the distribution.
14+
* 3. Neither the name of STMicroelectronics nor the names of its contributors
15+
* may be used to endorse or promote products derived from this software
16+
* without specific prior written permission.
17+
*
18+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28+
*******************************************************************************
29+
*/
30+
#include "Arduino.h"
31+
#include "PeripheralPins.h"
32+
33+
// =====
34+
// Note: Commented lines are alternative possibilities which are not used per default.
35+
// If you change them, you will have to know what you do
36+
// =====
37+
38+
39+
//*** ADC ***
40+
41+
#ifdef HAL_ADC_MODULE_ENABLED
42+
const PinMap PinMap_ADC[] = {
43+
{PA0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
44+
{PA1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_IN6
45+
// {PA2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 - STLink TX
46+
{PA3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
47+
{PA4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
48+
{PA5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
49+
{PA6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11
50+
{PA7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12
51+
{PB0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
52+
// {PB1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
53+
{NC, NP, 0}
54+
};
55+
#endif
56+
57+
//*** DAC ***
58+
59+
#ifdef HAL_DAC_MODULE_ENABLED
60+
const PinMap PinMap_DAC[] = {
61+
{PA4, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1
62+
{PA5, DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2
63+
{NC, NP, 0}
64+
};
65+
#endif
66+
67+
//*** I2C ***
68+
69+
#ifdef HAL_I2C_MODULE_ENABLED
70+
const PinMap PinMap_I2C_SDA[] = {
71+
{PA10, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
72+
{PB4, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
73+
{PB7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
74+
{NC, NP, 0}
75+
};
76+
#endif
77+
78+
#ifdef HAL_I2C_MODULE_ENABLED
79+
const PinMap PinMap_I2C_SCL[] = {
80+
{PA7, I2C3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)},
81+
{PA9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
82+
{PB6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
83+
{NC, NP, 0}
84+
};
85+
#endif
86+
87+
//*** PWM ***
88+
89+
#ifdef HAL_TIM_MODULE_ENABLED
90+
const PinMap PinMap_PWM[] = {
91+
{PA0, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
92+
{PA1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 1)}, // TIM15_CH1N
93+
// {PA1, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
94+
// {PA2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 1, 0)}, // TIM15_CH1 - STLink TX
95+
// {PA2, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 - STLink TX
96+
{PA3, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM15, 2, 0)}, // TIM15_CH2
97+
// {PA3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4
98+
{PA5, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1
99+
{PA6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 0)}, // TIM16_CH1
100+
{PA7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N
101+
{PA8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1
102+
{PA9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2
103+
{PA10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3
104+
{PA11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4
105+
// {PA15, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 - STLink RX
106+
{PB0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N
107+
{PB1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N
108+
{PB3, TIM2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2
109+
{PB6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_TIM16, 1, 1)}, // TIM16_CH1N
110+
{NC, NP, 0}
111+
};
112+
#endif
113+
114+
//*** SERIAL ***
115+
116+
#ifdef HAL_UART_MODULE_ENABLED
117+
const PinMap PinMap_UART_TX[] = {
118+
// {PA2, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
119+
{PA2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, // STLink TX
120+
{PA9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
121+
{PB6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
122+
{NC, NP, 0}
123+
};
124+
#endif
125+
126+
#ifdef HAL_UART_MODULE_ENABLED
127+
const PinMap PinMap_UART_RX[] = {
128+
// {PA3, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
129+
{PA3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
130+
{PA10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
131+
{PA15, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_USART2)}, // STLink RX
132+
{PB7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
133+
{NC, NP, 0}
134+
};
135+
#endif
136+
137+
#ifdef HAL_UART_MODULE_ENABLED
138+
const PinMap PinMap_UART_RTS[] = {
139+
{PA1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
140+
{PA12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
141+
// {PB1, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
142+
{PB3, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
143+
{NC, NP, 0}
144+
};
145+
#endif
146+
147+
#ifdef HAL_UART_MODULE_ENABLED
148+
const PinMap PinMap_UART_CTS[] = {
149+
{PA0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
150+
// {PA6, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART1)},
151+
{PA11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
152+
{PB4, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
153+
{NC, NP, 0}
154+
};
155+
#endif
156+
157+
//*** SPI ***
158+
159+
#ifdef HAL_SPI_MODULE_ENABLED
160+
const PinMap PinMap_SPI_MOSI[] = {
161+
{PA7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
162+
{PA12, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
163+
// {PB5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
164+
{PB5, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
165+
{NC, NP, 0}
166+
};
167+
#endif
168+
169+
#ifdef HAL_SPI_MODULE_ENABLED
170+
const PinMap PinMap_SPI_MISO[] = {
171+
{PA6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
172+
{PA11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
173+
// {PB4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
174+
{PB4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
175+
{NC, NP, 0}
176+
};
177+
#endif
178+
179+
#ifdef HAL_SPI_MODULE_ENABLED
180+
const PinMap PinMap_SPI_SCLK[] = {
181+
{PA1, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
182+
{PA5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
183+
// {PB3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
184+
{PB3, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
185+
{NC, NP, 0}
186+
};
187+
#endif
188+
189+
#ifdef HAL_SPI_MODULE_ENABLED
190+
const PinMap PinMap_SPI_SSEL[] = {
191+
// {PA4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
192+
{PA4, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)},
193+
// {PA15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)}, // STLink RX
194+
// {PA15, SPI3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_SPI3)}, // STLink RX
195+
{PB0, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI1)},
196+
{NC, NP, 0}
197+
};
198+
#endif
199+
200+
//*** CAN ***
201+
202+
#ifdef HAL_CAN_MODULE_ENABLED
203+
const PinMap PinMap_CAN_RD[] = {
204+
{PA11, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
205+
{NC, NP, 0}
206+
};
207+
#endif
208+
209+
#ifdef HAL_CAN_MODULE_ENABLED
210+
const PinMap PinMap_CAN_TD[] = {
211+
{PA12, CAN1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_CAN1)},
212+
{NC, NP, 0}
213+
};
214+
#endif
215+
216+
//*** ETHERNET ***
217+
218+
//*** No Ethernet ***

0 commit comments

Comments
 (0)