Skip to content

Commit 168f9a3

Browse files
committed
STM32G0: introduce sub family for custom boards
STM32G030x8 STM32G041x8 STM32G050x8 STM32G051x8 STM32G061x8 STM32G081xB STM32G0B0xE STM32G0B1xE STM32G0C1xE
1 parent b711180 commit 168f9a3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+7534
-51
lines changed

targets/TARGET_STM/TARGET_STM32G0/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,17 @@
44
add_subdirectory(TARGET_STM32G030x8 EXCLUDE_FROM_ALL)
55
add_subdirectory(TARGET_STM32G031x8 EXCLUDE_FROM_ALL)
66
add_subdirectory(TARGET_STM32G041x8 EXCLUDE_FROM_ALL)
7+
add_subdirectory(TARGET_STM32G050x8 EXCLUDE_FROM_ALL)
8+
add_subdirectory(TARGET_STM32G051x8 EXCLUDE_FROM_ALL)
9+
add_subdirectory(TARGET_STM32G061x8 EXCLUDE_FROM_ALL)
710
add_subdirectory(TARGET_STM32G070xB EXCLUDE_FROM_ALL)
811
add_subdirectory(TARGET_STM32G071xB EXCLUDE_FROM_ALL)
912
add_subdirectory(TARGET_STM32G081xB EXCLUDE_FROM_ALL)
13+
add_subdirectory(TARGET_STM32G0B0xE EXCLUDE_FROM_ALL)
14+
add_subdirectory(TARGET_STM32G0B1xE EXCLUDE_FROM_ALL)
15+
16+
add_subdirectory(TARGET_STM32G0C1xE EXCLUDE_FROM_ALL)
17+
1018
add_subdirectory(STM32Cube_FW EXCLUDE_FROM_ALL)
1119

1220
add_library(mbed-stm32g0 INTERFACE)

