Skip to content

Commit 18ed56a

Browse files
Merge pull request #2 from fabry1992/main
Added Support for ELV-BM-TRX1
2 parents f31d070 + 4e3428e commit 18ed56a

File tree

4 files changed

+521
-36
lines changed

4 files changed

+521
-36
lines changed

README.md

Lines changed: 48 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -49,41 +49,48 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
4949

5050
## Supported boards
5151

52-
- [Nucleo 144 boards](#nucleo-144-boards)
53-
- [Nucleo 64 boards](#nucleo-64-boards)
54-
- [Nucleo 32 boards](#nucleo-32-boards)
55-
- [Discovery boards](#discovery-boards)
56-
- [Eval boards](#eval-boards)
57-
- [STM32MP1 series coprocessor boards](#stm32mp1-series-coprocessor-boards)
58-
- [Generic STM32C0 boards](#generic-stm32c0-boards)
59-
- [Generic STM32F0 boards](#generic-stm32f0-boards)
60-
- [Generic STM32F1 boards](#generic-stm32f1-boards)
61-
- [Generic STM32F2 boards](#generic-stm32f2-boards)
62-
- [Generic STM32F3 boards](#generic-stm32f3-boards)
63-
- [Generic STM32F4 boards](#generic-stm32f4-boards)
64-
- [Generic STM32F7 boards](#generic-stm32f7-boards)
65-
- [Generic STM32G0 boards](#generic-stm32g0-boards)
66-
- [Generic STM32G4 boards](#generic-stm32g4-boards)
67-
- [Generic STM32H5 boards](#generic-stm32h5-boards)
68-
- [Generic STM32H7 boards](#generic-stm32h7-boards)
69-
- [Generic STM32L0 boards](#generic-stm32l0-boards)
70-
- [Generic STM32L1 boards](#generic-stm32l1-boards)
71-
- [Generic STM32L4 boards](#generic-stm32l4-boards)
72-
- [Generic STM32L5 boards](#generic-stm32l5-boards)
73-
- [Generic STM32U5 boards](#generic-stm32u5-boards)
74-
- [Generic STM32WB boards](#generic-stm32wb-boards)
75-
- [Generic STM32WBA boards](#generic-stm32wba-boards)
76-
- [Generic STM32WL boards](#generic-stm32wl-boards)
77-
- [3D printer boards](#3d-printer-boards)
78-
- [Blues Wireless boards](#blues-wireless-boards)
79-
- [Elecgator boards](#elecgator-boards)
80-
- [Electronic Speed Controller boards](#electronic-speed-controller-boards)
81-
- [Garatronic/McHobby boards](#garatronicmchobby-boards)
82-
- [Generic flight controllers](#generic-flight-controllers)
83-
- [IoT continuum boards](#iot-continuum-boards)
84-
- [LoRa boards](#lora-boards)
85-
- [Midatronics boards](#midatronics-boards)
86-
- [SparkFun boards](#sparkfun-boards)
52+
- [Arduino core support for STM32 based boards](#arduino-core-support-for-stm32-based-boards)
53+
- [Introduction](#introduction)
54+
- [Getting Started](#getting-started)
55+
- [Supported boards](#supported-boards)
56+
- [Nucleo 144 boards](#nucleo-144-boards)
57+
- [Nucleo 64 boards](#nucleo-64-boards)
58+
- [Nucleo 32 boards](#nucleo-32-boards)
59+
- [Discovery boards](#discovery-boards)
60+
- [Eval boards](#eval-boards)
61+
- [STM32MP1 series coprocessor boards](#stm32mp1-series-coprocessor-boards)
62+
- [Generic STM32C0 boards](#generic-stm32c0-boards)
63+
- [Generic STM32F0 boards](#generic-stm32f0-boards)
64+
- [Generic STM32F1 boards](#generic-stm32f1-boards)
65+
- [Generic STM32F2 boards](#generic-stm32f2-boards)
66+
- [Generic STM32F3 boards](#generic-stm32f3-boards)
67+
- [Generic STM32F4 boards](#generic-stm32f4-boards)
68+
- [Generic STM32F7 boards](#generic-stm32f7-boards)
69+
- [Generic STM32G0 boards](#generic-stm32g0-boards)
70+
- [Generic STM32G4 boards](#generic-stm32g4-boards)
71+
- [Generic STM32H5 boards](#generic-stm32h5-boards)
72+
- [Generic STM32H7 boards](#generic-stm32h7-boards)
73+
- [Generic STM32L0 boards](#generic-stm32l0-boards)
74+
- [Generic STM32L1 boards](#generic-stm32l1-boards)
75+
- [Generic STM32L4 boards](#generic-stm32l4-boards)
76+
- [Generic STM32L5 boards](#generic-stm32l5-boards)
77+
- [Generic STM32U5 boards](#generic-stm32u5-boards)
78+
- [Generic STM32WB boards](#generic-stm32wb-boards)
79+
- [Generic STM32WBA boards](#generic-stm32wba-boards)
80+
- [Generic STM32WL boards](#generic-stm32wl-boards)
81+
- [3D printer boards](#3d-printer-boards)
82+
- [Blues Wireless boards](#blues-wireless-boards)
83+
- [Elecgator boards](#elecgator-boards)
84+
- [Electronic Speed Controller boards](#electronic-speed-controller-boards)
85+
- [Garatronic/McHobby boards](#garatronicmchobby-boards)
86+
- [Generic flight controllers](#generic-flight-controllers)
87+
- [IoT continuum boards](#iot-continuum-boards)
88+
- [LoRa boards](#lora-boards)
89+
- [Midatronics boards](#midatronics-boards)
90+
- [SparkFun boards](#sparkfun-boards)
91+
- [ELV Boards](#elv-boards)
92+
- [Next release](#next-release)
93+
- [Troubleshooting](#troubleshooting)
8794

8895
**Note about Status**:
8996
- :green_heart: board support is available since the specified release version.
@@ -97,7 +104,6 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
97104
| :green_heart: | STM32F412ZG | [Nucleo F412ZG](http://www.st.com/en/evaluation-tools/nucleo-f412zg.html) | *2.6.0* | |
98105
| :green_heart: | STM32F413ZH | [Nucleo F413ZH](http://www.st.com/en/evaluation-tools/nucleo-f413zh.html) | *2.4.0* | |
99106
| :green_heart: | STM32F429ZI | [Nucleo F429ZI](http://www.st.com/en/evaluation-tools/nucleo-f429zi.html) | *0.1.0* | |
100-
| :yellow_heart: | STM32F439ZI | [Nucleo F439ZI](http://www.st.com/en/evaluation-tools/nucleo-f439zi.html) | **2.8.0** | |
101107
| :green_heart: | STM32F446ZE | [Nucleo F446ZE](http://www.st.com/en/evaluation-tools/nucleo-f446ze.html) | *2.7.0* | |
102108
| :green_heart: | STM32F722ZE | [Nucleo F722ZE](http://www.st.com/en/evaluation-tools/nucleo-f722ze.html) | *2.4.0* | |
103109
| :green_heart: | STM32F767ZI | [Nucleo F767ZI](http://www.st.com/en/evaluation-tools/nucleo-f767zi.html) | *1.4.0* | |
@@ -831,6 +837,12 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
831837
| :green_heart: | STM32F405RG | [SparkFun MicroMod Processor Board - STM32F405](https://www.sparkfun.com/products/21326) | *2.6.0* | |
832838
| :green_heart: | STM32WB5MMG | [SparkFun MicroMod Processor Board - STM32WB5MMG](https://www.sparkfun.com/products/21438) | *2.6.0* | |
833839

840+
### [ELV Boards](https://de.elv.com/lorawan)
841+
842+
| Status | Device(s) | Name | Release | Notes |
843+
| :----: | :-------: | ---- | :-----: | :---- |
844+
| :green_heart: | STM32WLE5JB | ELV-BM-TRX1 | *2.7.1* | |
845+
834846
## Next release
835847

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

boards.txt

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11217,6 +11217,43 @@ Midatronics.menu.upload_method.dfuMethod.upload.protocol=2
1121711217
Midatronics.menu.upload_method.dfuMethod.upload.options=
1121811218
Midatronics.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
1121911219

11220+
11221+
################################################################################
11222+
# ELV Modular System boards
11223+
11224+
ELV_Modular_System.name=ELV Modular System boards
11225+
ELV_Modular_System.build.core=arduino
11226+
ELV_Modular_System.build.board=ELV_Modular_System
11227+
ELV_Modular_System.build.variant_h=variant_{build.board}.h
11228+
ELV_Modular_System.upload.maximum_size=0
11229+
ELV_Modular_System.upload.maximum_data_size=0
11230+
11231+
# ELV-BM-TRX1 board
11232+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1=ELV-LW-Base ELV_BM_TRX1
11233+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.upload.maximum_size=124927
11234+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.upload.maximum_data_size=16383
11235+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.mcu=cortex-m4
11236+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.board=ELV_BM_TRX1
11237+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.series=STM32WLxx
11238+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.product_line=STM32WLE5xx
11239+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.variant=STM32WLxx/WL54JCI_WL55JCI_WLE4J(8-B-C)I_WLE5J(8-B-C)I
11240+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.variant_h=variant_ELV_BM_TRX1.h
11241+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.flash_offset=0x800
11242+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.cmsis_lib_gcc=arm_cortexM4l_math
11243+
ELV_Modular_System.menu.pnum.ELV_BM_TRX1.build.st_extra_flags=-D{build.product_line} -DUSE_CM4_STARTUP_FILE {build.xSerial}
11244+
11245+
# Upload menu
11246+
ELV_Modular_System.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD) with Bootloader
11247+
ELV_Modular_System.menu.upload_method.swdMethod.upload.protocol=0
11248+
ELV_Modular_System.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
11249+
11250+
11251+
ELV_Modular_System.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial) with Bootloader
11252+
ELV_Modular_System.menu.upload_method.serialMethod.upload.protocol=1
11253+
ELV_Modular_System.menu.upload_method.serialMethod.upload.options={serial.port.file}
11254+
ELV_Modular_System.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
11255+
11256+
1122011257
################################################################################
1122111258
# SparkFun Boards
1122211259

@@ -12527,6 +12564,26 @@ Midatronics.menu.opt.ogstd.build.flags.optimize=-Og
1252712564
Midatronics.menu.opt.o0std=No Optimization (-O0)
1252812565
Midatronics.menu.opt.o0std.build.flags.optimize=-O0
1252912566

12567+
ELV_Modular_System.menu.opt.osstd=Smallest (-Os default)
12568+
ELV_Modular_System.menu.opt.oslto=Smallest (-Os) with LTO
12569+
ELV_Modular_System.menu.opt.oslto.build.flags.optimize=-Os -flto
12570+
ELV_Modular_System.menu.opt.o1std=Fast (-O1)
12571+
ELV_Modular_System.menu.opt.o1std.build.flags.optimize=-O1
12572+
ELV_Modular_System.menu.opt.o1lto=Fast (-O1) with LTO
12573+
ELV_Modular_System.menu.opt.o1lto.build.flags.optimize=-O1 -flto
12574+
ELV_Modular_System.menu.opt.o2std=Faster (-O2)
12575+
ELV_Modular_System.menu.opt.o2std.build.flags.optimize=-O2
12576+
ELV_Modular_System.menu.opt.o2lto=Faster (-O2) with LTO
12577+
ELV_Modular_System.menu.opt.o2lto.build.flags.optimize=-O2 -flto
12578+
ELV_Modular_System.menu.opt.o3std=Fastest (-O3)
12579+
ELV_Modular_System.menu.opt.o3std.build.flags.optimize=-O3
12580+
ELV_Modular_System.menu.opt.o3lto=Fastest (-O3) with LTO
12581+
ELV_Modular_System.menu.opt.o3lto.build.flags.optimize=-O3 -flto
12582+
ELV_Modular_System.menu.opt.ogstd=Debug (-Og)
12583+
ELV_Modular_System.menu.opt.ogstd.build.flags.optimize=-Og
12584+
ELV_Modular_System.menu.opt.o0std=No Optimization (-O0)
12585+
ELV_Modular_System.menu.opt.o0std.build.flags.optimize=-O0
12586+
1253012587
SparkFun.menu.opt.osstd=Smallest (-Os default)
1253112588
SparkFun.menu.opt.oslto=Smallest (-Os) with LTO
1253212589
SparkFun.menu.opt.oslto.build.flags.optimize=-Os -flto
@@ -13166,3 +13223,13 @@ SparkFun.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
1316613223
SparkFun.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
1316713224
SparkFun.menu.rtlib.full=Newlib Standard
1316813225
SparkFun.menu.rtlib.full.build.flags.ldspecs=
13226+
13227+
ELV_Modular_System.menu.rtlib.nano=Newlib Nano (default)
13228+
ELV_Modular_System.menu.rtlib.nanofp=Newlib Nano + Float Printf
13229+
ELV_Modular_System.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
13230+
ELV_Modular_System.menu.rtlib.nanofs=Newlib Nano + Float Scanf
13231+
ELV_Modular_System.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
13232+
ELV_Modular_System.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
13233+
ELV_Modular_System.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
13234+
ELV_Modular_System.menu.rtlib.full=Newlib Standard
13235+
ELV_Modular_System.menu.rtlib.full.build.flags.ldspecs=
Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
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+
#if defined(ARDUINO_ELV_BM_TRX1)
14+
#include "pins_arduino.h"
15+
// Digital PinName array
16+
const PinName digitalPin[] = {
17+
PA_0, // D0
18+
PA_1, // D1
19+
PA_2, // D2
20+
PA_3, // D3
21+
PA_4, // D4
22+
PA_5, // D5
23+
PA_6, // D6
24+
PA_7, // D7
25+
PA_8, // D8
26+
PA_9, // D9
27+
PA_10, // D10/A0
28+
PA_11, // D11/A1
29+
PA_12, // D12/A2
30+
PA_13, // D13/A3
31+
PA_14, // D14/A4
32+
PA_15, // D15/A5
33+
PB_0, // D16
34+
PB_1, // D17/A6
35+
PB_2, // D18/A7
36+
PB_3, // D19/A8
37+
PB_4, // D20/A9
38+
PB_5, // D21
39+
PB_6, // D22
40+
PB_7, // D23
41+
PB_8, // D24
42+
PB_9, // D25
43+
PB_10, // D26
44+
PB_11, // D27
45+
PB_12, // D28
46+
PB_13, // D29/A10
47+
PB_14, // D30/A11
48+
PB_15, // D31
49+
PC_0, // D32
50+
PC_1, // D33
51+
PC_2, // D34
52+
PC_3, // D35
53+
PC_4, // D36
54+
PC_5, // D37
55+
PC_6, // D38
56+
PC_13, // D39
57+
PC_14, // D40
58+
PC_15, // D41
59+
PH_3 // D42
60+
};
61+
62+
// Analog (Ax) pin number array
63+
const uint32_t analogInputPin[] = {
64+
10, // A0, PA10
65+
11, // A1, PA11
66+
12, // A2, PA12
67+
13, // A3, PA13
68+
14, // A4, PA14
69+
15, // A5, PA15
70+
17, // A6, PB1
71+
18, // A7, PB2
72+
19, // A8, PB3
73+
20, // A9, PB4
74+
29, // A10, PB13
75+
30 // A11, PB14
76+
};
77+
78+
// ----------------------------------------------------------------------------
79+
#ifdef __cplusplus
80+
extern "C" {
81+
#endif
82+
83+
84+
// /**
85+
// * Initialize the variant. Note that this runs After
86+
// * the lib initializers - if they use an interrupt, they'll fail.
87+
// * Consider moving this to a call before the premains.
88+
// */
89+
// void initVariant()
90+
// {
91+
// SCB->VTOR = 0x08000000;
92+
// }
93+
94+
// /**
95+
// * @brief System Clock Configuration
96+
// * @param None
97+
// * @retval None
98+
// */
99+
// WEAK void SystemClock_Config(void)
100+
// {
101+
// HAL_StatusTypeDef hal_state = HAL_OK;
102+
// RCC_OscInitTypeDef RCC_OscInitStruct = {0};
103+
// RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
104+
// pinMode(PB3, OUTPUT);
105+
// pinMode(PA15, OUTPUT);
106+
// /** Configure LSE Drive Capability */
107+
// // HAL_PWR_EnableBkUpAccess();
108+
// __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
109+
// /** Configure the main internal regulator output voltage
110+
// */
111+
// digitalWrite(PB3, 1);
112+
// digitalWrite(PA15, 0);
113+
// __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
114+
// /** Initializes the CPU, AHB and APB busses clocks
115+
// */
116+
// /** Initializes the CPU, AHB and APB busses clocks */
117+
// RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
118+
// RCC_OscInitStruct.HSEState = RCC_HSE_ON;
119+
// RCC_OscInitStruct.LSEState = RCC_LSE_ON;
120+
// RCC_OscInitStruct.HSEDiv = RCC_HSE_DIV1;
121+
// RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
122+
// RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
123+
// RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV4;
124+
// RCC_OscInitStruct.PLL.PLLN = 12;
125+
// RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
126+
// RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
127+
// RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
128+
129+
// // do
130+
// // {
131+
// hal_state = HAL_RCC_OscConfig( &RCC_OscInitStruct );
132+
// // }
133+
// // while( hal_state == HAL_TIMEOUT );
134+
// if( hal_state != HAL_OK )
135+
// {
136+
// Error_Handler();
137+
// }
138+
139+
// /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers
140+
// */
141+
// RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3 | RCC_CLOCKTYPE_HCLK
142+
// | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1
143+
// | RCC_CLOCKTYPE_PCLK2;
144+
// RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
145+
// RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
146+
// RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
147+
// RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
148+
// RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV1;
149+
// digitalWrite(PB3, 0);
150+
// digitalWrite(PA15, 1);
151+
// // do
152+
// // {
153+
// hal_state = HAL_RCC_ClockConfig( &RCC_ClkInitStruct, FLASH_LATENCY_2 );
154+
// // }
155+
// // while( hal_state == HAL_TIMEOUT );
156+
// // if( hal_state != HAL_OK )
157+
// // {
158+
// // Error_Handler();
159+
// // }
160+
// digitalWrite(PB3, 1);
161+
// digitalWrite(PA15, 1);
162+
// }
163+
164+
/*
165+
* @brief System Clock Configuration
166+
* @param None
167+
* @retval None
168+
*/
169+
WEAK void SystemClock_Config(void)
170+
{
171+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
172+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
173+
/* Configure the main internal regulator output voltage*/
174+
175+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
176+
/* Initializes the CPU, AHB and APB busses clocks*/
177+
178+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI;
179+
RCC_OscInitStruct.MSIState = RCC_MSI_ON;
180+
RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
181+
RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11;
182+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
183+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
184+
Error_Handler();
185+
}
186+
/* Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers*/
187+
188+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3 | RCC_CLOCKTYPE_HCLK
189+
| RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1
190+
| RCC_CLOCKTYPE_PCLK2;
191+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
192+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
193+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
194+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
195+
RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV1;
196+
197+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
198+
Error_Handler();
199+
}
200+
}
201+
#ifdef __cplusplus
202+
}
203+
#endif
204+
#endif /* ARDUINO_ELV_BM_TRX1 */

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