用Arduino IDE+STM32制作LED闪烁灯

2023-06-25  

  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。

用Arduino IDE+STM32制作<a href=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,并将上传模式更改为串口。

 

用Arduino IDE+STM32制作LED闪烁灯

  Step 6:- 将FTDI板于电脑链接,检查FTDI板子所连接的哪个COM 端口是用作设备管理的。然后,在 Tools->Port 中选择同一端口编号。

  Step 7:- 完成上述变更后,检查Arduino IDE右下角显示正在设置。这样,Arduino IDE 就已经准备就绪,可以对STM 32小篮板进行编程了。

  上传stm32f103c8t6示范代码

  从Arduino IDE中将Sample Blink Program 上传到STM32小篮板,确保运行正常。

用Arduino IDE+STM32制作LED闪烁灯

用Arduino IDE+STM32制作LED闪烁灯

  示范程序打开后,需要进行小小改动。默认形况是写入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 界面:

用Arduino IDE+STM32制作LED闪烁灯


  运行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 
  }


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。