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。 Board Manager打开板自管理器并选择“STM32F1” ,再安装出现的封装。 Step 5:- 安装完成。在Tools下拉中寻找如下 Generic STM32F103C 系列,确定参数为:64kFlah type, CPU speed is 72MHz,并将上传模式更改为串口。 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 }