Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 272f3fc

Browse files
nedsebfpistm
andcommittedOct 3, 2024·
variant(wb55): add STeaMi board
Signed-off-by: Sébastien NEDJAR <sebastien.nedjar@univ-amu.fr> Co-authored-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 822d249 commit 272f3fc

File tree

6 files changed

+494
-0
lines changed

6 files changed

+494
-0
lines changed
 

‎README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
8888
- [Midatronics boards](#midatronics-boards)
8989
- [SparkFun boards](#sparkfun-boards)
9090
- [ELV Boards](#elv-boards)
91+
- [STeaMi board](#steami-board)
9192

9293
> [!Note]
9394
> - :green_heart: board support is available since the specified release version.
@@ -865,6 +866,11 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
865866
| :----: | :-------: | ---- | :-----: | :---- |
866867
| :green_heart: | STM32WLE5JB | ELV-BM-TRX1 | *2.8.0* | |
867868

869+
### [STeaMi Board](https://www.steami.cc/)
870+
871+
| Status | Device(s) | Name | Release | Notes |
872+
| :----: | :-------: | ---- | :-----: | :---- |
873+
| :yellow_heart: | STM32WB55RGV | [STeaMi](https://www.steami.cc/) | **2.9.0** | |
868874
## Next release
869875

870876
See [milestones](https://github.com/stm32duino/Arduino_Core_STM32/milestones) to have an overview of the next release content.

‎boards.txt

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13630,6 +13630,47 @@ ELV_Modular_System.menu.upload_method.serialMethod.upload.protocol=serial
1363013630
ELV_Modular_System.menu.upload_method.serialMethod.upload.options=-c {serial.port.file}
1363113631
ELV_Modular_System.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
1363213632

13633+
################################################################################
13634+
# STeaMi board
13635+
STeaMi.name=STeaMi Board
13636+
STeaMi.build.core=arduino
13637+
STeaMi.build.variant_h=variant_{build.board}.h
13638+
STeaMi.build.st_extra_flags=-D{build.product_line} {build.xSerial}
13639+
STeaMi.build.flash_offset=0x0
13640+
STeaMi.upload.maximum_size=0
13641+
STeaMi.upload.maximum_data_size=0
13642+
STeaMi.vid.0=0x0d28
13643+
STeaMi.pid.0=0x0204
13644+
13645+
STeaMi.menu.pnum.STEAM32_WB55RG=STeaMi
13646+
STeaMi.menu.pnum.STEAM32_WB55RG.node="STeaMi,DAPLINK"
13647+
STeaMi.menu.pnum.STEAM32_WB55RG.upload.maximum_size=524288
13648+
STeaMi.menu.pnum.STEAM32_WB55RG.upload.maximum_data_size=196608
13649+
STeaMi.menu.pnum.STEAM32_WB55RG.build.mcu=cortex-m4
13650+
STeaMi.menu.pnum.STEAM32_WB55RG.build.fpu=-mfpu=fpv4-sp-d16
13651+
STeaMi.menu.pnum.STEAM32_WB55RG.build.float-abi=-mfloat-abi=hard
13652+
STeaMi.menu.pnum.STEAM32_WB55RG.build.board=STEAM32_WB55RG
13653+
STeaMi.menu.pnum.STEAM32_WB55RG.build.series=STM32WBxx
13654+
STeaMi.menu.pnum.STEAM32_WB55RG.build.product_line=STM32WB55xx
13655+
STeaMi.menu.pnum.STEAM32_WB55RG.build.variant=STM32WBxx/WB55R(C-E-G)V
13656+
STeaMi.menu.pnum.STEAM32_WB55RG.debug.server.openocd.scripts.0=interface/cmsis-dap.cfg
13657+
STeaMi.menu.pnum.STEAM32_WB55RG.debug.server.openocd.scripts.1={runtime.platform.path}/debugger/select_swd.cfg
13658+
STeaMi.menu.pnum.STEAM32_WB55RG.openocd.target=stm32wbx
13659+
STeaMi.menu.pnum.STEAM32_WB55RG.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WBxx/STM32WB55_CM4.svd
13660+
13661+
# Upload menu
13662+
STeaMi.menu.upload_method.MassStorage=Mass Storage
13663+
STeaMi.menu.upload_method.MassStorage.upload.protocol=
13664+
STeaMi.menu.upload_method.MassStorage.upload.tool=massStorageCopy
13665+
13666+
STeaMi.menu.upload_method.OpenOCDDapLink=OpenOCD DapLink (SWD)
13667+
STeaMi.menu.upload_method.OpenOCDDapLink.upload.protocol=cmsis-dap
13668+
STeaMi.menu.upload_method.OpenOCDDapLink.upload.tool=openocd_upload
13669+
13670+
STeaMi.menu.upload_method.OpenOCDSTLink=OpenOCD STLink (SWD)
13671+
STeaMi.menu.upload_method.OpenOCDSTLink.upload.protocol=stlink
13672+
STeaMi.menu.upload_method.OpenOCDSTLink.upload.tool=openocd_upload
13673+
1363313674
################################################################################
1363413675
# Serialx activation
1363513676
Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial')
@@ -13862,6 +13903,12 @@ ELV_Modular_System.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DH
1386213903
ELV_Modular_System.menu.xserial.disabled=Disabled (no Serial support)
1386313904
ELV_Modular_System.menu.xserial.disabled.build.xSerial=
1386413905

13906+
STeaMi.menu.xserial.generic=Enabled (generic 'Serial')
13907+
STeaMi.menu.xserial.none=Enabled (no generic 'Serial')
13908+
STeaMi.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
13909+
STeaMi.menu.xserial.disabled=Disabled (no Serial support)
13910+
STeaMi.menu.xserial.disabled.build.xSerial=
13911+
1386513912
# USB connectivity
1386613913
Nucleo_144.menu.usb.none=None
1386713914
Nucleo_144.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
@@ -14961,6 +15008,26 @@ ELV_Modular_System.menu.opt.ogstd.build.flags.optimize=-Og
1496115008
ELV_Modular_System.menu.opt.o0std=No Optimization (-O0)
1496215009
ELV_Modular_System.menu.opt.o0std.build.flags.optimize=-O0
1496315010

15011+
STeaMi.menu.opt.osstd=Smallest (-Os default)
15012+
STeaMi.menu.opt.oslto=Smallest (-Os) with LTO
15013+
STeaMi.menu.opt.oslto.build.flags.optimize=-Os -flto
15014+
STeaMi.menu.opt.o1std=Fast (-O1)
15015+
STeaMi.menu.opt.o1std.build.flags.optimize=-O1
15016+
STeaMi.menu.opt.o1lto=Fast (-O1) with LTO
15017+
STeaMi.menu.opt.o1lto.build.flags.optimize=-O1 -flto
15018+
STeaMi.menu.opt.o2std=Faster (-O2)
15019+
STeaMi.menu.opt.o2std.build.flags.optimize=-O2
15020+
STeaMi.menu.opt.o2lto=Faster (-O2) with LTO
15021+
STeaMi.menu.opt.o2lto.build.flags.optimize=-O2 -flto
15022+
STeaMi.menu.opt.o3std=Fastest (-O3)
15023+
STeaMi.menu.opt.o3std.build.flags.optimize=-O3
15024+
STeaMi.menu.opt.o3lto=Fastest (-O3) with LTO
15025+
STeaMi.menu.opt.o3lto.build.flags.optimize=-O3 -flto
15026+
STeaMi.menu.opt.ogstd=Debug (-Og)
15027+
STeaMi.menu.opt.ogstd.build.flags.optimize=-Og
15028+
STeaMi.menu.opt.o0std=No Optimization (-O0)
15029+
STeaMi.menu.opt.o0std.build.flags.optimize=-O0
15030+
1496415031
# Debug information
1496515032
Nucleo_144.menu.dbg.none=None
1496615033
Nucleo_144.menu.dbg.enable_sym=Symbols Enabled (-g)
@@ -15254,6 +15321,14 @@ ELV_Modular_System.menu.dbg.enable_log.build.flags.debug=
1525415321
ELV_Modular_System.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
1525515322
ELV_Modular_System.menu.dbg.enable_all.build.flags.debug=-g
1525615323

15324+
STeaMi.menu.dbg.none=None
15325+
STeaMi.menu.dbg.enable_sym=Symbols Enabled (-g)
15326+
STeaMi.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
15327+
STeaMi.menu.dbg.enable_log=Core logs Enabled
15328+
STeaMi.menu.dbg.enable_log.build.flags.debug=
15329+
STeaMi.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
15330+
STeaMi.menu.dbg.enable_all.build.flags.debug=-g
15331+
1525715332
# C Runtime Library
1525815333
Nucleo_144.menu.rtlib.nano=Newlib Nano (default)
1525915334
Nucleo_144.menu.rtlib.nanofp=Newlib Nano + Float Printf
@@ -15624,3 +15699,13 @@ ELV_Modular_System.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
1562415699
ELV_Modular_System.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
1562515700
ELV_Modular_System.menu.rtlib.full=Newlib Standard
1562615701
ELV_Modular_System.menu.rtlib.full.build.flags.ldspecs=
15702+
15703+
STeaMi.menu.rtlib.nano=Newlib Nano (default)
15704+
STeaMi.menu.rtlib.nanofp=Newlib Nano + Float Printf
15705+
STeaMi.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
15706+
STeaMi.menu.rtlib.nanofs=Newlib Nano + Float Scanf
15707+
STeaMi.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
15708+
STeaMi.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
15709+
STeaMi.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
15710+
STeaMi.menu.rtlib.full=Newlib Standard
15711+
STeaMi.menu.rtlib.full.build.flags.ldspecs=

‎cmake/scripts/cmake_easy_setup.py

100644100755
File mode changed.

‎debugger/select_swd.cfg

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
transport select swd
2+
3+
set ENABLE_LOW_POWER 1
4+
set STOP_WATCHDOG 1
5+
set CLOCK_FREQ 4000
6+
7+
reset_config none separate
8+
9+
set CONNECT_UNDER_RESET 1
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2021, STMicroelectronics
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by ST under BSD 3-Clause license,
7+
* the "License"; You may not use this file except in compliance with the
8+
* License. You may obtain a copy of the License at:
9+
* opensource.org/licenses/BSD-3-Clause
10+
*
11+
*******************************************************************************
12+
*/
13+
#include "variant_STEAM32_WB55RG.h"
14+
15+
#if defined(ARDUINO_STEAM32_WB55RG)
16+
#include "lock_resource.h"
17+
#include "pins_arduino.h"
18+
19+
// Pin number
20+
const PinName digitalPin[] = {
21+
PC_4, // P0/D0/A1
22+
PA_5, // P1/D1/A3
23+
PC_5, // P2/D2/A5
24+
PA_2, // P3/D3/A0
25+
PA_4, // P4/D4/A2
26+
PA_7, // P5/D5
27+
PC_3, // P6/D6
28+
PA_9, // P7/D7
29+
PA_15, // P8/D8
30+
PC_2, // P9/D9
31+
PA_6, // P10/D10/A4
32+
PA_8, // P11/D11
33+
PC_6, // P12/D12
34+
PB_13, // P13/D13
35+
PB_14, // P14/D14
36+
PB_15, // P15/D15
37+
PE_4, // P16/D16
38+
PC_0, // P19/D17
39+
PC_1, // P20/D18
40+
PB_2, // D19
41+
PD_0, // D20
42+
PB_8, // D21
43+
PB_9, // D22
44+
PC_13, // D23
45+
PB_12, // D24
46+
PB_0, // D25
47+
PD_1, // D26
48+
PB_6, // D27
49+
PB_7, // D28
50+
PC_10, // D29
51+
PH_3, // D30
52+
PC_11, // D31
53+
PC_12, // D32
54+
PA_0, // D33
55+
PA_3, // D34
56+
PA_10, // D35
57+
PA_12, // D36
58+
PB_1, // D37
59+
PB_10, // D38
60+
PB_11, // D39
61+
PA_11, // D40
62+
PB_4, // D41
63+
PB_5, // D42
64+
PA_1, // D43
65+
};
66+
67+
// Analog (Ax) pin number array
68+
const uint32_t analogInputPin[] = {
69+
3, // A0
70+
0, // A1
71+
4, // A2
72+
1, // A3
73+
10, // A4
74+
2 // A5
75+
};
76+
77+
// ----------------------------------------------------------------------------
78+
#ifdef __cplusplus
79+
extern "C" {
80+
#endif
81+
82+
/**
83+
* @brief System Clock Configuration
84+
* @param None
85+
* @retval None
86+
*/
87+
WEAK void SystemClock_Config(void)
88+
{
89+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
90+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
91+
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {};
92+
93+
/* This prevents concurrent access to RCC registers by CPU2 (M0+) */
94+
hsem_lock(CFG_HW_RCC_SEMID, HSEM_LOCK_DEFAULT_RETRY);
95+
96+
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
97+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
98+
99+
/* This prevents the CPU2 (M0+) to disable the HSI48 oscillator */
100+
hsem_lock(CFG_HW_CLK48_CONFIG_SEMID, HSEM_LOCK_DEFAULT_RETRY);
101+
102+
/* Initializes the CPU, AHB and APB busses clocks */
103+
RCC_OscInitStruct.OscillatorType =
104+
RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_LSE;
105+
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
106+
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
107+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
108+
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
109+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
110+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
111+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
112+
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV2;
113+
RCC_OscInitStruct.PLL.PLLN = 16;
114+
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
115+
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
116+
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
117+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
118+
Error_Handler();
119+
}
120+
121+
/* Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers */
122+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK4 | RCC_CLOCKTYPE_HCLK2 | RCC_CLOCKTYPE_HCLK |
123+
RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
124+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
125+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
126+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
127+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
128+
RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
129+
RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
130+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
131+
Error_Handler();
132+
}
133+
134+
/* Initializes the peripherals clocks */
135+
/* RNG needs to be configured like in M0 core, i.e. with HSI48 */
136+
PeriphClkInitStruct.PeriphClockSelection =
137+
RCC_PERIPHCLK_SMPS | RCC_PERIPHCLK_RFWAKEUP | RCC_PERIPHCLK_RNG | RCC_PERIPHCLK_USB;
138+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
139+
PeriphClkInitStruct.RngClockSelection = RCC_RNGCLKSOURCE_HSI48;
140+
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSE;
141+
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
142+
PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE1;
143+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
144+
Error_Handler();
145+
}
146+
147+
LL_PWR_SMPS_SetStartupCurrent(LL_PWR_SMPS_STARTUP_CURRENT_80MA);
148+
LL_PWR_SMPS_SetOutputVoltageLevel(LL_PWR_SMPS_OUTPUT_VOLTAGE_1V40);
149+
LL_PWR_SMPS_Enable();
150+
151+
/* Select HSI as system clock source after Wake Up from Stop mode */
152+
LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
153+
154+
hsem_unlock(CFG_HW_RCC_SEMID);
155+
}
156+
157+
#ifdef __cplusplus
158+
}
159+
#endif
160+
#endif /* ARDUINO_STEAM32_WB55RG */
Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2021, STMicroelectronics
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by ST under BSD 3-Clause license,
7+
* the "License"; You may not use this file except in compliance with the
8+
* License. You may obtain a copy of the License at:
9+
* opensource.org/licenses/BSD-3-Clause
10+
*
11+
*******************************************************************************
12+
*/
13+
#pragma once
14+
15+
/*----------------------------------------------------------------------------
16+
* STM32 pins number
17+
*----------------------------------------------------------------------------*/
18+
19+
// micro:bit Edge connector
20+
#define PC4 PIN_A1
21+
#define PA5 PIN_A3
22+
#define PC5 PIN_A5
23+
#define PA2 PIN_A0
24+
#define PA4 PIN_A2
25+
#define PA7 5
26+
#define PC3 6
27+
#define PA9 7
28+
#define PA15 8
29+
#define PC2 9
30+
#define PA6 PIN_A4
31+
#define PA8 11
32+
#define PC6 12
33+
#define PB13 13
34+
#define PB14 14
35+
#define PB15 15
36+
#define PE4 16
37+
#define PC0 17
38+
#define PC1 18
39+
40+
// Not on connectors
41+
#define PB2 19
42+
#define PD0 20
43+
#define PB8 21
44+
#define PB9 22
45+
#define PC13 23
46+
#define PB12 24
47+
#define PB0 25
48+
#define PD1 26
49+
#define PB6 27
50+
#define PB7 28
51+
#define PC10 29
52+
#define PH3 30
53+
#define PC11 31
54+
#define PC12 32
55+
#define PA0 33
56+
#define PA3 34
57+
#define PA10 35
58+
#define PA12 36
59+
#define PB1 37
60+
#define PB10 38
61+
#define PB11 39
62+
#define PA11 40
63+
#define PB4 41
64+
#define PB5 42
65+
#define PA1 43
66+
67+
#define NUM_DIGITAL_PINS 44
68+
#define NUM_ANALOG_INPUTS 6
69+
70+
// GPIO expander
71+
// Not used by Arduino only here for documentation purpose
72+
// Upper pad
73+
#define GPIO1 44 // P28
74+
#define GPIO2 45 // P29
75+
#define GPIO3 46 // P24
76+
#define GPIO4 47 // P25
77+
78+
// 4 directions switches
79+
#define GPIO5 48
80+
#define GPIO6 49
81+
#define GPIO7 50
82+
#define GPIO8 51
83+
84+
// STeaMi's PinName
85+
#define ACTIVATE_3V3_STLINK PB2
86+
#define CS_DISPLAY PD0
87+
#define I2C_EXT_SCL PC0
88+
#define I2C_EXT_SDA PC1
89+
#define I2C_INT_SCL PB8
90+
#define I2C_INT_SDA PB9
91+
#define INT_ACC PC13
92+
#define INT_DIST PB12
93+
#define INT_EXPANDER PB0
94+
#define INT_MAG PD1
95+
#define JACDAC_DATA_TX PB6
96+
#define JACDAC_DATA_RX PB7
97+
#define MENU_BUTTON PA0
98+
#define MIC_CLK PA3
99+
#define MIC_IN PA10
100+
101+
#define P0 PC4
102+
#define P1 PA5
103+
#define P2 PC5
104+
#define P3 PA2
105+
#define P4 PA4
106+
#define P5 PA7
107+
#define P6 PC3
108+
#define P7 PA9
109+
#define P8 PA15
110+
#define P9 PC2
111+
#define P10 PA6
112+
#define P11 PA8
113+
#define P12 PC6
114+
#define P13 PB13
115+
#define P14 PB14
116+
#define P15 PB15
117+
#define P16 PE4
118+
#define P19 PC1
119+
#define P20 PC0
120+
#define P24 GPIO3
121+
#define P25 GPIO4
122+
#define P28 GPIO1
123+
#define P29 GPIO2
124+
125+
#define RST_DISPLAY PA12
126+
#define RST_EXPANDER PB1
127+
128+
#define SERIAL_RX PB10
129+
#define SERIAL_TX PB11
130+
131+
#define SPEAKER PA11
132+
133+
#define SPI_EXT_MISO PB14
134+
#define SPI_EXT_MOSI PB15
135+
#define SPI_EXT_SCK PB13
136+
137+
#define SPI_INT_MISO PB4
138+
#define SPI_INT_MOSI PB5
139+
#define SPI_INT_SCK PA1
140+
141+
// On-board LED pin number
142+
#define LED1 PC10
143+
#define LED2 PC11
144+
#define LED3 PC12
145+
#define LED4 PH3
146+
147+
#ifndef LED_BUILTIN
148+
#define LED_BUILTIN LED1
149+
#endif
150+
151+
#define LED_BLUE LED1
152+
#define LED_GREEN LED2
153+
#define LED_RED LED3
154+
155+
#define LED_BLE LED4
156+
157+
// On-board user button
158+
#define A_BUTTON PA7
159+
#define B_BUTTON PA8
160+
#define DOWN_BUTTON GPIO6
161+
#define LEFT_BUTTON GPIO7
162+
#define MENU_BUTTON PA0
163+
#define RIGHT_BUTTON GPIO5
164+
#define UP_BUTTON GPIO8
165+
166+
#ifndef USER_BTN
167+
#define USER_BTN MENU_BUTTON
168+
#endif
169+
170+
// SPI Definitions
171+
#define PIN_SPI_SS P16
172+
#define PIN_SPI_MOSI SPI_EXT_MOSI
173+
#define PIN_SPI_MISO SPI_EXT_MISO
174+
#define PIN_SPI_SCK SPI_EXT_SCK
175+
176+
// I2C Definitions
177+
#define PIN_WIRE_SDA I2C_EXT_SDA
178+
#define PIN_WIRE_SCL I2C_EXT_SCL
179+
180+
// Timer Definitions
181+
// Use TIM6/TIM7 when possible as servo and tone don't need GPIO output pin
182+
#ifndef TIMER_TONE
183+
#define TIMER_TONE TIM16
184+
#endif
185+
#ifndef TIMER_SERVO
186+
#define TIMER_SERVO TIM17
187+
#endif
188+
189+
// UART Definitions
190+
#ifndef SERIAL_UART_INSTANCE
191+
#define SERIAL_UART_INSTANCE 101 // Connected to ST-Link
192+
#endif
193+
194+
// Default pin used for 'Serial' instance (ex: ST-Link)
195+
// Mandatory for Firmata
196+
#ifndef PIN_SERIAL_RX
197+
#define PIN_SERIAL_RX SERIAL_RX
198+
#endif
199+
#ifndef PIN_SERIAL_TX
200+
#define PIN_SERIAL_TX SERIAL_TX
201+
#endif
202+
203+
// Only 512k provided for cpu1, so defined the FLASH_PAGE_NUMBER
204+
// for EEPROM emulation to the last 512k pages.
205+
#define FLASH_PAGE_NUMBER 127
206+
207+
// Extra HAL modules
208+
#if !defined(HAL_QSPI_MODULE_DISABLED)
209+
#define HAL_QSPI_MODULE_ENABLED
210+
#endif
211+
212+
/*----------------------------------------------------------------------------
213+
* Arduino objects - C++ only
214+
*----------------------------------------------------------------------------*/
215+
216+
#ifdef __cplusplus
217+
// These serial port names are intended to allow libraries and architecture-neutral
218+
// sketches to automatically default to the correct port name for a particular type
219+
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
220+
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
221+
//
222+
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
223+
//
224+
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
225+
//
226+
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
227+
//
228+
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
229+
//
230+
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
231+
// pins are NOT connected to anything by default.
232+
#define SERIAL_PORT_MONITOR Serial
233+
#define SERIAL_PORT_HARDWARE Serial1
234+
#endif

0 commit comments

Comments
 (0)
Please sign in to comment.