Skip to content

Commit 05ea446

Browse files
committed
variant: add GENERIC_G0B1R(B-C-E)Tx and Generic_G0C1R(C-E)Tx
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 43a7c3e commit 05ea446

File tree

4 files changed

+262
-2
lines changed

4 files changed

+262
-2
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
288288
| :green_heart: | STM32G041K6<br>STM32G041K8 | Generic Board | *2.0.0* | |
289289
| :green_heart: | STM32G071R6<br>STM32G071R8<br>STM32G071RB | Generic Board | *2.0.0* | |
290290
| :green_heart: | STM32G081RB | Generic Board | *2.0.0* | |
291+
| :yellow_heart: | STM32G0B1RB<br>STM32G0B1RC<br>STM32G0B1RE | Generic Board | **2.1.0** | |
292+
| :yellow_heart: | STM32G0C1RB<br>STM32G0C1RE | Generic Board | **2.1.0** | |
291293

292294
### Generic STM32G4 boards
293295

boards.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3248,6 +3248,46 @@ GenG0.menu.pnum.GENERIC_G081RBTX.build.board=GENERIC_G081RBTX
32483248
GenG0.menu.pnum.GENERIC_G081RBTX.build.product_line=STM32G081xx
32493249
GenG0.menu.pnum.GENERIC_G081RBTX.build.variant=STM32G0xx/G071R(6-8)T_G071RB(I-T)_G081RB(I-T)
32503250

3251+
# Generic G0B1RBTx
3252+
GenG0.menu.pnum.GENERIC_G0B1RBTX=Generic G0B1RBTx
3253+
GenG0.menu.pnum.GENERIC_G0B1RBTX.upload.maximum_size=131072
3254+
GenG0.menu.pnum.GENERIC_G0B1RBTX.upload.maximum_data_size=147456
3255+
GenG0.menu.pnum.GENERIC_G0B1RBTX.build.board=GENERIC_G0B1RBTX
3256+
GenG0.menu.pnum.GENERIC_G0B1RBTX.build.product_line=STM32G0B1xx
3257+
GenG0.menu.pnum.GENERIC_G0B1RBTX.build.variant=STM32G0xx/G0B1R(B-C-E)T_G0C1R(C-E)T
3258+
3259+
# Generic G0B1RCTx
3260+
GenG0.menu.pnum.GENERIC_G0B1RCTX=Generic G0B1RCTx
3261+
GenG0.menu.pnum.GENERIC_G0B1RCTX.upload.maximum_size=262144
3262+
GenG0.menu.pnum.GENERIC_G0B1RCTX.upload.maximum_data_size=147456
3263+
GenG0.menu.pnum.GENERIC_G0B1RCTX.build.board=GENERIC_G0B1RCTX
3264+
GenG0.menu.pnum.GENERIC_G0B1RCTX.build.product_line=STM32G0B1xx
3265+
GenG0.menu.pnum.GENERIC_G0B1RCTX.build.variant=STM32G0xx/G0B1R(B-C-E)T_G0C1R(C-E)T
3266+
3267+
# Generic G0B1RETx
3268+
GenG0.menu.pnum.GENERIC_G0B1RETX=Generic G0B1RETx
3269+
GenG0.menu.pnum.GENERIC_G0B1RETX.upload.maximum_size=524288
3270+
GenG0.menu.pnum.GENERIC_G0B1RETX.upload.maximum_data_size=147456
3271+
GenG0.menu.pnum.GENERIC_G0B1RETX.build.board=GENERIC_G0B1RETX
3272+
GenG0.menu.pnum.GENERIC_G0B1RETX.build.product_line=STM32G0B1xx
3273+
GenG0.menu.pnum.GENERIC_G0B1RETX.build.variant=STM32G0xx/G0B1R(B-C-E)T_G0C1R(C-E)T
3274+
3275+
# Generic G0C1RCTx
3276+
GenG0.menu.pnum.GENERIC_G0C1RCTX=Generic G0C1RCTx
3277+
GenG0.menu.pnum.GENERIC_G0C1RCTX.upload.maximum_size=262144
3278+
GenG0.menu.pnum.GENERIC_G0C1RCTX.upload.maximum_data_size=147456
3279+
GenG0.menu.pnum.GENERIC_G0C1RCTX.build.board=GENERIC_G0C1RCTX
3280+
GenG0.menu.pnum.GENERIC_G0C1RCTX.build.product_line=STM32G0C1xx
3281+
GenG0.menu.pnum.GENERIC_G0C1RCTX.build.variant=STM32G0xx/G0B1R(B-C-E)T_G0C1R(C-E)T
3282+
3283+
# Generic G0C1RETx
3284+
GenG0.menu.pnum.GENERIC_G0C1RETX=Generic G0C1RETx
3285+
GenG0.menu.pnum.GENERIC_G0C1RETX.upload.maximum_size=524288
3286+
GenG0.menu.pnum.GENERIC_G0C1RETX.upload.maximum_data_size=147456
3287+
GenG0.menu.pnum.GENERIC_G0C1RETX.build.board=GENERIC_G0C1RETX
3288+
GenG0.menu.pnum.GENERIC_G0C1RETX.build.product_line=STM32G0C1xx
3289+
GenG0.menu.pnum.GENERIC_G0C1RETX.build.variant=STM32G0xx/G0B1R(B-C-E)T_G0C1R(C-E)T
3290+
32513291
# Upload menu
32523292
GenG0.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
32533293
GenG0.menu.upload_method.swdMethod.upload.protocol=0

