Skip to content

Commit 608bbdd

Browse files
authored
Merge pull request #3555 from hathach/refactor-fsdev
refactor fsdev
2 parents c1cf1ec + d63f11d commit 608bbdd

File tree

21 files changed

+737
-668
lines changed

21 files changed

+737
-668
lines changed

hw/bsp/stm32u0/boards/stm32u083cdk/board.cmake

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
set(MCU_VARIANT stm32u083xx)
22
set(JLINK_DEVICE stm32u083mc)
33

4-
set(LD_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/STM32U083MCTx_FLASH.ld)
5-
set(LD_FILE_IAR ${CMAKE_CURRENT_LIST_DIR}/stm32u083xx_flash.icf)
6-
74
function(update_board TARGET)
85
target_compile_definitions(${TARGET} PUBLIC
96
STM32U083xx

hw/bsp/stm32u0/boards/stm32u083cdk/board.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@
5757
//--------------------------------------------------------------------+
5858
// RCC Clock
5959
//--------------------------------------------------------------------+
60-
static inline void board_stm32u0_clock_init(void)
61-
{
60+
static inline void SystemClock_Config(void) {
6261
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
6362
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
6463
RCC_CRSInitTypeDef RCC_CRSInitStruct = {0};
@@ -78,10 +77,10 @@ static inline void board_stm32u0_clock_init(void)
7877
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
7978
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
8079
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
81-
RCC_OscInitStruct.PLL.PLLN = 8;
80+
RCC_OscInitStruct.PLL.PLLN = 7;
8281
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
83-
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
84-
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV4;
82+
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV4;
83+
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
8584
HAL_RCC_OscConfig(&RCC_OscInitStruct);
8685

8786
/** Initializes the CPU, AHB and APB buses clocks

hw/bsp/stm32u0/boards/stm32u083cdk/board.mk

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@ MCU_VARIANT = stm32u083xx
22
CFLAGS += \
33
-DSTM32U083xx
44

5-
# All source paths should be relative to the top level.
6-
LD_FILE = $(BOARD_PATH)/STM32U083MCTx_FLASH.ld
7-
LD_FILE_IAR = $(BOARD_PATH)/stm32u083xx_flash.icf
8-
95
# For flash-jlink target
106
JLINK_DEVICE = STM32U083MC
117

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
set(MCU_VARIANT stm32u083xx)
2+
set(JLINK_DEVICE stm32u083rc)
3+
4+
function(update_board TARGET)
5+
target_compile_definitions(${TARGET} PUBLIC
6+
STM32U083xx
7+
CFG_EXAMPLE_VIDEO_READONLY
8+
)
9+
endfunction()
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/*
2+
* The MIT License (MIT)
3+
*
4+
* Copyright (c) 2020, Ha Thach (tinyusb.org)
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in
14+
* all copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+
* THE SOFTWARE.
23+
*
24+
* This file is part of the TinyUSB stack.
25+
*/
26+
27+
/* metadata:
28+
name: NUCLEO-U083RC
29+
url: https://www.st.com/en/evaluation-tools/nucleo-u083rc.html
30+
*/
31+
32+
#ifndef BOARD_H_
33+
#define BOARD_H_
34+
35+
#ifdef __cplusplus
36+
extern "C" {
37+
#endif
38+
39+
// LED: PA5 (LD4, Green)
40+
#define LED_PORT GPIOA
41+
#define LED_PIN GPIO_PIN_5
42+
#define LED_STATE_ON 1
43+
44+
// Button: PC13 (B1, Blue)
45+
#define BUTTON_PORT GPIOC
46+
#define BUTTON_PIN GPIO_PIN_13
47+
#define BUTTON_STATE_ACTIVE 0
48+
49+
// UART: USART2 on PA2/PA3 (VCP via ST-Link)
50+
#define UART_DEV USART2
51+
#define UART_CLK_EN __HAL_RCC_USART2_CLK_ENABLE
52+
#define UART_GPIO_PORT GPIOA
53+
#define UART_GPIO_AF GPIO_AF7_USART2
54+
#define UART_TX_PIN GPIO_PIN_2
55+
#define UART_RX_PIN GPIO_PIN_3
56+
57+
//--------------------------------------------------------------------+
58+
// RCC Clock
59+
//--------------------------------------------------------------------+
60+
static inline void SystemClock_Config(void) {
61+
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
62+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
63+
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
64+
65+
HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
66+
67+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSI48;
68+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
69+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
70+
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
71+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
72+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
73+
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
74+
RCC_OscInitStruct.PLL.PLLN = 7;
75+
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
76+
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV4;
77+
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
78+
HAL_RCC_OscConfig(&RCC_OscInitStruct);
79+
80+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
81+
| RCC_CLOCKTYPE_PCLK1;
82+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
83+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
84+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
85+
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
86+
87+
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
88+
PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
89+
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
90+
}
91+
92+
static inline void board_vbus_sense_init(void) {
93+
}
94+
95+
#ifdef __cplusplus
96+
}
97+
#endif
98+
99+
#endif /* BOARD_H_ */
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
MCU_VARIANT = stm32u083xx
2+
CFLAGS += \
3+
-DSTM32U083xx
4+
5+
# For flash-jlink target
6+
JLINK_DEVICE = STM32U083RC
7+
8+
# flash target using on-board stlink
9+
flash: flash-stlink
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
#MicroXplorer Configuration settings - do not modify
2+
BSP_IP_NAME=NUCLEO-U083RC
3+
CAD.formats=[]
4+
CAD.pinconfig=Dual
5+
CAD.provider=
6+
File.Version=6
7+
GPIO.groupedBy=
8+
KeepUserPlacement=false
9+
Mcu.CPN=STM32U083RCT6
10+
Mcu.Family=STM32U0
11+
Mcu.IP0=CORTEX_M0+
12+
Mcu.IP1=NVIC
13+
Mcu.IP2=PWR
14+
Mcu.IP3=RCC
15+
Mcu.IP4=SYS
16+
Mcu.IP5=USART2
17+
Mcu.IP6=USB
18+
Mcu.IP7=NUCLEO-U083RC
19+
Mcu.IPNb=8
20+
Mcu.Name=STM32U083RCTx
21+
Mcu.Package=LQFP64
22+
Mcu.Pin0=PC14-OSC32_IN
23+
Mcu.Pin1=PC15-OSC32_OUT
24+
Mcu.Pin10=VP_PWR_VS_SECSignals
25+
Mcu.Pin11=VP_SYS_VS_Systick
26+
Mcu.Pin2=PF0-OSC_IN
27+
Mcu.Pin3=PF1-OSC_OUT
28+
Mcu.Pin4=PA2
29+
Mcu.Pin5=PA3
30+
Mcu.Pin6=PA11 [PA9]
31+
Mcu.Pin7=PA12 [PA10]
32+
Mcu.Pin8=PA13 (SWDIO)
33+
Mcu.Pin9=PA14 (SWCLK)
34+
Mcu.PinsNb=12
35+
Mcu.ThirdPartyNb=0
36+
Mcu.UserConstants=
37+
Mcu.UserName=STM32U083RCTx
38+
MxCube.Version=6.17.0
39+
MxDb.Version=DB.6.0.170
40+
NVIC.ForceEnableDMAVector=true
41+
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
42+
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
43+
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
44+
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_2
45+
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
46+
NVIC.SysTick_IRQn=true\:3\:0\:false\:false\:true\:false\:true\:false
47+
PA11\ [PA9].Mode=Device
48+
PA11\ [PA9].Signal=USB_DM
49+
PA12\ [PA10].Mode=Device
50+
PA12\ [PA10].Signal=USB_DP
51+
PA13\ (SWDIO).GPIOParameters=GPIO_Label
52+
PA13\ (SWDIO).GPIO_Label=SWDIO
53+
PA13\ (SWDIO).Locked=true
54+
PA13\ (SWDIO).Signal=DEBUG_JTMS-SWDIO
55+
PA14\ (SWCLK).GPIOParameters=GPIO_Label
56+
PA14\ (SWCLK).GPIO_Label=SWCLK
57+
PA14\ (SWCLK).Locked=true
58+
PA14\ (SWCLK).Signal=DEBUG_JTCK-SWCLK
59+
PA2.GPIOParameters=GPIO_ModeDefaultPP,GPIO_Speed,GPIO_PuPd
60+
PA2.GPIO_ModeDefaultPP=GPIO_MODE_AF_PP
61+
PA2.GPIO_PuPd=GPIO_NOPULL
62+
PA2.GPIO_Speed=GPIO_SPEED_FREQ_LOW
63+
PA2.Locked=true
64+
PA2.Mode=Asynchronous
65+
PA2.Signal=USART2_TX
66+
PA3.GPIOParameters=GPIO_ModeDefaultPP,GPIO_Speed,GPIO_PuPd
67+
PA3.GPIO_ModeDefaultPP=GPIO_MODE_AF_PP
68+
PA3.GPIO_PuPd=GPIO_NOPULL
69+
PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW
70+
PA3.Locked=true
71+
PA3.Mode=Asynchronous
72+
PA3.Signal=USART2_RX
73+
PC14-OSC32_IN.GPIOParameters=GPIO_Label
74+
PC14-OSC32_IN.GPIO_Label=OSC32_IN
75+
PC14-OSC32_IN.Locked=true
76+
PC14-OSC32_IN.Mode=LSE-External-Oscillator-for-RTC
77+
PC14-OSC32_IN.Signal=RCC_OSC32_IN
78+
PC15-OSC32_OUT.GPIOParameters=GPIO_Label
79+
PC15-OSC32_OUT.GPIO_Label=OSC32_OUT
80+
PC15-OSC32_OUT.Locked=true
81+
PC15-OSC32_OUT.Mode=LSE-External-Oscillator-for-RTC
82+
PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
83+
PCC.Checker=false
84+
PCC.Display=Plot\: All Steps
85+
PCC.Line=STM32U0x3
86+
PCC.MCU=STM32U083RCTx
87+
PCC.PartNumber=STM32U083RCTx
88+
PCC.Series=STM32U0
89+
PCC.Temperature=25
90+
PCC.Vdd=3.0
91+
PF0-OSC_IN.GPIOParameters=GPIO_Label
92+
PF0-OSC_IN.GPIO_Label=OSC_IN
93+
PF0-OSC_IN.Locked=true
94+
PF0-OSC_IN.Signal=RCC_OSC_IN
95+
PF1-OSC_OUT.GPIOParameters=GPIO_Label
96+
PF1-OSC_OUT.GPIO_Label=OSC_OUT
97+
PF1-OSC_OUT.Locked=true
98+
PF1-OSC_OUT.Signal=RCC_OSC_OUT
99+
PinOutPanel.RotationAngle=0
100+
ProjectManager.AskForMigrate=true
101+
ProjectManager.BackupPrevious=false
102+
ProjectManager.CompilerLinker=GCC
103+
ProjectManager.CompilerOptimize=6
104+
ProjectManager.ComputerToolchain=false
105+
ProjectManager.CoupleFile=false
106+
ProjectManager.CustomerFirmwarePackage=
107+
ProjectManager.DefaultFWLocation=true
108+
ProjectManager.DeletePrevious=true
109+
ProjectManager.DeviceId=STM32U083RCTx
110+
ProjectManager.FirmwarePackage=STM32Cube FW_U0 V1.3.0
111+
ProjectManager.FreePins=false
112+
ProjectManager.FreePinsContext=
113+
ProjectManager.HalAssertFull=false
114+
ProjectManager.HeapSize=0x200
115+
ProjectManager.KeepUserCode=true
116+
ProjectManager.LastFirmware=true
117+
ProjectManager.LibraryCopy=2
118+
ProjectManager.MainLocation=Core/Src
119+
ProjectManager.NoMain=false
120+
ProjectManager.PreviousToolchain=
121+
ProjectManager.ProjectBuild=false
122+
ProjectManager.ProjectFileName=cubemx.ioc
123+
ProjectManager.ProjectName=cubemx
124+
ProjectManager.ProjectStructure=
125+
ProjectManager.RegisterCallBack=
126+
ProjectManager.StackSize=0x400
127+
ProjectManager.TargetToolchain=CMake
128+
ProjectManager.ToolChainLocation=
129+
ProjectManager.UAScriptAfterPath=
130+
ProjectManager.UAScriptBeforePath=
131+
ProjectManager.UnderRoot=false
132+
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_USB_PCD_Init-USB-false-HAL-true,0-MX_CORTEX_M0+_Init-CORTEX_M0+-false-HAL-true,0-MX_PWR_Init-PWR-false-HAL-true
133+
RCC.ADCFreq_Value=56000000
134+
RCC.AHBFreq_Value=56000000
135+
RCC.APBFreq_Value=56000000
136+
RCC.APBTimFreq_Value=56000000
137+
RCC.CortexFreq_Value=56000000
138+
RCC.FCLKCortexFreq_Value=56000000
139+
RCC.FamilyName=M
140+
RCC.HCLKFreq_Value=56000000
141+
RCC.HSE_VALUE=4000000
142+
RCC.HSI48_VALUE=48000000
143+
RCC.HSI_VALUE=16000000
144+
RCC.I2C1Freq_Value=56000000
145+
RCC.I2C3Freq_Value=56000000
146+
RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APBFreq_Value,APBTimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM3Freq_Value,LPUART1Freq_Value,LPUART2Freq_Value,LPUART3Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,MCO2PinFreq_Value,MSIClockRangeVal,MSI_VALUE,PLLN,PLLPoutputFreq_Value,PLLQ,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PWRFreq_Value,RNGFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIM15Freq_Value,TIM1Freq_Value,USART1Freq_Value,USART2Freq_Value,USBCLockSelection,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
147+
RCC.LPTIM1Freq_Value=56000000
148+
RCC.LPTIM2Freq_Value=56000000
149+
RCC.LPTIM3Freq_Value=56000000
150+
RCC.LPUART1Freq_Value=56000000
151+
RCC.LPUART2Freq_Value=56000000
152+
RCC.LPUART3Freq_Value=56000000
153+
RCC.LSCOPinFreq_Value=32000
154+
RCC.LSI_VALUE=32000
155+
RCC.MCO1PinFreq_Value=56000000
156+
RCC.MCO2PinFreq_Value=56000000
157+
RCC.MSIClockRangeVal=RCC_MSIRANGE_11
158+
RCC.MSI_VALUE=48000000
159+
RCC.PLLN=7
160+
RCC.PLLPoutputFreq_Value=56000000
161+
RCC.PLLQ=RCC_PLLQ_DIV4
162+
RCC.PLLQoutputFreq_Value=28000000
163+
RCC.PLLRCLKFreq_Value=56000000
164+
RCC.PWRFreq_Value=56000000
165+
RCC.RNGFreq_Value=48000000
166+
RCC.SYSCLKFreq_VALUE=56000000
167+
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
168+
RCC.TIM15Freq_Value=56000000
169+
RCC.TIM1Freq_Value=56000000
170+
RCC.USART1Freq_Value=56000000
171+
RCC.USART2Freq_Value=56000000
172+
RCC.USBCLockSelection=RCC_USBCLKSOURCE_HSI48
173+
RCC.USBFreq_Value=48000000
174+
RCC.VCOInputFreq_Value=16000000
175+
RCC.VCOOutputFreq_Value=112000000
176+
USART2.IPParameters=VirtualMode-Asynchronous
177+
USART2.VirtualMode-Asynchronous=VM_ASYNC
178+
USB.IPParameters=VirtualMode
179+
USB.VirtualMode=Device_Only
180+
VP_PWR_VS_SECSignals.Mode=Security/Privilege
181+
VP_PWR_VS_SECSignals.Signal=PWR_VS_SECSignals
182+
VP_SYS_VS_Systick.Mode=SysTick
183+
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
184+
board=NUCLEO-U083RC
185+
boardIOC=true

hw/bsp/stm32u0/family.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030

3131
#include "stm32u0xx_hal.h"
3232
#include "bsp/board_api.h"
33+
34+
TU_ATTR_UNUSED static void Error_Handler(void) { }
35+
3336
#include "board.h"
3437

3538
//--------------------------------------------------------------------+
@@ -47,7 +50,7 @@ UART_HandleTypeDef UartHandle;
4750
#endif
4851

4952
void board_init(void) {
50-
board_stm32u0_clock_init();
53+
SystemClock_Config();
5154

5255
// Enable All GPIOs clocks
5356
__HAL_RCC_GPIOA_CLK_ENABLE();

hw/bsp/stm32u0/family.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,6 @@ SRC_S_GCC += $(ST_CMSIS)/Source/Templates/gcc/startup_${MCU_VARIANT}.s
4848
SRC_S_IAR += $(ST_CMSIS)/Source/Templates/iar/startup_${MCU_VARIANT}.s
4949

5050
# Linker
51+
MCU_VARIANT_UPPER = $(subst stm32u,STM32U,$(MCU_VARIANT))
52+
LD_FILE ?= $(FAMILY_PATH)/linker/$(MCU_VARIANT_UPPER)_FLASH.ld
5153
LD_FILE_IAR ?= $(ST_CMSIS)/Source/Templates/iar/linker/$(MCU_VARIANT)_flash.icf

hw/bsp/stm32u0/boards/stm32u083cdk/STM32U083MCTx_FLASH.ld renamed to hw/bsp/stm32u0/linker/STM32U083xx_FLASH.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
******************************************************************************
33
* @file LinkerScript.ld
44
* @author Auto-generated by STM32CubeIDE
5-
* @brief Linker script for STM32U083MCTx Device from STM32U0 series
5+
* @brief Linker script for STM32U083xx Device from STM32U0 series
66
* 256KBytes FLASH
77
* 40KBytes RAM
88
*

0 commit comments

Comments
 (0)