rt-thread/bsp/stm32/stm32f072-st-nucleo/applications/arduino
Man, Jianting (Meco) 0dc493d6da
[stm32f072] support Arduino I2C and update readme (#5824)
[stm32f072] support Arduino I2C and update readme
2022-04-18 09:36:12 +08:00
..
README.md [stm32f072] support Arduino I2C and update readme (#5824) 2022-04-18 09:36:12 +08:00
SConscript [stm32 pandora][arduino] 增加依赖项 (#5709) 2022-03-25 20:43:22 +08:00
pins_arduino.c [stm32f072] support Arduino I2C and update readme (#5824) 2022-04-18 09:36:12 +08:00
pins_arduino.h [stm32f072] support Arduino I2C and update readme (#5824) 2022-04-18 09:36:12 +08:00

README.md

STM32L072 Nucleo开发板的Arduino生态兼容说明

1 RTduino - RT-Thread的Arduino生态兼容层

STM32L072 Nucleo开发板已经完整适配了RTduino软件包即RT-Thread的Arduino生态兼容层。用户可以按照Arduino的编程习惯来操作该BSP并且可以使用大量Arduino社区丰富的库是对RT-Thread生态的极大增强。更多信息请参见RTduino软件包说明文档

1.1 如何开启针对本BSP的Arduino生态兼容层

Env 工具下敲入 menuconfig 命令,或者 RT-Thread Studio IDE 下选择 RT-Thread Settings

Hardware Drivers Config --->
    Onboard Peripheral Drivers --->
        [*] Support Arduino

2 Arduino引脚排布

该BSP遵照Arduino UNO板的引脚排列方式。详见 pins_arduino.c

Arduino引脚编号 STM32引脚编号 备注
0 (D0) -- 该引脚在UNO板中为串口RX引脚不能被当做普通IO
1 (D1) -- 该引脚在UNO板中为串口TX引脚不能被当做普通IO
2 (D2) PA10
3 (D3) PB3 PWM定时器2发生
4 (D4) PB5
5 (D5) PB4 PWM定时器3发生
6 (D6) PB10 PWM定时器2发生
7 (D7) PA8
8 (D8) PA9
9 (D9) PC7 PWM定时器3发生
10 (D10) PB6 PWM反相位定时器16发生
11 (D11) PA7 PWM定时器17发生
12 (D12) PA6
13 (D13) PA5
14 (D14) PC13 扩展Nucleo板载用户按键左侧蓝色
A0 PA0 ADC
A1 PA1 ADC
A2 PA4 ADC
A3 PB0 ADC
A4 PC1 ADC
A5 PC0 ADC
-- PB9 I2C1-SDA被RT-Thread的I2C设备框架i2c1总线接管
-- I2C1_SCL被RT-Thread的I2C设备框架i2c1总线接管

注意:

  1. D10引脚是PWM反相位引脚这是由STM32设计决定的例如正常的PWM设定占空比是20%它就是20%。但是对于D10引脚设定占空比是20%实际输出的占空比是80%。
  2. 驱动舵机和analogWrite函数要选择不同定时器发生的PWM信号引脚由于STM32的定时器4个通道需要保持相同的频率如果采用相同的定时器发生的PWM分别驱动舵机和analogWrite可能会导致舵机失效。
  3. USART2是Nucleo板的默认串口理论应对接到了Arduino引脚编号的D0和D1但是其实际用于串口通信因此不允许当做普通IO来使用和操作。如果需要将D0、D1与STM32 USART2的引脚相连需要手动焊接锡桥SB62、SB63。
  4. Nucleo板的Arduino接口中AVDD即AREF默认是与VDD相连的如果需要扩展板提供外部参考电压需要将SB57锡桥挑开。

3 I2C总线

STM32F072 Nucleo板的I2C总线是板上丝印的 SCL/D15SDA/D14 引脚这两个引脚是被RT-Thread I2C设备框架接管的不需要直接操控这两个引脚直接引用#include <Wire.h>Arduino官方I2C头文件即可使用。