variants/STM32G0xx/G0B1R(B-C-E)T_G0C1R(C-E)T/generic_clock.c

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,49 @@
2222
*/
2323
WEAK void SystemClock_Config(void)
2424
{
25-
/* SystemClock_Config can be generated by STM32CubeMX */
26-
#warning "SystemClock_Config() is empty. Default clock at reset is used."
25+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
26+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
27+
RCC_PeriphCLKInitTypeDef PeriphClkInit = {};
28+
29+
/** Configure the main internal regulator output voltage
30+
*/
31+
HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
32+
/** Initializes the RCC Oscillators according to the specified parameters
33+
* in the RCC_OscInitTypeDef structure.
34+
*/
35+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSI48;
36+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
37+
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
38+
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
39+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
40+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
41+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
42+
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
43+
RCC_OscInitStruct.PLL.PLLN = 8;
44+
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
45+
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
46+
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
47+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
48+
Error_Handler();
49+
}
50+
/** Initializes the CPU, AHB and APB buses clocks
51+
*/
52+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
53+
| RCC_CLOCKTYPE_PCLK1;
54+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
55+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
56+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
57+
58+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
59+
Error_Handler();
60+
}
61+
/** Initializes the peripherals clocks
62+
*/
63+
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
64+
PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
65+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
66+
Error_Handler();
67+
}
2768
}
2869

