Skip to content

Commit 2079864

Browse files
Added STM32F103R8 / RB variant folder supplied by @ahull. Also made minor change to the stm32f103r folder bootloader link file name, so that the same file name could be used in the existing stm32f103r folder and the new folder (but they have different contents)
1 parent ab37760 commit 2079864

27 files changed

Lines changed: 1524 additions & 11 deletions

STM32F1/boards.txt

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ genericSTM32F103C.menu.upload_method.BMPMethod.build.upload_flags=-DCONFIG_MAPLE
203203
########################### Generic STM32F103R ###########################
204204

205205
genericSTM32F103R.name=Generic STM32F103R series
206-
genericSTM32F103R.build.variant=generic_stm32f103r
206+
#genericSTM32F103R.build.variant=generic_stm32f103r
207207
genericSTM32F103R.build.vect=VECT_TAB_ADDR=0x8000000
208208
genericSTM32F103R.build.core=maple
209209
genericSTM32F103R.build.board=GENERIC_STM32F103R
@@ -212,21 +212,32 @@ genericSTM32F103R.upload.file_type=bin
212212
genericSTM32F103R.upload.auto_reset=true
213213

214214

215-
#genericSTM32F103R.menu.device_variant.STM32F103RB=STM32F103RB
216-
#genericSTM32F103R.menu.device_variant.STM32F103RB.build.cpu_flags=-DMCU_STM32F103RB
217-
#genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=131072
218-
#genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480
219-
#genericSTM32F103R.menu.device_variant.STM32F103RB.upload.flash.maximum_size=131072
220-
#genericSTM32F103R.menu.device_variant.STM32F103RB.build.ldscript=ld/stm32f103rb.ld
221-
222-
genericSTM32F103R.menu.device_variant.STM32F103RC=STM32F103RC
215+
genericSTM32F103R.menu.device_variant.STM32F103R8=STM32F103R8 (20k RAM. 64k Flash)
216+
genericSTM32F103R.menu.device_variant.STM32F103R8.build.variant=generic_stm32f103r8
217+
genericSTM32F103R.menu.device_variant.STM32F103R8.build.cpu_flags=-DMCU_STM32F103RB
218+
genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=65536
219+
genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480
220+
genericSTM32F103R.menu.device_variant.STM32F103RB.upload.flash.maximum_size=65536
221+
genericSTM32F103R.menu.device_variant.STM32F103RB.build.ldscript=ld/stm32f103r8.ld
222+
223+
genericSTM32F103R.menu.device_variant.STM32F103RB=STM32F103RB (20k RAM. 128k Flash)
224+
genericSTM32F103R.menu.device_variant.STM32F103R8.build.variant=generic_stm32f103r8
225+
genericSTM32F103R.menu.device_variant.STM32F103RB.build.cpu_flags=-DMCU_STM32F103RB
226+
genericSTM32F103R.menu.device_variant.STM32F103RB.upload.maximum_size=131072
227+
genericSTM32F103R.menu.device_variant.STM32F103RB.upload.ram.maximum_size=20480
228+
genericSTM32F103R.menu.device_variant.STM32F103RB.upload.flash.maximum_size=131072
229+
genericSTM32F103R.menu.device_variant.STM32F103RB.build.ldscript=ld/stm32f103rb.ld
230+
231+
genericSTM32F103R.menu.device_variant.STM32F103RC=STM32F103RC (48k RAM. 256k Flash)
232+
genericSTM32F103R.menu.device_variant.STM32F103RC.build.variant=generic_stm32f103r
223233
genericSTM32F103R.menu.device_variant.STM32F103RC.build.cpu_flags=-DMCU_STM32F103RC
224234
genericSTM32F103R.menu.device_variant.STM32F103RC.upload.maximum_size=262144
225235
genericSTM32F103R.menu.device_variant.STM32F103RC.upload.ram.maximum_size=49152
226236
genericSTM32F103R.menu.device_variant.STM32F103RC.upload.flash.maximum_size=262144
227237
genericSTM32F103R.menu.device_variant.STM32F103RC.build.ldscript=ld/stm32f103rc.ld
228238

229-
genericSTM32F103R.menu.device_variant.STM32F103RE=STM32F103RE
239+
genericSTM32F103R.menu.device_variant.STM32F103RE=STM32F103RE (64k RAM. 512k Flash)
240+
genericSTM32F103R.menu.device_variant.STM32F103RE.build.variant=generic_stm32f103r
230241
genericSTM32F103R.menu.device_variant.STM32F103RE.build.cpu_flags=-DMCU_STM32F103RE
231242
genericSTM32F103R.menu.device_variant.STM32F103RE.upload.maximum_size=524288
232243
genericSTM32F103R.menu.device_variant.STM32F103RE.upload.ram.maximum_size=65536
@@ -241,7 +252,7 @@ genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu
241252
genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload
242253
genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER
243254
genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.vect=VECT_TAB_ADDR=0x8002000
244-
genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.ldscript=ld/stm32f103re-bootloader.ld
255+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.ldscript=ld/bootloader.ld
245256
genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.usbID=1EAF:0003
246257
genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.altID=2
247258

STM32F1/variants/generic_stm32f103r/ld/stm32f103re-bootloader.ld renamed to STM32F1/variants/generic_stm32f103r/ld/bootloader.ld

File renamed without changes.
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
/******************************************************************************
2+
* The MIT License
3+
*
4+
* Copyright (c) 2011 LeafLabs, LLC.
5+
*
6+
* Permission is hereby granted, free of charge, to any person
7+
* obtaining a copy of this software and associated documentation
8+
* files (the "Software"), to deal in the Software without
9+
* restriction, including without limitation the rights to use, copy,
10+
* modify, merge, publish, distribute, sublicense, and/or sell copies
11+
* of the Software, and to permit persons to whom the Software is
12+
* furnished to do so, subject to the following conditions:
13+
*
14+
* The above copyright notice and this permission notice shall be
15+
* included in all copies or substantial portions of the Software.
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21+
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22+
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24+
* SOFTWARE.
25+
*****************************************************************************/
26+
27+
/**
28+
* @file wirish/boards/maple_mini/board.cpp
29+
* @author Marti Bolivar <mbolivar@leaflabs.com>
30+
* @brief Maple Mini board file.
31+
*/
32+
33+
#include <board/board.h>
34+
35+
#include <libmaple/gpio.h>
36+
#include <libmaple/timer.h>
37+
38+
/* Roger Clark. Added next to includes for changes to Serial */
39+
#include <libmaple/usart.h>
40+
#include <HardwareSerial.h>
41+
42+
#include <wirish_debug.h>
43+
#include <wirish_types.h>
44+
45+
/* Since we want the Serial Wire/JTAG pins as GPIOs, disable both SW
46+
* and JTAG debug support, unless configured otherwise. */
47+
void boardInit(void) {
48+
#ifndef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG
49+
disableDebugPorts();
50+
#endif
51+
}
52+
53+
// Note. See the enum of pin names in board.h
54+
55+
extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = {
56+
57+
58+
{GPIOA, TIMER2, ADC1, 0, 1, 0}, /* PA0 */
59+
{GPIOA, TIMER2, ADC1, 1, 2, 1}, /* PA1 */
60+
{GPIOA, TIMER2, ADC1, 2, 3, 2}, /* PA2 */
61+
{GPIOA, TIMER2, ADC1, 3, 4, 3}, /* PA3 */
62+
{GPIOA, NULL, ADC1, 4, 0, 4}, /* PA4 */
63+
{GPIOA, NULL, ADC1, 5, 0, 5}, /* PA5 */
64+
{GPIOA, TIMER3, ADC1, 6, 1, 6}, /* PA6 */
65+
{GPIOA, TIMER3, ADC1, 7, 2, 7}, /* PA7 */
66+
{GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */
67+
{GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */
68+
{GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */
69+
{GPIOA, TIMER1, NULL, 11, 4, ADCx}, /* PA11 */
70+
{GPIOA, NULL, NULL, 12, 0, ADCx}, /* PA12 */
71+
{GPIOA, NULL, NULL, 13, 0, ADCx}, /* PA13 */
72+
{GPIOA, NULL, NULL, 14, 0, ADCx}, /* PA14 */
73+
{GPIOA, NULL, NULL, 15, 0, ADCx}, /* PA15 */
74+
75+
{GPIOB, TIMER3, ADC1, 0, 3, 8}, /* PB0 */
76+
{GPIOB, TIMER3, ADC1, 1, 4, 9}, /* PB1 */
77+
{GPIOB, NULL, NULL, 2, 0, ADCx}, /* PB2 */
78+
{GPIOB, NULL, NULL, 3, 0, ADCx}, /* PB3 */
79+
{GPIOB, NULL, NULL, 4, 0, ADCx}, /* PB4 */
80+
{GPIOB, NULL, NULL, 5, 0, ADCx}, /* PB5 */
81+
{GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */
82+
{GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */
83+
{GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */
84+
{GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */
85+
{GPIOB, NULL, NULL, 10, 0, ADCx}, /* PB10 */
86+
{GPIOB, NULL, NULL, 11, 0, ADCx}, /* PB11 */
87+
{GPIOB, NULL, NULL, 12, 0, ADCx}, /* PB12 */
88+
{GPIOB, NULL, NULL, 13, 0, ADCx}, /* PB13 */
89+
{GPIOB, NULL, NULL, 14, 0, ADCx}, /* PB14 */
90+
{GPIOB, NULL, NULL, 15, 0, ADCx}, /* PB15 */
91+
92+
/* Andy Hull - the R8 is similar to the C8 but exposes more GPIO as follows */
93+
{GPIOC, NULL, ADC1, 0, 0, 10}, /* PC0 */
94+
{GPIOC, NULL, ADC1, 1, 0, 11}, /* PC1 */
95+
{GPIOC, NULL, ADC1, 2, 0, 12}, /* PC2 */
96+
{GPIOC, NULL, ADC1, 3, 0, 13}, /* PC3 */
97+
{GPIOC, NULL, ADC1, 4, 0, 14}, /* PC4 */
98+
{GPIOC, NULL, ADC1, 5, 0, 15}, /* PC5 */
99+
100+
{GPIOC, NULL, NULL, 6, 0, ADCx}, /* PC6 */
101+
{GPIOC, NULL, NULL, 7, 0, ADCx}, /* PC7 */
102+
{GPIOC, NULL, NULL, 8, 0, ADCx}, /* PC8 */
103+
{GPIOC, NULL, NULL, 9, 0, ADCx}, /* PC9 */
104+
105+
{GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 */
106+
{GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 */
107+
{GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 */
108+
{GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 */
109+
{GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 */
110+
{GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 */
111+
112+
{GPIOD, NULL, NULL, 2, 0, ADCx}, /* PD2 */
113+
};
114+
115+
extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = {
116+
PB0, PA7, PA6, PA3, PA2, PA1, PA0, PB7, PB6, PA10, PA9, PA8, PC6, PC7, PC8, PC9
117+
};
118+
119+
extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = {
120+
PB0, PA7, PA6 , PA5 , PA4 , PA3 , PA2 , PA1 , PA0 , PC0, PC1, PC2, PC3, PC4, PC5
121+
};
122+
123+
// Note. These defines are not really used by generic boards. They are for Maple Serial USB
124+
#define USB_DP PA12
125+
#define USB_DM PA11
126+
127+
// NOte. These definitions are not really used for generic boards, they only relate to boards modified to behave like Maple boards
128+
extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = {
129+
USB_DP, USB_DM
130+
};
131+
132+
133+
/*
134+
* Roger Clark
135+
*
136+
* 2015/05/28
137+
*
138+
* Moved definitions for Hardware Serial devices from HardwareSerial.cpp so that each board can define which Arduino "Serial" instance
139+
* Maps to which hardware serial port on the microprocessor
140+
*/
141+
142+
#ifdef SERIAL_USB
143+
DEFINE_HWSERIAL(Serial1, 1);
144+
145+
DEFINE_HWSERIAL(Serial2, 2);
146+
147+
DEFINE_HWSERIAL(Serial3, 3);
148+
149+
#else
150+
DEFINE_HWSERIAL(Serial, 1);
151+
152+
DEFINE_HWSERIAL(Serial1, 2);
153+
154+
DEFINE_HWSERIAL(Serial2, 3);
155+
156+
157+
#endif
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/******************************************************************************
2+
* The MIT License
3+
*
4+
* Copyright (c) 2011 LeafLabs, LLC.
5+
*
6+
* Permission is hereby granted, free of charge, to any person
7+
* obtaining a copy of this software and associated documentation
8+
* files (the "Software"), to deal in the Software without
9+
* restriction, including without limitation the rights to use, copy,
10+
* modify, merge, publish, distribute, sublicense, and/or sell copies
11+
* of the Software, and to permit persons to whom the Software is
12+
* furnished to do so, subject to the following conditions:
13+
*
14+
* The above copyright notice and this permission notice shall be
15+
* included in all copies or substantial portions of the Software.
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21+
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22+
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24+
* SOFTWARE.
25+
*****************************************************************************/
26+
27+
/**
28+
* @file wirish/boards/maple_mini/include/board/board.h
29+
* @author Marti Bolivar <mbolivar@leaflabs.com>
30+
* @brief Maple Mini board header.
31+
*
32+
* See wirish/boards/maple/include/board/board.h for more information
33+
* on these definitions.
34+
*/
35+
36+
#ifndef _BOARD_GENERIC_STM32F103R8_H_
37+
#define _BOARD_GENERIC_STM32F103R8_H_
38+
39+
#define CYCLES_PER_MICROSECOND 72
40+
#define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */
41+
42+
#define BOARD_NR_USARTS 3
43+
#define BOARD_USART1_TX_PIN PA9
44+
#define BOARD_USART1_RX_PIN PA10
45+
#define BOARD_USART2_TX_PIN PA2
46+
#define BOARD_USART2_RX_PIN PA3
47+
#define BOARD_USART3_TX_PIN PB10
48+
#define BOARD_USART3_RX_PIN PB11
49+
50+
#define BOARD_NR_SPI 2
51+
#define BOARD_SPI1_NSS_PIN PA4
52+
#define BOARD_SPI1_MOSI_PIN PA7
53+
#define BOARD_SPI1_MISO_PIN PA6
54+
#define BOARD_SPI1_SCK_PIN PA5
55+
56+
#define BOARD_SPI2_NSS_PIN PB12
57+
#define BOARD_SPI2_MOSI_PIN PB15
58+
#define BOARD_SPI2_MISO_PIN PB14
59+
#define BOARD_SPI2_SCK_PIN PB13
60+
61+
#define BOARD_NR_GPIO_PINS 49
62+
#define BOARD_NR_PWM_PINS 16
63+
#define BOARD_NR_ADC_PINS 15
64+
#define BOARD_NR_USED_PINS 4
65+
66+
67+
#define BOARD_JTMS_SWDIO_PIN 22
68+
#define BOARD_JTCK_SWCLK_PIN 21
69+
#define BOARD_JTDI_PIN 20
70+
#define BOARD_JTDO_PIN 19
71+
#define BOARD_NJTRST_PIN 18
72+
73+
#define BOARD_USB_DISC_DEV GPIOB
74+
#define BOARD_USB_DISC_BIT 10
75+
76+
// Note this needs to match with the PIN_MAP array in board.cpp
77+
enum {
78+
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15,
79+
PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15,
80+
PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15,
81+
PD2
82+
};
83+
84+
#endif
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* Linker script for Generic STM32F103RE boards, using the generic bootloader (which takes the lower 8k of memory)
3+
*/
4+
MEMORY
5+
{
6+
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
7+
rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K
8+
}
9+
10+
11+
/* Provide memory region aliases for common.inc */
12+
REGION_ALIAS("REGION_TEXT", rom);
13+
REGION_ALIAS("REGION_DATA", ram);
14+
REGION_ALIAS("REGION_BSS", ram);
15+
REGION_ALIAS("REGION_RODATA", rom);
16+
17+
/* Let common.inc handle the real work. */
18+
INCLUDE common.inc
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* libmaple linker script for "Flash" builds.
3+
*
4+
* A Flash build puts .text (and .rodata) in Flash, and
5+
* .data/.bss/heap (of course) in SRAM, but offsets the sections by
6+
* enough space to store the Maple bootloader, which lives in low
7+
* Flash and uses low memory.
8+
*/
9+
10+
/*
11+
* This pulls in the appropriate MEMORY declaration from the right
12+
* subdirectory of stm32/mem/ (the environment must call ld with the
13+
* right include directory flags to make this happen). Boards can also
14+
* use this file to use any of libmaple's memory-related hooks (like
15+
* where the heap should live).
16+
*/
17+
MEMORY
18+
{
19+
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
20+
rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K
21+
}
22+
23+
/* Provide memory region aliases for common.inc */
24+
REGION_ALIAS("REGION_TEXT", rom);
25+
REGION_ALIAS("REGION_DATA", ram);
26+
REGION_ALIAS("REGION_BSS", ram);
27+
REGION_ALIAS("REGION_RODATA", rom);
28+
29+
/* Let common.inc handle the real work. */
30+
INCLUDE common.inc

0 commit comments

Comments
 (0)