Arduino广为电子爱好者和工程师熟悉,但8位CPU和慢几拍的时钟并不适合深度开发。如果与STM32F103C8T6结合,一个全新的应用就会出现,我们可在Arduino IDE上对STM32板子进行编程。
本项目所需材料有:STM32小蓝板 (STM32F103C8T6)、FTDI编程器、面包板及导线、可联网笔记本电脑。
了解STM32小蓝板
STM32开发板由于PCB蓝色而称为小蓝板(Blue Pill),采用的是STM32F103C8T6芯片,体积比Arduino Nano板略大。除了芯片本身,板上还有一个8Mhz晶体和一个32KHz晶体来驱动内部实时时钟。该电路板使用3.3V逻辑电平,但其大部分引脚均为5V耐压,可运行于深度睡眠模式。
STM32F103C8T6是一款32位ARM处理器,主频72MHz,提供20KB的RAM和64KB闪存,足以构建大型项目。芯片具有37个GPIO引脚,10个ADC引脚、SPI、I2C、CAN、UART总线和DMA控制器。这些令人印象深刻的芯片价格为3美元。如果我们将STM32的规格与Arduino Uno的规格进行比较,我们可以看到这个小板在每个领域都优于Arduino Uno。STM32芯片的工作频率是Arduino Uno工作频率的4.5倍。因此,预计STM32至少比Arduino Uno快4.5倍。
与Arduino板不同,小蓝板必须使用boot 1 and boot 0跳线手动改设置编程模式,编程时将boot 0设置为3.3V,工作时设置为接地。
编程准备
STM32小蓝板可使用所有的ARM芯片编程方式进行编程一些常见的IDE有:Keil ARM MDK、IAR workbench、Atollic TrueStudio、MicroC Pro ARM、Crossworks ARM、Ride 7、PlatformIO+STM32。本项目使用Arduino IDE是为了方便,因为大家普遍对Arduino IDE环境比较熟悉。
使用Arduino IDE直接编程STM32 Blue Pill 板子时,我们需要一块串口FTDI 板,这块板子连接于小篮板的Rx、Tx引脚。
这里,FTDI板的Vcc引脚连接与STM32 5V供电引脚,两块板的地-地连接,Rx、Tx引脚分别连接STM32小篮板的A9、A10引脚。
当然,如果方便的话,你也可以直接使用micro-USB端口对STM32小篮板进行编程,这样做是为了让大家多了解一种方法。步骤如下:
Step 1:- 选择正确的Arduino IDE并安装。
Step 2:- 打开Arduino IDE,下载STM32小篮板所需的封装。
Step 3:- 点击references,打开如下对话框,在Boards Manager URL文本框中黏贴链接http://dan.drown.org/stm32duino/package_STM32duino_index.json,
然后按 OK。
LED闪烁灯" src="https://semi-static.oss-cn-hangzhou.aliyuncs.com/article/2023/06/25/1687665201.png">
Step 4:- 进入Tool -> Boards -> Board Manager打开板自管理器并选择“STM32F1” ,再安装出现的封装。
Step 5:- 安装完成。在 Tools 下拉中寻找如下 Generic STM32F103C 系列,确定参数为:64kFlah type, CPU speed is 72MHz,并将上传模式更改为串口。
Step 6:- 将FTDI板于电脑链接,检查FTDI板子所连接的哪个COM 端口是用作设备管理的。然后,在 Tools->Port 中选择同一端口编号。
Step 7:- 完成上述变更后,检查Arduino IDE右下角显示正在设置。这样,Arduino IDE 就已经准备就绪,可以对STM 32小篮板进行编程了。
上传stm32f103c8t6示范代码
从Arduino IDE中将Sample Blink Program 上传到STM32小篮板,确保运行正常。
示范程序打开后,需要进行小小改动。默认形况是写入PB1,本项目的LED连接于PC13,需要用PC13来取代PB1。
由于我们已经很好处理了,记下来出现以下程序,这样LED将以1000毫秒间隔闪烁。
digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
由于早期的STM32板必须在上传程序之前设置为编程模式,这需要将boot 0 跳线置于低位。
现在,按下复位按钮,进入编程模式,绿色LED等熄灭,表示板子准备就绪。
按Arduino IDE的上传健,开始编程和上传。如果一切正常,将会出现Arduino IDE 界面:
运行STM32闪烁程序
程序正常上传后,绿色LED将以1妙间隔闪烁,当然,你也可以变更程序以增加或缩短时间间隔,实现不同效果的闪烁体验。
程序上传完成后,boot 0 跳线应该归位到运行模式,这样下次板子上电后就会自动开始上传程序。
附:STM32闪烁代码
/*
circuitdigest.com
Sample STM32 Blink Program for Blue Pill board
*/
// the setup funcTIon runs once when you press reset or power the board
void setup() {
// iniTIalize digital pin PC13 as an output.
pinMode(PC13, OUTPUT);
}
// the loop funcTIon runs over and over again forever
void loop() {
digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}