2970
#endif /* ARDUINO_GENERIC_* */
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
/**
2+
******************************************************************************
3+
* @file LinkerScript.ld
4+
* @author Auto-generated by STM32CubeIDE
5+
* @brief Linker script for STM32G0B1RETx Device from STM32G0 series
6+
* 512Kbytes FLASH
7+
* 144Kbytes RAM
8+
*
9+
* Set heap size, stack size and stack location according
10+
* to application requirements.
11+
*
12+
* Set memory bank area and size if external memory is used
13+
******************************************************************************
14+
* @attention
15+
*
16+
* <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
17+
* All rights reserved.</center></h2>
18+
*
19+
* This software component is licensed by ST under BSD 3-Clause license,
20+
* the "License"; You may not use this file except in compliance with the
21+
* License. You may obtain a copy of the License at:
22+
* opensource.org/licenses/BSD-3-Clause
23+
*
24+
******************************************************************************
25+
*/
26+
27+
/* Entry Point */
28+
ENTRY(Reset_Handler)
29+
30+
/* Highest address of the user mode stack */
31+
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
32+
33+
_Min_Heap_Size = 0x200; /* required amount of heap */
34+
_Min_Stack_Size = 0x400; /* required amount of stack */
35+
36+
/* Memories definition */
37+
MEMORY
38+
{
39+
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 144K
40+
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
41+
}
42+
43+
/* Sections */
44+
SECTIONS
45+
{
46+
/* The startup code into "FLASH" Rom type memory */
47+
.isr_vector :
48+
{
49+
. = ALIGN(4);
50+
KEEP(*(.isr_vector)) /* Startup code */
51+
. = ALIGN(4);
52+
} >FLASH
53+
54+
/* The program code and other data into "FLASH" Rom type memory */
55+
.text :
56+
{
57+
. = ALIGN(4);
58+
*(.text) /* .text sections (code) */
59+
*(.text*) /* .text* sections (code) */
60+
*(.glue_7) /* glue arm to thumb code */
61+
*(.glue_7t) /* glue thumb to arm code */
62+
*(.eh_frame)
63+
64+
KEEP (*(.init))
65+
KEEP (*(.fini))
66+
67+
. = ALIGN(4);
68+
_etext = .; /* define a global symbols at end of code */
69+
} >FLASH
70+
71+
/* Constant data into "FLASH" Rom type memory */
72+
.rodata :
73+
{
74+
. = ALIGN(4);
75+
*(.rodata) /* .rodata sections (constants, strings, etc.) */
76+
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
77+
. = ALIGN(4);
78+
} >FLASH
79+
80+
.ARM.extab : {
81+
. = ALIGN(4);
82+
*(.ARM.extab* .gnu.linkonce.armextab.*)
83+
. = ALIGN(4);
84+
} >FLASH
85+
86+
.ARM : {
87+
. = ALIGN(4);
88+
__exidx_start = .;
89+
*(.ARM.exidx*)
90+
__exidx_end = .;
91+
. = ALIGN(4);
92+
} >FLASH
93+
94+
.preinit_array :
95+
{
96+
. = ALIGN(4);
97+
PROVIDE_HIDDEN (__preinit_array_start = .);
98+
KEEP (*(.preinit_array*))
99+
PROVIDE_HIDDEN (__preinit_array_end = .);
100+
. = ALIGN(4);
101+
} >FLASH
102+
103+
.init_array :
104+
{
105+
. = ALIGN(4);
106+
PROVIDE_HIDDEN (__init_array_start = .);
107+
KEEP (*(SORT(.init_array.*)))
108+
KEEP (*(.init_array*))
109+
PROVIDE_HIDDEN (__init_array_end = .);
110+
. = ALIGN(4);
111+
} >FLASH
112+
113+
.fini_array :
114+
{
115+
. = ALIGN(4);
116+
PROVIDE_HIDDEN (__fini_array_start = .);
117+
KEEP (*(SORT(.fini_array.*)))
118+
KEEP (*(.fini_array*))
119+
PROVIDE_HIDDEN (__fini_array_end = .);
120+
. = ALIGN(4);
121+
} >FLASH
122+
123+
/* Used by the startup to initialize data */
124+
_sidata = LOADADDR(.data);
125+
126+
/* Initialized data sections into "RAM" Ram type memory */
127+
.data :
128+
{
129+
. = ALIGN(4);
130+
_sdata = .; /* create a global symbol at data start */
131+
*(.data) /* .data sections */
132+
*(.data*) /* .data* sections */
133+
*(.RamFunc) /* .RamFunc sections */
134+
*(.RamFunc*) /* .RamFunc* sections */
135+
136+
. = ALIGN(4);
137+
_edata = .; /* define a global symbol at data end */
138+
139+
} >RAM AT> FLASH
140+
141+
/* Uninitialized data section into "RAM" Ram type memory */
142+
. = ALIGN(4);
143+
.bss :
144+
{
145+
/* This is used by the startup in order to initialize the .bss section */
146+
_sbss = .; /* define a global symbol at bss start */
147+
__bss_start__ = _sbss;
148+
*(.bss)
149+
*(.bss*)
150+
*(COMMON)
151+
152+
. = ALIGN(4);
153+
_ebss = .; /* define a global symbol at bss end */
154+
__bss_end__ = _ebss;
155+
} >RAM
156+
157+
/* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */
158+
._user_heap_stack :
159+
{
160+
. = ALIGN(8);
161+
PROVIDE ( end = . );
162+
PROVIDE ( _end = . );
163+
. = . + _Min_Heap_Size;
164+
. = . + _Min_Stack_Size;
165+
. = ALIGN(8);
166+
} >RAM
167+
168+
/* Remove information from the compiler libraries */
169+
/DISCARD/ :
170+
{
171+
libc.a ( * )
172+
libm.a ( * )
173+
libgcc.a ( * )
174+
}
175+
176+
.ARM.attributes 0 : { *(.ARM.attributes) }
177+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy