Skip to content

Commit 40f5e1d

Browse files
authored
[Ardunio] stm32-blue-pill对接RTdunio软件包 (#6241)
按照pinout布局图重新设计Arduino引脚布局和功能 - 目前PB0(D12, PWM)和PA15(D5,PWM)测试不通过 参考:stm32duino/Arduino_Core_STM32#1082 (comment)
1 parent 8da744a commit 40f5e1d

File tree

9 files changed

+202
-285
lines changed

9 files changed

+202
-285
lines changed

bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/README.md

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -20,55 +20,43 @@ Hardware Drivers Config --->
2020

2121
该BSP遵照Arduino UNO板的引脚排列方式,并扩展增加了Blue-pill自身的板载资源功能引脚。详见 `pins_arduino.c`
2222

23-
| Arduino引脚编号 | STM32引脚编号 | 5V容忍 | 备注 |
24-
| --------------- | ------------- | ------ | ------------------------------------------------------------ |
25-
| 0 (D0) | -- | | 该引脚在UNO板中为串口RX引脚,不可当做普通IO |
26-
| 1 (D1) | -- | | 该引脚在UNO板中为串口TX引脚,不可当做普通IO |
27-
| 2 (D2) | PB9 || I2C1-SDA,被RT-Thread的I2C设备框架i2c1总线接管,不可当做普通IO |
28-
| 3 (D3) | PB8 || I2C1_SCL,被RT-Thread的I2C设备框架i2c1总线接管,不可当做普通IO |
29-
| 4 (D4) | PB7 || |
30-
| 5 (D5) | PB6 || |
31-
| 6 (D6) | PB5 || PWM3-CH2(定时器3发生) |
32-
| 7 (D7) | PB4 || PWM3-CH1(定时器3发生) |
33-
| 8 (D8) | PB3 || PWM2-CH2(定时器2发生) |
34-
| 9 (D9) | PA15 || PWM2-CH1(定时器2发生) |
35-
| 10 (D10) | PA12 || USB-DB,不可当做普通IO |
36-
| 11 (D11) | PA11 || USB-DM,不可当做普通IO |
37-
| 12 (D12) | PA10 || UART1-RX,被RT-Thread的UART设备框架uart1接管,不可当做普通IO |
38-
| 13 (D13) | PA9 || UART1-RX,被RT-Thread的UART设备框架uart1接管,不可当做普通IO |
39-
| 14 (D14) | PA8 || PWM1-CH1(定时器1发生) |
40-
| 15 (D15) | PB15 || |
41-
| 16 (D16) | PB14 || |
42-
| 17 (D17) | PB13 || PWM1-CH1N(定时器1发生) |
43-
| 18 (D18) | PB12 || |
44-
| 19 (D19) | PC13 || 板载LED默认引脚 |
45-
| 20 (D20) | PC14 || |
46-
| 21 (D21) | PC15 || |
47-
| 22 (D22) | PA2 || UART2-TX,被RT-Thread的UART设备框架uart2接管,不可当做普通IO |
48-
| 23 (D23) | PA3 || UART2-RX,被RT-Thread的UART设备框架uart2接管,不可当做普通IO |
49-
| 24 (D24) | PA5 || SPI-SCK, SPI功能尚未完全实现,目前仅作普通IO使用 |
50-
| 25 (D25) | PA6 || SPI-MISO,SPI功能尚未完全实现,目前仅作普通IO使用 |
51-
| 26 (D26) | PA7 || SPI-MOSI,SPI功能尚未完全实现,目前仅作普通IO使用 |
52-
| 27 (D27) | PB10 || UART3-TX,被RT-Thread的UART设备框架uart3接管,不可当做普通IO |
53-
| 28 (D28) | PB11 || UART3-RX,被RT-Thread的UART设备框架uart3接管,不可当做普通IO |
54-
| A0 | PA0 || ADC |
55-
| A1 | PA1 || ADC |
56-
| A2 | PA4 || ADC |
57-
| A3 | PB0 || ADC |
58-
| A4 | PB1 || ADC |
59-
| A5 | -- | | 芯片内部参考电压 ADC |
60-
| A6 | -- | | 芯片内部温度 ADC |
23+
| Arduino引脚编号 | STM32引脚编号 | 5V容忍 | 备注 |
24+
| ----------- | --------- | ---- | -------------------------------------------- |
25+
| 0 (D0) | PB7 || |
26+
| 1 (D1) | PB6 || |
27+
| 2 (D2) | PB5 || PWM3-CH2(定时器3发生) |
28+
| 3 (D3) | PB4 || PWM3-CH1(定时器3发生) |
29+
| 4 (D4) | PB3 || PWM2-CH2(定时器2发生) |
30+
| 5 (D5) | PA15 || PWM2-CH1(定时器2发生) |
31+
| 6 (D6) | PA8 || |
32+
| 7 (D7) | PB12 || |
33+
| 8 (D8) | PC13 || |
34+
| 9 (D9) | PC14 || |
35+
| 10 (D10) | PC15 || |
36+
| 11 (D11) | PA0 || |
37+
| 12 (D12) | PB0 || PWM3-CH3(定时器3发生) |
38+
| 13 (D13) | PB1 || PWM3-CH4(定时器3发生) |
39+
| A0 | PA1 || ADC1-CH1 |
40+
| A1 | PA4 || ADC1-CH4 |
41+
| A2 | PA5 || ADC1-CH5 |
42+
| A3 | PA6 || ADC1-CH6 |
43+
| A4 | PA7 || ADC1-CH7 |
44+
| A5 | -- | | 芯片内部参考电压 ADC |
45+
| A6 | -- | | 芯片内部温度 ADC |
46+
| -- | PB9 || I2C-SDA,被RT-Thread的I2C设备框架i2c1总线接管,不可当做普通IO |
47+
| -- | PB8 || I2C-SCL,被RT-Thread的I2C设备框架i2c1总线接管,不可当做普通IO |
48+
| -- | PA12 || USB-DP,被TinyUSB接管,不可当做普通IO |
49+
| -- | PA11 || USB-DM,被TinyUSB接管,不可当做普通IO |
50+
| -- | PA10 || UART1-RX,被RT-Thread的UART设备框架uart1接管,不可当做普通IO |
51+
| -- | PA9 || UART1-TX,被RT-Thread的UART设备框架uart1接管,不可当做普通IO |
52+
| -- | PA2 || UART2-TX,被RT-Thread的UART设备框架uart2接管,不可当做普通IO |
53+
| -- | PA3 || UART2-RX,被RT-Thread的UART设备框架uart2接管,不可当做普通IO |
54+
| -- | PB10 || UART3-TX,被RT-Thread的UART设备框架uart3接管,不可当做普通IO |
55+
| -- | PB11 || UART3-RX,被RT-Thread的UART设备框架uart3接管,不可当做普通IO |
56+
| -- | PB15 || SPI-MOSI,SPI功能尚未完全实现 |
57+
| -- | PB14 || SPI-MISO,SPI功能尚未完全实现 |
58+
| -- | PB13 || SPI-SCK ,SPI功能尚未完全实现 |
6159

6260
> 注意:
63-
>
61+
>
6462
> 1. 驱动舵机和analogWrite函数要选择不同定时器发生的PWM信号引脚,由于STM32的定时器4个通道需要保持相同的频率,如果采用相同的定时器发生的PWM分别驱动舵机和analogWrite,可能会导致舵机失效。
65-
> 4. D10引脚是PWM反相位引脚(也就是常说的互补输出引脚CHxN)。但是这里不用考虑到占空比互补问题(CHx-20%,CHxN-80%),直接正常使用即可。
66-
> 4. STM32的PA15引脚默认作为JTAG下载使用,但是如果采用SWD调试时,PA15(D9)可以作为普通的IO口使用,但是需要设置一些寄存器。
67-
68-
> 参考资料
69-
>
70-
> 1. 暂无
71-
72-
## 3 I2C总线
73-
74-
STM32F103 Blue-Pill板的I2C总线是板上丝印的 `SCL/D3``SDA/D2` 引脚,这两个引脚是被RT-Thread I2C设备框架接管的,不需要直接操控这两个引脚,直接引用`#include <Wire.h>`(Arduino官方I2C头文件)即可使用。
-6.61 KB
Loading

bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.c

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -20,42 +20,34 @@
2020
*/
2121
const pin_map_t pin_map_table[]=
2222
{
23-
{D0}, /* RX */
24-
{D1}, /* TX */
25-
{D2}, /* I2C1-SDA */
26-
{D3}, /* I2C1-SCL */
27-
{D4, GET_PIN(B,7)},
28-
{D5, GET_PIN(B,6)},
29-
{D6, GET_PIN(B,5), "pwm3", 2},/* PWM */
30-
{D7, GET_PIN(B,4), "pwm3", 1}, /* PWM */
31-
{D8, GET_PIN(B,3), "pwm2", 2}, /* PWM */
32-
{D9, GET_PIN(A,15), "pwm2", 1}, /* PWM */
33-
{D10}, /* USB-DP */
34-
{D11}, /* USB-DM */
35-
{D12}, /* UART1-RX */
36-
{D13}, /* UART1-TX */
37-
{D14, GET_PIN(A,8), "pwm1", 1}, /* PWM */
38-
{D15, GET_PIN(B,15)},
39-
{D16, GET_PIN(B,14)},
40-
{D17, GET_PIN(B,13), "pwm1", -1}, /* PWM */
41-
{D18, GET_PIN(B,12)},
42-
{D19, GET_PIN(C,13)}, /* user led1 */
43-
{D20, GET_PIN(C,14)},
44-
{D21, GET_PIN(C,15)},
45-
{D22}, /* UART2-TX */
46-
{D23}, /* UART2-RX */
47-
/* The connection of RTdunio SPI has not been completed, *
48-
* and it can only be used as a common GPIO at present. */
49-
{D24, GET_PIN(A,5)}, /* SPI-SCK */
50-
{D25, GET_PIN(A,6)}, /* SPI-MISO */
51-
{D26, GET_PIN(A,7)}, /* SPI-MOSI */
52-
{D27}, /* UART3-TX */
53-
{D28}, /* UART3-RX */
54-
{A0, GET_PIN(A,0), "adc1", 0}, /* ADC */
55-
{A1, GET_PIN(A,1), "adc1", 1}, /* ADC */
56-
{A2, GET_PIN(A,4), "adc1", 4}, /* ADC */
57-
{A3, GET_PIN(B,0), "adc1", 8}, /* ADC */
58-
{A4, GET_PIN(B,1), "adc1", 9}, /* ADC */
23+
{D0, GET_PIN(B,7)},
24+
{D1, GET_PIN(B,6)},
25+
{D2, GET_PIN(B,5), "pwm3", 2},/* PWM */
26+
{D3, GET_PIN(B,4), "pwm3", 1}, /* PWM */
27+
{D4, GET_PIN(B,3), "pwm2", 2}, /* PWM */
28+
{D5, GET_PIN(A,15), "pwm2", 1}, /* PWM */
29+
{D6, GET_PIN(A,8)},
30+
{D7, GET_PIN(B,12)},
31+
{D8, GET_PIN(C,13)}, /* LED_BUILTIN */
32+
{D9, GET_PIN(C,14)},
33+
{D10, GET_PIN(C,15)},
34+
{D11, GET_PIN(A,0)},
35+
{D12, GET_PIN(B,0), "pwm3", 3}, /* PWM */
36+
{D13, GET_PIN(B,1), "pwm3", 4}, /* PWM */
37+
{A0, GET_PIN(A,1), "adc1", 1}, /* ADC */
38+
{A1, GET_PIN(A,4), "adc1", 4}, /* ADC */
39+
{A2, GET_PIN(A,5), "adc1", 5}, /* ADC */
40+
{A3, GET_PIN(A,6), "adc1", 6}, /* ADC */
41+
{A4, GET_PIN(A,7), "adc1", 7}, /* ADC */
5942
{A5, RT_NULL, "adc1", 17}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */
6043
{A6, RT_NULL, "adc1", 16} /* ADC, On-Chip: internal temperature sensor, ADC_CHANNEL_TEMPSENSOR */
6144
};
45+
/*
46+
* Before RTdunio is used, you can do some necessary initialization through this function
47+
*/
48+
void initVariant()
49+
{
50+
/* JTAG-DP Disabled and SW-DP enabled */
51+
__HAL_RCC_AFIO_CLK_ENABLE();
52+
__HAL_AFIO_REMAP_SWJ_NOJTAG();
53+
}

bsp/stm32/stm32f103-blue-pill/applications/arduino_pinout/pins_arduino.h

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,26 @@
2626
#define D11 (11)
2727
#define D12 (12)
2828
#define D13 (13)
29-
#define D14 (14)
30-
#define D15 (15)
31-
#define D16 (16)
32-
#define D17 (17)
33-
#define D18 (18)
34-
#define D19 (19)
35-
#define D20 (20)
36-
#define D21 (21)
37-
#define D22 (22)
38-
#define D23 (23)
39-
#define D24 (24)
40-
#define D25 (25)
41-
#define D26 (26)
42-
#define D27 (27)
43-
#define D28 (28)
44-
#define A0 (29)
45-
#define A1 (30)
46-
#define A2 (31)
47-
#define A3 (32)
48-
#define A4 (33)
49-
#define A5 (34)
50-
#define A6 (35)
29+
#define A0 (14)
30+
#define A1 (15)
31+
#define A2 (16)
32+
#define A3 (17)
33+
#define A4 (18)
34+
#define A5 (19)
35+
#define A6 (20)
5136

5237
#define F_CPU 72000000L /* CPU: 72MHz */
53-
#define LED_BUILTIN D19 /* Default Built-in LED */
38+
#define LED_BUILTIN D8 /* Default Built-in LED */
5439

40+
/*
41+
* i2c1 - PB9-SDA PB8-SCL
42+
*/
5543
#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1"
5644

45+
/*
46+
* uart2 - PA2-TX PA3-RX
47+
* uart3 - PB10-TX PB11-RX
48+
*/
5749
#define RTDUINO_SERIAL2_DEVICE_NAME "uart2"
5850
#define RTDUINO_SERIAL3_DEVICE_NAME "uart3"
5951

0 commit comments

Comments
 (0)