targets/TARGET_STM/TARGET_STM32G0/PeripheralNames.h

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ extern "C" {
2222
#endif
2323

2424
typedef enum {
25-
ADC_1 = (int)ADC1_BASE
25+
ADC_1 = (int)ADC1_BASE,
2626
} ADCName;
2727

2828
#if defined DAC_BASE
2929
typedef enum {
30-
DAC_1 = (int)DAC_BASE
30+
DAC_1 = (int)DAC_BASE,
3131
} DACName;
3232
#endif
3333

@@ -40,32 +40,69 @@ typedef enum {
4040
#if defined USART4_BASE
4141
UART_4 = (int)USART4_BASE,
4242
#endif
43-
LPUART_1 = (int)LPUART1_BASE
43+
#if defined USART5_BASE
44+
UART_5 = (int)USART5_BASE,
45+
#endif
46+
#if defined USART6_BASE
47+
UART_6 = (int)USART6_BASE,
48+
#endif
49+
#if defined LPUART1_BASE
50+
LPUART_1 = (int)LPUART1_BASE,
51+
#endif
52+
#if defined LPUART2_BASE
53+
LPUART_2 = (int)LPUART2_BASE,
54+
#endif
4455
} UARTName;
4556

4657
#define DEVICE_SPI_COUNT 2
4758
typedef enum {
4859
SPI_1 = (int)SPI1_BASE,
49-
SPI_2 = (int)SPI2_BASE
60+
SPI_2 = (int)SPI2_BASE,
61+
#if defined SPI3_BASE
62+
SPI_3 = (int)SPI3_BASE,
63+
#endif
5064
} SPIName;
5165

5266
typedef enum {
5367
I2C_1 = (int)I2C1_BASE,
54-
I2C_2 = (int)I2C2_BASE
68+
I2C_2 = (int)I2C2_BASE,
69+
#if defined I2C3_BASE
70+
I2C_3 = (int)I2C3_BASE,
71+
#endif
5572
} I2CName;
5673

5774
typedef enum {
5875
PWM_1 = (int)TIM1_BASE,
76+
#if defined TIM2_BASE
5977
PWM_2 = (int)TIM2_BASE,
78+
#endif
6079
PWM_3 = (int)TIM3_BASE,
80+
#if defined TIM4_BASE
81+
PWM_4 = (int)TIM4_BASE,
82+
#endif
6183
PWM_14 = (int)TIM14_BASE,
6284
#if defined TIM15_BASE
6385
PWM_15 = (int)TIM15_BASE,
6486
#endif
6587
PWM_16 = (int)TIM16_BASE,
66-
PWM_17 = (int)TIM17_BASE
88+
PWM_17 = (int)TIM17_BASE,
6789
} PWMName;
6890

91+
#if defined FDCAN1_BASE
92+
typedef enum {
93+
CAN_1 = (int)FDCAN1_BASE,
94+
#if defined FDCAN2_BASE
95+
CAN_2 = (int)FDCAN2_BASE,
96+
#endif
97+
} CANName;
98+
#endif
99+
100+
#if defined USB_BASE
101+
typedef enum {
102+
USB_FS = (int)USB_BASE
103+
} USBName;
104+
#endif
105+
69106
#ifdef __cplusplus
70107
}
71108
#endif
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Copyright (c) 2020 ARM Limited. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
5+
set(STARTUP_FILE TOOLCHAIN_GCC_ARM/startup_stm32g050xx.S)
6+
set(LINKER_FILE TOOLCHAIN_GCC_ARM/stm32g050x8.ld)
7+
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
8+
set(STARTUP_FILE TOOLCHAIN_ARM/startup_stm32g050xx.S)
9+
set(LINKER_FILE TOOLCHAIN_ARM/stm32g050x8.sct)
10+
endif()
11+
12+
add_library(mbed-stm32g050x8 INTERFACE)
13+
14+
target_include_directories(mbed-stm32g050x8
15+
INTERFACE
16+
.
17+
)
18+
19+
target_sources(mbed-stm32g050x8
20+
INTERFACE
21+
${STARTUP_FILE}
22+
)
23+
24+
mbed_set_linker_script(mbed-stm32g050x8 ${CMAKE_CURRENT_SOURCE_DIR}/${LINKER_FILE})
25+
26+
target_link_libraries(mbed-stm32g050x8 INTERFACE mbed-stm32g0)
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
;******************************************************************************
2+
;* File Name : startup_stm32g050xx.s
3+
;* Author : MCD Application Team
4+
;* Description : STM32G050xx devices vector table for MDK-ARM toolchain.
5+
;* This module performs:
6+
;* - Set the initial SP
7+
;* - Set the initial PC == Reset_Handler
8+
;* - Set the vector table entries with the exceptions ISR address
9+
;* - Branches to __main in the C library (which eventually
10+
;* calls main()).
11+
;* After Reset the CortexM0 processor is in Thread mode,
12+
;* priority is Privileged, and the Stack is set to Main.
13+
;* <<< Use Configuration Wizard in Context Menu >>>
14+
;******************************************************************************
15+
;* @attention
16+
;*
17+
;* Copyright (c) 2018-2021 STMicroelectronics.
18+
;* All rights reserved.
19+
;*
20+
;* This software is licensed under terms that can be found in the LICENSE file
21+
;* in the root directory of this software component.
22+
;* If no LICENSE file comes with this software, it is provided AS-IS.
23+
;*
24+
;******************************************************************************
25+
PRESERVE8
26+
THUMB
27+
28+
29+
; Vector Table Mapped to Address 0 at Reset
30+
AREA RESET, DATA, READONLY
31+
EXPORT __Vectors
32+
EXPORT __Vectors_End
33+
EXPORT __Vectors_Size
34+
35+
IMPORT |Image$$ARM_LIB_STACK$$ZI$$Limit|
36+
__Vectors DCD |Image$$ARM_LIB_STACK$$ZI$$Limit| ; Top of Stack
37+
DCD Reset_Handler ; Reset Handler
38+
DCD NMI_Handler ; NMI Handler
39+
DCD HardFault_Handler ; Hard Fault Handler
40+
DCD 0 ; Reserved
41+
DCD 0 ; Reserved
42+
DCD 0 ; Reserved
43+
DCD 0 ; Reserved
44+
DCD 0 ; Reserved
45+
DCD 0 ; Reserved
46+
DCD 0 ; Reserved
47+
DCD SVC_Handler ; SVCall Handler
48+
DCD 0 ; Reserved
49+
DCD 0 ; Reserved
50+
DCD PendSV_Handler ; PendSV Handler
51+
DCD SysTick_Handler ; SysTick Handler
52+
53+
; External Interrupts
54+
DCD WWDG_IRQHandler ; Window Watchdog
55+
DCD 0 ; Reserved
56+
DCD RTC_TAMP_IRQHandler ; RTC through EXTI Line
57+
DCD FLASH_IRQHandler ; FLASH
58+
DCD RCC_IRQHandler ; RCC
59+
DCD EXTI0_1_IRQHandler ; EXTI Line 0 and 1
60+
DCD EXTI2_3_IRQHandler ; EXTI Line 2 and 3
61+
DCD EXTI4_15_IRQHandler ; EXTI Line 4 to 15
62+
DCD 0 ; Reserved
63+
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
64+
DCD DMA1_Channel2_3_IRQHandler ; DMA1 Channel 2 and Channel 3
65+
DCD DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler ; DMA1 Channel 4 to Channel 7, DMAMUX1 overrun
66+
DCD ADC1_IRQHandler ; ADC1
67+
DCD TIM1_BRK_UP_TRG_COM_IRQHandler ; TIM1 Break, Update, Trigger and Commutation
68+
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
69+
DCD 0 ; Reserved
70+
DCD TIM3_IRQHandler ; TIM3
71+
DCD TIM6_IRQHandler ; TIM6
72+
DCD TIM7_IRQHandler ; TIM7
73+
DCD TIM14_IRQHandler ; TIM14
74+
DCD TIM15_IRQHandler ; TIM15
75+
DCD TIM16_IRQHandler ; TIM16
76+
DCD TIM17_IRQHandler ; TIM17
77+
DCD I2C1_IRQHandler ; I2C1
78+
DCD I2C2_IRQHandler ; I2C2
79+
DCD SPI1_IRQHandler ; SPI1
80+
DCD SPI2_IRQHandler ; SPI2
81+
DCD USART1_IRQHandler ; USART1
82+
DCD USART2_IRQHandler ; USART2
83+
84+
__Vectors_End
85+
86+
__Vectors_Size EQU __Vectors_End - __Vectors
87+
88+
AREA |.text|, CODE, READONLY
89+
90+
; Reset handler routine
91+
Reset_Handler PROC
92+
EXPORT Reset_Handler [WEAK]
93+
IMPORT __main
94+
IMPORT SystemInit
95+
LDR R0, =SystemInit
96+
BLX R0
97+
LDR R0, =__main
98+
BX R0
99+
ENDP
100+
101+
; Dummy Exception Handlers (infinite loops which can be modified)
102+
103+
NMI_Handler PROC
104+
EXPORT NMI_Handler [WEAK]
105+
B .
106+
ENDP
107+
HardFault_Handler\
108+
PROC
109+
EXPORT HardFault_Handler [WEAK]
110+
B .
111+
ENDP
112+
SVC_Handler PROC
113+
EXPORT SVC_Handler [WEAK]
114+
B .
115+
ENDP
116+
PendSV_Handler PROC
117+
EXPORT PendSV_Handler [WEAK]
118+
B .
119+
ENDP
120+
SysTick_Handler PROC
121+
EXPORT SysTick_Handler [WEAK]
122+
B .
123+
ENDP
124+
125+
Default_Handler PROC
126+
127+
EXPORT WWDG_IRQHandler [WEAK]
128+
EXPORT RTC_TAMP_IRQHandler [WEAK]
129+
EXPORT FLASH_IRQHandler [WEAK]
130+
EXPORT RCC_IRQHandler [WEAK]
131+
EXPORT EXTI0_1_IRQHandler [WEAK]
132+
EXPORT EXTI2_3_IRQHandler [WEAK]
133+
EXPORT EXTI4_15_IRQHandler [WEAK]
134+
EXPORT DMA1_Channel1_IRQHandler [WEAK]
135+
EXPORT DMA1_Channel2_3_IRQHandler [WEAK]
136+
EXPORT DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler [WEAK]
137+
EXPORT ADC1_IRQHandler [WEAK]
138+
EXPORT TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
139+
EXPORT TIM1_CC_IRQHandler [WEAK]
140+
EXPORT TIM3_IRQHandler [WEAK]
141+
EXPORT TIM6_IRQHandler [WEAK]
142+
EXPORT TIM7_IRQHandler [WEAK]
143+
EXPORT TIM14_IRQHandler [WEAK]
144+
EXPORT TIM15_IRQHandler [WEAK]
145+
EXPORT TIM16_IRQHandler [WEAK]
146+
EXPORT TIM17_IRQHandler [WEAK]
147+
EXPORT I2C1_IRQHandler [WEAK]
148+
EXPORT I2C2_IRQHandler [WEAK]
149+
EXPORT SPI1_IRQHandler [WEAK]
150+
EXPORT SPI2_IRQHandler [WEAK]
151+
EXPORT USART1_IRQHandler [WEAK]
152+
EXPORT USART2_IRQHandler [WEAK]
153+
154+
155+
WWDG_IRQHandler
156+
RTC_TAMP_IRQHandler
157+
FLASH_IRQHandler
158+
RCC_IRQHandler
159+
EXTI0_1_IRQHandler
160+
EXTI2_3_IRQHandler
161+
EXTI4_15_IRQHandler
162+
DMA1_Channel1_IRQHandler
163+
DMA1_Channel2_3_IRQHandler
164+
DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler
165+
ADC1_IRQHandler
166+
TIM1_BRK_UP_TRG_COM_IRQHandler
167+
TIM1_CC_IRQHandler
168+
TIM3_IRQHandler
169+
TIM6_IRQHandler
170+
TIM7_IRQHandler
171+
TIM14_IRQHandler
172+
TIM15_IRQHandler
173+
TIM16_IRQHandler
174+
TIM17_IRQHandler
175+
I2C1_IRQHandler
176+
I2C2_IRQHandler
177+
SPI1_IRQHandler
178+
SPI2_IRQHandler
179+
USART1_IRQHandler
180+
USART2_IRQHandler
181+
182+
B .
183+
184+
ENDP
185+
186+
ALIGN
187+
188+
;*******************************************************************************
189+
; User Stack and Heap initialization
190+
;*******************************************************************************
191+
192+
END
193+
194+
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#! armclang -E --target=arm-arm-none-eabi -x c -mcpu=cortex-m0
2+
; Scatter-Loading Description File
3+
;
4+
; SPDX-License-Identifier: BSD-3-Clause
5+
;******************************************************************************
6+
;* @attention
7+
;*
8+
;* Copyright (c) 2016-2020 STMicroelectronics.
9+
;* All rights reserved.
10+
;*
11+
;* This software component is licensed by ST under BSD 3-Clause license,
12+
;* the "License"; You may not use this file except in compliance with the
13+
;* License. You may obtain a copy of the License at:
14+
;* opensource.org/licenses/BSD-3-Clause
15+
;*
16+
;******************************************************************************
17+
18+
#include "../cmsis_nvic.h"
19+
20+
#if !defined(MBED_APP_START)
21+
#define MBED_APP_START MBED_ROM_START
22+
#endif
23+
24+
#if !defined(MBED_APP_SIZE)
25+
#define MBED_APP_SIZE MBED_ROM_SIZE
26+
#endif
27+
28+
#if !defined(MBED_CONF_TARGET_BOOT_STACK_SIZE)
29+
/* This value is normally defined by the tools to 0x1000 for bare metal and 0x400 for RTOS */
30+
#if defined(MBED_BOOT_STACK_SIZE)
31+
#define MBED_CONF_TARGET_BOOT_STACK_SIZE MBED_BOOT_STACK_SIZE
32+
#else
33+
#define MBED_CONF_TARGET_BOOT_STACK_SIZE 0x400
34+
#endif
35+
#endif
36+
37+
/* Round up VECTORS_SIZE to 8 bytes */
38+
#define VECTORS_SIZE (((NVIC_NUM_VECTORS * 4) + 7) AND ~7)
39+
40+
LR_IROM1 MBED_APP_START MBED_APP_SIZE {
41+
42+
ER_IROM1 MBED_APP_START MBED_APP_SIZE {
43+
*.o (RESET, +First)
44+
*(InRoot$$Sections)
45+
.ANY (+RO)
46+
}
47+
48+
RW_IRAM1 (MBED_RAM_START + VECTORS_SIZE) { ; RW data
49+
.ANY (+RW +ZI)
50+
}
51+
52+
ARM_LIB_HEAP AlignExpr(+0, 16) EMPTY (MBED_RAM_START + MBED_RAM_SIZE - MBED_CONF_TARGET_BOOT_STACK_SIZE - AlignExpr(ImageLimit(RW_IRAM1), 16)) { ; Heap growing up
53+
}
54+
55+
ARM_LIB_STACK (MBED_RAM_START + MBED_RAM_SIZE) EMPTY -MBED_CONF_TARGET_BOOT_STACK_SIZE { ; Stack region growing down
56+
}
57+
}

0 commit comments

Comments
 (0)