Skip to content

Commit 2a25ed2

Browse files
committed
Add boards_entry and generic_clock
1 parent 8d11df8 commit 2a25ed2

11 files changed

+1381
-0
lines changed
+208
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2020, 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+
/*
14+
* Automatically generated from STM32F030R8Tx.xml
15+
* CubeMX DB release 6.0.70
16+
*/
17+
#if !defined(CUSTOM_PERIPHERAL_PINS)
18+
#include "Arduino.h"
19+
#include "PeripheralPins.h"
20+
21+
/* =====
22+
* Notes:
23+
* - The pins mentioned Px_y_ALTz are alternative possibilities which use other
24+
* HW peripheral instances. You can use them the same way as any other "normal"
25+
* pin (i.e. analogWrite(PA7_ALT1, 128);).
26+
*
27+
* - Commented lines are alternative possibilities which are not used per default.
28+
* If you change them, you will have to know what you do
29+
* =====
30+
*/
31+
32+
//*** ADC ***
33+
34+
#ifdef HAL_ADC_MODULE_ENABLED
35+
WEAK const PinMap PinMap_ADC[] = {
36+
{PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC_IN0
37+
{PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC_IN1
38+
{PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC_IN2
39+
{PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC_IN3
40+
{PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC_IN4
41+
{PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC_IN5
42+
{PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC_IN6
43+
{PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC_IN7
44+
{PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC_IN8
45+
{PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC_IN9
46+
{PC_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC_IN10
47+
{PC_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC_IN11
48+
{PC_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC_IN12
49+
{PC_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC_IN13
50+
{PC_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC_IN14
51+
{PC_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC_IN15
52+
{NC, NP, 0}
53+
};
54+
#endif
55+
56+
//*** No DAC ***
57+
58+
//*** I2C ***
59+
60+
#ifdef HAL_I2C_MODULE_ENABLED
61+
WEAK const PinMap PinMap_I2C_SDA[] = {
62+
{PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
63+
{PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
64+
{PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C2)},
65+
{PF_7, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF_NONE)},
66+
{NC, NP, 0}
67+
};
68+
#endif
69+
70+
#ifdef HAL_I2C_MODULE_ENABLED
71+
WEAK const PinMap PinMap_I2C_SCL[] = {
72+
{PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
73+
{PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
74+
{PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C2)},
75+
{PF_6, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF_NONE)},
76+
{NC, NP, 0}
77+
};
78+
#endif
79+
80+
//*** TIM ***
81+
82+
#ifdef HAL_TIM_MODULE_ENABLED
83+
WEAK const PinMap PinMap_TIM[] = {
84+
{PA_2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM15, 1, 0)}, // TIM15_CH1
85+
{PA_3, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM15, 2, 0)}, // TIM15_CH2
86+
{PA_4, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1
87+
{PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1
88+
{PA_6_ALT1, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM16, 1, 0)}, // TIM16_CH1
89+
{PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N
90+
{PA_7_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2
91+
{PA_7_ALT2, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1
92+
{PA_7_ALT3, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM17, 1, 0)}, // TIM17_CH1
93+
{PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)}, // TIM1_CH1
94+
{PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2
95+
{PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3
96+
{PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)}, // TIM1_CH4
97+
{PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N
98+
{PB_0_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3
99+
{PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N
100+
{PB_1_ALT1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 4, 0)}, // TIM3_CH4
101+
{PB_1_ALT2, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM14, 1, 0)}, // TIM14_CH1
102+
{PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1
103+
{PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2
104+
{PB_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 1)}, // TIM16_CH1N
105+
{PB_7, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 1)}, // TIM17_CH1N
106+
{PB_8, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 0)}, // TIM16_CH1
107+
{PB_9, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 0)}, // TIM17_CH1
108+
{PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N
109+
{PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N
110+
{PB_14_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM15, 1, 0)}, // TIM15_CH1
111+
{PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N
112+
{PB_15_ALT1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM15, 1, 1)}, // TIM15_CH1N
113+
{PB_15_ALT2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM15, 2, 0)}, // TIM15_CH2
114+
{PC_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_MCO, 1, 0)}, // TIM3_CH1
115+
{PC_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_MCO, 2, 0)}, // TIM3_CH2
116+
{PC_8, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3
117+
{PC_9, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_MCO, 4, 0)}, // TIM3_CH4
118+
{NC, NP, 0}
119+
};
120+
#endif
121+
122+
//*** UART ***
123+
124+
#ifdef HAL_UART_MODULE_ENABLED
125+
WEAK const PinMap PinMap_UART_TX[] = {
126+
{PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
127+
{PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
128+
{PA_14, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
129+
{PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
130+
{NC, NP, 0}
131+
};
132+
#endif
133+
134+
#ifdef HAL_UART_MODULE_ENABLED
135+
WEAK const PinMap PinMap_UART_RX[] = {
136+
{PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
137+
{PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
138+
{PA_15, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
139+
{PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
140+
{NC, NP, 0}
141+
};
142+
#endif
143+
144+
#ifdef HAL_UART_MODULE_ENABLED
145+
WEAK const PinMap PinMap_UART_RTS[] = {
146+
{PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
147+
{PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
148+
{NC, NP, 0}
149+
};
150+
#endif
151+
152+
#ifdef HAL_UART_MODULE_ENABLED
153+
WEAK const PinMap PinMap_UART_CTS[] = {
154+
{PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
155+
{PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
156+
{NC, NP, 0}
157+
};
158+
#endif
159+
160+
//*** SPI ***
161+
162+
#ifdef HAL_SPI_MODULE_ENABLED
163+
WEAK const PinMap PinMap_SPI_MOSI[] = {
164+
{PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
165+
{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
166+
{PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
167+
{NC, NP, 0}
168+
};
169+
#endif
170+
171+
#ifdef HAL_SPI_MODULE_ENABLED
172+
WEAK const PinMap PinMap_SPI_MISO[] = {
173+
{PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
174+
{PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
175+
{PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
176+
{NC, NP, 0}
177+
};
178+
#endif
179+
180+
#ifdef HAL_SPI_MODULE_ENABLED
181+
WEAK const PinMap PinMap_SPI_SCLK[] = {
182+
{PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
183+
{PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
184+
{PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
185+
{NC, NP, 0}
186+
};
187+
#endif
188+
189+
#ifdef HAL_SPI_MODULE_ENABLED
190+
WEAK const PinMap PinMap_SPI_SSEL[] = {
191+
{PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
192+
{PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
193+
{PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
194+
{NC, NP, 0}
195+
};
196+
#endif
197+
198+
//*** No CAN ***
199+
200+
//*** No ETHERNET ***
201+
202+
//*** No QUADSPI ***
203+
204+
//*** No USB ***
205+
206+
//*** No SD ***
207+
208+
#endif /* !CUSTOM_PERIPHERAL_PINS */
+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/* Alternate pin name */
2+
PA_6_ALT1 = PA_6 | ALT1,
3+
PA_7_ALT1 = PA_7 | ALT1,
4+
PA_7_ALT2 = PA_7 | ALT2,
5+
PA_7_ALT3 = PA_7 | ALT3,
6+
PB_0_ALT1 = PB_0 | ALT1,
7+
PB_1_ALT1 = PB_1 | ALT1,
8+
PB_1_ALT2 = PB_1 | ALT2,
9+
PB_14_ALT1 = PB_14 | ALT1,
10+
PB_15_ALT1 = PB_15 | ALT1,
11+
PB_15_ALT2 = PB_15 | ALT2,
12+
13+
/* SYS_WKUP */
14+
#ifdef PWR_WAKEUP_PIN1
15+
SYS_WKUP1 = PA_0,
16+
#endif
17+
#ifdef PWR_WAKEUP_PIN2
18+
SYS_WKUP2 = PC_13,
19+
#endif
20+
#ifdef PWR_WAKEUP_PIN3
21+
SYS_WKUP3 = NC,
22+
#endif
23+
#ifdef PWR_WAKEUP_PIN4
24+
SYS_WKUP4 = NC,
25+
#endif
26+
#ifdef PWR_WAKEUP_PIN5
27+
SYS_WKUP5 = NC,
28+
#endif
29+
#ifdef PWR_WAKEUP_PIN6
30+
SYS_WKUP6 = NC,
31+
#endif
32+
#ifdef PWR_WAKEUP_PIN7
33+
SYS_WKUP7 = NC,
34+
#endif
35+
#ifdef PWR_WAKEUP_PIN8
36+
SYS_WKUP8 = NC,
37+
#endif
38+
39+
/* No USB */
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# This file help to add generic board entry.
2+
# upload.maximum_size and product_line have to be verified
3+
# and changed if needed.
4+
# See: https://github.com/stm32duino/wiki/wiki/Add-a-new-variant-%28board%29
5+
6+
# Generic F334R8Tx
7+
GenF0.menu.pnum.GENERIC_F334R8TX=Generic F334R8Tx
8+
GenF0.menu.pnum.GENERIC_F334R8TX.upload.maximum_size=65536
9+
GenF0.menu.pnum.GENERIC_F334R8TX.upload.maximum_data_size=16384
10+
GenF0.menu.pnum.GENERIC_F334R8TX.build.board=GENERIC_F334R8TX
11+
GenF0.menu.pnum.GENERIC_F334R8TX.build.product_line=STM32F334x8
12+
GenF0.menu.pnum.GENERIC_F334R8TX.build.variant=STM32F3xx/F334R8T
13+
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2020-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_GENERIC_F334R8TX)
14+
#include "pins_arduino.h"
15+
16+
/**
17+
* @brief System Clock Configuration
18+
* @param None
19+
* @retval None
20+
*/
21+
WEAK void SystemClock_Config(void)
22+
{
23+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
24+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
25+
26+
/** Initializes the RCC Oscillators according to the specified parameters
27+
* in the RCC_OscInitTypeDef structure.
28+
*/
29+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
30+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
31+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
32+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
33+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
34+
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
35+
RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
36+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
37+
Error_Handler();
38+
}
39+
/** Initializes the CPU, AHB and APB buses clocks
40+
*/
41+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
42+
| RCC_CLOCKTYPE_PCLK1;
43+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
44+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
45+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
46+
47+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
48+
Error_Handler();
49+
}
50+
}
51+
52+
#endif /* ARDUINO_GENERIC_* */

0 commit comments

Comments
 (0)