Skip to content

Commit 4fb8a3f

Browse files
authored
Add Adafruit qtpy ch32v203 board (openwch#136)
* add adafruit qtpy ch32v203g6 board * use 224KB for qtpy v203, implement pre_iint() to enable enhanced read mode
1 parent 273620c commit 4fb8a3f

File tree

7 files changed

+541
-0
lines changed

7 files changed

+541
-0
lines changed

Diff for: boards.txt

+16
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,22 @@ CH32V20x_EVT.menu.pnum.CH32V203C6.build.math_lib_gcc=-lm
524524
CH32V20x_EVT.menu.pnum.CH32V203C6.build.IQ_math_RV32=
525525
CH32V20x_EVT.menu.pnum.CH32V203C6.build.ch_extra_lib=-lprintf
526526

527+
#Adafruit QTPy CH32V203G6 Board
528+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY=Adafruit QTPy CH32V203G6
529+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.node=NODE_V203G6_ADAFRUIT_QTPY
530+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.upload.maximum_size=229376
531+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.upload.maximum_data_size=10240
532+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.mcu=QingKe-V4B
533+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.board=CH32V203G6_ADAFRUIT_QTPY
534+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.series=CH32V20x
535+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.variant=CH32V20x/CH32V203G6_ADAFRUIT_QTPY
536+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.chip=CH32V203
537+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.march=rv32imacxw
538+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.mabi=ilp32
539+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.math_lib_gcc=-lm
540+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.IQ_math_RV32=
541+
CH32V20x_EVT.menu.pnum.CH32V203G6_ADAFRUIT_QTPY.build.ch_extra_lib=-lprintf
542+
527543

528544
# USB support
529545
CH32V20x_EVT.menu.usb.none=None

Diff for: tools/makeboards.py

+1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
'CH32V203G6': {'name': 'CH32V203G6 EVT', 'maximum_size': 32768, 'maximum_data_size': 10240, 'mcu': 'QingKe-V4B', 'chip': 'CH32V203'},
8181
'CH32V203C8': {'name': 'CH32V203C8', 'maximum_size': 65536, 'maximum_data_size': 20480, 'mcu': 'QingKe-V4B', 'chip': 'CH32V203'},
8282
'CH32V203C6': {'name': 'CH32V203C6', 'maximum_size': 32768, 'maximum_data_size': 10240, 'mcu': 'QingKe-V4B', 'chip': 'CH32V203'},
83+
'CH32V203G6_ADAFRUIT_QTPY': {'name': 'Adafruit QTPy CH32V203G6', 'maximum_size': 229376, 'maximum_data_size': 10240, 'mcu': 'QingKe-V4B', 'chip': 'CH32V203'},
8384
}
8485
},
8586
'CH32V30x': {
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# v3.21 implemented semantic changes regarding $<TARGET_OBJECTS:...>
2+
# See https://cmake.org/cmake/help/v3.21/command/target_link_libraries.html#linking-object-libraries-via-target-objects
3+
cmake_minimum_required(VERSION 3.21)
4+
5+
add_library(variant INTERFACE)
6+
add_library(variant_usage INTERFACE)
7+
8+
target_include_directories(variant_usage INTERFACE
9+
.
10+
)
11+
12+
13+
target_link_libraries(variant_usage INTERFACE
14+
base_config
15+
)
16+
17+
target_link_libraries(variant INTERFACE variant_usage)
18+
19+
20+
21+
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22+
PeripheralPins.c
23+
variant_CH32V203G6_ADAFRUIT_QTPY.cpp
24+
)
25+
target_link_libraries(variant_bin PUBLIC variant_usage)
26+
27+
target_link_libraries(variant INTERFACE
28+
variant_bin
29+
)
30+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
/**
2+
*******************************************************************************
3+
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by WCH 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+
#include "Arduino.h"
15+
#include "PeripheralPins.h"
16+
17+
/* =====
18+
* Notes:
19+
* - The pins mentioned Px_y_ALTz are alternative possibilities which use other
20+
* HW peripheral instances. You can use them the same way as any other "normal"
21+
* pin (i.e. analogWrite(PA7_ALT1, 128);).
22+
*
23+
* - Commented lines are alternative possibilities which are not used per default.
24+
* If you change them, you will have to know what you do
25+
* =====
26+
*/
27+
28+
//*** ADC ***
29+
#ifdef ADC_MODULE_ENABLED
30+
WEAK const PinMap PinMap_ADC[] = {
31+
{PA_0, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 0)}, // ADC1_IN0
32+
{PA_0_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 0)}, // ADC2_IN0
33+
{PA_1, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 1)}, // ADC1_IN1
34+
{PA_1_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 1)}, // ADC2_IN1
35+
{PA_2, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 2)}, // ADC1_IN2
36+
{PA_2_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 2)}, // ADC2_IN2
37+
{PA_3, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 3)}, // ADC1_IN3
38+
{PA_3_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 3)}, // ADC2_IN3
39+
{PA_4, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 4)}, // ADC1_IN4
40+
{PA_4_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 4)}, // ADC2_IN4
41+
{PA_5, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 5)}, // ADC1_IN5
42+
{PA_5_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 5)}, // ADC2_IN5
43+
{PA_6, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 6)}, // ADC1_IN6
44+
{PA_6_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 6)}, // ADC2_IN6
45+
{PA_7, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 7)}, // ADC1_IN7
46+
{PA_7_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 7)}, // ADC2_IN7
47+
{PB_0, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 8)}, // ADC1_IN8
48+
{PB_0_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 8)}, // ADC2_IN8
49+
{PB_1, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 9)}, // ADC1_IN9
50+
{PB_1_ALT1, ADC2, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 9)}, // ADC2_IN9
51+
{NC, NP, 0}
52+
};
53+
#endif
54+
55+
//*** No DAC ***
56+
57+
58+
59+
//*** I2C ***
60+
#ifdef I2C_MODULE_ENABLED
61+
WEAK const PinMap PinMap_I2C_SDA[] = {
62+
{PB_7, I2C1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFOD, NOPULL, AFIO_NONE)},
63+
{PB_9, I2C1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFOD, NOPULL, AFIO_Remap_I2C1_ENABLE)},
64+
{NC, NP, 0}
65+
};
66+
#endif
67+
68+
#ifdef I2C_MODULE_ENABLED
69+
WEAK const PinMap PinMap_I2C_SCL[] = {
70+
{PB_6, I2C1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFOD, NOPULL, AFIO_NONE)},
71+
{PB_8, I2C1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFOD, NOPULL, AFIO_Remap_I2C1_ENABLE)},
72+
{NC, NP, 0}
73+
};
74+
#endif
75+
76+
//*** TIM ***
77+
#ifdef TIM_MODULE_ENABLED
78+
WEAK const PinMap PinMap_TIM[] = {
79+
{PA_0, TIM2, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM2_DISABLE, 1)}, // TIM2_CH1
80+
{PA_1, TIM2, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM2_DISABLE, 2)}, // TIM2_CH2
81+
{PA_2, TIM2, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM2_DISABLE, 3)}, // TIM2_CH3
82+
{PA_3, TIM2, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM2_DISABLE, 4)}, // TIM2_CH4
83+
84+
{PA_6, TIM3, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM3_DISABLE, 1)}, // TIM3_CH1
85+
{PA_7, TIM3, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM3_DISABLE, 2)}, // TIM3_CH2
86+
{PB_0, TIM3, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM3_DISABLE, 3)}, // TIM3_CH3
87+
{PB_1, TIM3, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM3_DISABLE, 4)}, // TIM3_CH4
88+
89+
{PB_6, TIM4, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM4_DISABLE, 1)}, // TIM4_CH1
90+
{PB_7, TIM4, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM4_DISABLE, 2)}, // TIM4_CH2
91+
{PB_8, TIM4, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM4_DISABLE, 3)}, // TIM4_CH3
92+
{PB_9, TIM4, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM4_DISABLE, 4)}, // TIM4_CH4
93+
94+
{PA_8, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 1)}, // TIM1_CH1
95+
{PA_9, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 2)}, // TIM1_CH2
96+
{PA_10, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 3)}, // TIM1_CH3
97+
{PA_11, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 4)}, // TIM1_CH4
98+
99+
{PB_13, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 1)}, // TIM1_CH1N
100+
{PB_14, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 2)}, // TIM1_CH2N
101+
{PA_15, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 3)}, // TIM1_CH3N
102+
{NC, NP, 0}
103+
};
104+
#endif
105+
106+
//*** UART ***
107+
#ifdef UART_MODULE_ENABLED
108+
WEAK const PinMap PinMap_UART_TX[] = {
109+
{PA_9, USART1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
110+
{PB_6, USART1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_Remap_USART1_ENABLE)},
111+
{PA_2, USART2, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
112+
{PB_10,USART3, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
113+
{PC_10,USART3, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_FullRemap_USART3_ENABLE)},
114+
{PB_0, UART4, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
115+
{PA_5, UART4, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_FullRemap_USART4_ENABLE)},
116+
{NC, NP, 0}
117+
};
118+
#endif
119+
120+
#ifdef UART_MODULE_ENABLED
121+
WEAK const PinMap PinMap_UART_RX[] = {
122+
{PA_10, USART1, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
123+
{PB_7, USART1, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_Remap_USART1_ENABLE)},
124+
{PA_3, USART2, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
125+
{PB_11, USART3, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
126+
{PC_11, USART3, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_FullRemap_USART3_ENABLE)},
127+
{PB_1, UART4, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
128+
{PB_5, UART4, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_FullRemap_USART4_ENABLE)},
129+
{NC, NP, 0}
130+
};
131+
#endif
132+
133+
#ifdef UART_MODULE_ENABLED
134+
WEAK const PinMap PinMap_UART_RTS[] = {
135+
{PA_12, USART1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
136+
{PA_1, USART2, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
137+
{PB_14, USART3, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
138+
{PB_4, UART4, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
139+
{NC, NP, 0}
140+
};
141+
#endif
142+
143+
#ifdef UART_MODULE_ENABLED
144+
WEAK const PinMap PinMap_UART_CTS[] = {
145+
{PA_11, USART1, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
146+
{PA_0, USART2, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
147+
{PB_13, USART3, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
148+
{PB_3, UART4, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
149+
{NC, NP, 0}
150+
};
151+
#endif
152+
153+
154+
//*** SPI ***
155+
#ifdef SPI_MODULE_ENABLED
156+
WEAK const PinMap PinMap_SPI_MOSI[] = {
157+
{PA_7, SPI1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
158+
{NC, NP, 0}
159+
};
160+
#endif
161+
162+
#ifdef SPI_MODULE_ENABLED
163+
WEAK const PinMap PinMap_SPI_MISO[] = {
164+
{PA_6, SPI1, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_FLOAT, 0, AFIO_NONE)},
165+
{NC, NP, 0}
166+
};
167+
#endif
168+
169+
#ifdef SPI_MODULE_ENABLED
170+
WEAK const PinMap PinMap_SPI_SCLK[] = {
171+
{PA_5, SPI1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
172+
{NC, NP, 0}
173+
};
174+
#endif
175+
176+
#ifdef SPI_MODULE_ENABLED
177+
WEAK const PinMap PinMap_SPI_SSEL[] = {
178+
{PA_4, SPI1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
179+
{NC, NP, 0}
180+
};
181+
#endif
182+
183+
//*** CAN ***
184+
#ifdef CAN_MODULE_ENABLED
185+
WEAK const PinMap PinMap_CAN_RD[] = {
186+
{PA_11, CAN1, CH_PIN_DATA(CH_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)},
187+
{PB_8, CAN1, CH_PIN_DATA(CH_MODE_INPUT, GPIO_NOPULL, AFIO_CAN1_2)},
188+
{NC, NP, 0}
189+
};
190+
#endif
191+
192+
#ifdef CAN_MODULE_ENABLED
193+
WEAK const PinMap PinMap_CAN_TD[] = {
194+
{PA_12, CAN1, CH_PIN_DATA(CH_MODE_AF_PP, GPIO_NOPULL, AFIO_NONE)},
195+
{PB_9, CAN1, CH_PIN_DATA(CH_MODE_AF_PP, GPIO_NOPULL, AFIO_CAN1_2)},
196+
{NC, NP, 0}
197+
};
198+
#endif
199+
200+
//*** No ETHERNET ***
201+
202+
203+
204+
//*** USB ***
205+
#ifdef USB_MODULE_ENABLED
206+
WEAK const PinMap PinMap_USB[] = {
207+
{PA_11, USB, CH_PIN_DATA(CH_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)}, // USB_DM
208+
{PA_12, USB, CH_PIN_DATA(CH_MODE_INPUT, GPIO_NOPULL, AFIO_NONE)}, // USB_DP
209+
{NC, NP, 0}
210+
};
211+
#endif
212+
213+
//*** No SD ***
214+
215+
+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/* Alternate pin name */
2+
PA_0_ALT1 = PA_0 | ALT1,
3+
PA_1_ALT1 = PA_1 | ALT1,
4+
PA_2_ALT1 = PA_2 | ALT1,
5+
PA_3_ALT1 = PA_3 | ALT1,
6+
PA_4_ALT1 = PA_4 | ALT1,
7+
PA_5_ALT1 = PA_5 | ALT1,
8+
PA_6_ALT1 = PA_6 | ALT1,
9+
PA_7_ALT1 = PA_7 | ALT1,
10+
PA_8_ALT1 = PA_8 | ALT1,
11+
PA_9_ALT1 = PA_9 | ALT1,
12+
PA_10_ALT1 = PA_10 | ALT1,
13+
PA_11_ALT1 = PA_11 | ALT1,
14+
PA_15_ALT1 = PA_15 | ALT1,
15+
PB_0_ALT1 = PB_0 | ALT1,
16+
PB_0_ALT2 = PB_0 | ALT2,
17+
PB_1_ALT1 = PB_1 | ALT1,
18+
PB_1_ALT2 = PB_1 | ALT2,
19+
PB_3_ALT1 = PB_3 | ALT1,
20+
PB_10_ALT1 = PB_10 | ALT1,
21+
PB_11_ALT1 = PB_11 | ALT1,
22+
23+
/* SYS_WKUP */
24+
#ifdef PWR_WAKEUP_PIN1
25+
SYS_WKUP1 = PA_0,
26+
#endif
27+
#ifdef PWR_WAKEUP_PIN2
28+
SYS_WKUP2 = NC,
29+
#endif
30+
#ifdef PWR_WAKEUP_PIN3
31+
SYS_WKUP3 = NC,
32+
#endif
33+
#ifdef PWR_WAKEUP_PIN4
34+
SYS_WKUP4 = NC,
35+
#endif
36+
#ifdef PWR_WAKEUP_PIN5
37+
SYS_WKUP5 = NC,
38+
#endif
39+
#ifdef PWR_WAKEUP_PIN6
40+
SYS_WKUP6 = NC,
41+
#endif
42+
#ifdef PWR_WAKEUP_PIN7
43+
SYS_WKUP7 = NC,
44+
#endif
45+
#ifdef PWR_WAKEUP_PIN8
46+
SYS_WKUP8 = NC,
47+
#endif
48+
49+
/* USB */
50+
#ifdef USBCON
51+
USB_DM = PA_11,
52+
USB_DP = PA_12,
53+
#endif
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/**
2+
*******************************************************************************
3+
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by WCH 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+
#include "pins_arduino.h"
15+
#include "hw_config.h"
16+
17+
// Digital PinName array
18+
const PinName digitalPin[] = {
19+
PB_1, // D0/A0
20+
PB_0, // D1/A1
21+
PA_1, // D2/A2
22+
PA_0, // D3/A3
23+
PA_2, // D4/TX
24+
PA_3, // D5/RX
25+
PA_4, // D6/Neopixel
26+
PA_5, // D7/SCK
27+
PA_6, // D8/MISO
28+
PA_7, // D9/MOSI
29+
PB_6, // D10/SCL
30+
PB_7, // D11/SDA
31+
PB_8, // D12/BOOT0 Button
32+
};
33+
34+
// Analog (Ax) pin number array
35+
const uint32_t analogInputPin[] = {
36+
0, // A0, PB1
37+
1, // A1, PB0
38+
2, // A2, PA1
39+
3, // A3, PA0
40+
};
41+
42+
extern "C" {
43+
44+
void pre_init(void) {
45+
// Enable Flash enhance read mode for full 224KB
46+
FLASH->KEYR = 0x45670123; // FLASH_Unlock_Fast();
47+
FLASH->KEYR = 0xCDEF89AB;
48+
49+
FLASH->CTLR |= (1 << 24); // Enhanced Read Mode
50+
51+
FLASH->CTLR |= (1 << 15); // FLASH_Lock_Fast();
52+
53+
hw_config_init();
54+
}
55+
56+
}

0 commit comments

Comments
 (0)