用Arduino IDE+STM32制作LED闪烁灯

发布者:CrystalSparkle最新更新时间:2023-06-25 来源: elecfans关键字:Arduino  IDE  STM32  LED闪烁灯 手机看文章 扫描二维码
随时随地手机看文章

  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制作LED闪烁灯

 

  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 
  }


关键字:Arduino  IDE  STM32  LED闪烁灯 引用地址:用Arduino IDE+STM32制作LED闪烁灯

上一篇:STM32CubeMx的初始配置顺序是怎么影响DMA功能的
下一篇:STM32生态系统工具和软件介绍

推荐阅读最新更新时间:2024-11-13 06:38

STM32进入HardFault_Handler处理办法
STM32进入HardFault_Handler处理办法 HardFault_Handler出现的情况一般有两种: 一种是:数组越界 一种是:堆栈溢出,程序指针指飞 方法一 在中断HardFault_Handler中的while()处打上断点,让程序执行到此处停止。 在Registers里面找到R14(LR)的值,我的这里是:0xFFFFFFF9 说明一下: 0xFFFFFFF9对应的是要看MSP寄存器 0xFFFFFFFD对应的是要看PSP寄存器 所以这里需要查找的内存地址是MSP的值:0x20008828 在memory里面查找MSP的值:0x20008828,然后在对应的行里面找到地址,地址一般
[单片机]
<font color='red'>STM32</font>进入HardFault_Handler处理办法
STM32学习笔记之GPIO
GPIO功能描述 每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。根据数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx
[单片机]
STM32学习笔记之十六——题外话,自己做块工程板
一、我的学习计划将STM32单片机的硬件设计工作: 第一步 用STM32F103CBT6的48脚芯片,为光电平台的简单控制为目标,实现基本外围硬件、PWM、串口、I/O。将SPI、I2C留插针。 第二步 为集成传感器应用为目标,在第一步硬件基础上制作功能性的套版,两板连接实现AD、SPI、I2C、RTC等等功能。 二、硬件规划 选用STM32F103CBT6,面积7 7mm,128K flash,16K RAM,4个16bit PWM,12个12bit PWM或CAP,2个SPI,2个I2C,3个串口,1个CAN,1个USB,),12ADC。 管脚分配目标1如图,之后的功能包括:4个AD,3个串口(1个与I2C复用),1个S
[单片机]
STM32外部中断详解
一、基本概念 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但是STM32中只使用4位,高4位有效),每4个通道的8位中断优先级控制字构成一个32位的优先级寄存器。68个通道的优先级控制字至少构成17个32位的优先级寄存器。 4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组 第0组:所有4bit用于指定响应优先级; 第1组:最高1位用于指定抢占式优先级,后面3位用于指定响应优先级; 第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级; 第3组
[单片机]
STM32 RTC晶振问题
STM32的RTC晶振,我百度全网,总结如下 软件: 在以前很多的程序里 在rtc中断里 都没有 RTC_WaitForLastTask();这个语句。 加上即可 硬件: 常规配置 6p晶振加两个10p电容 不要并联电阻并联了反而不起振 ======================================= 以下为另一个需要验证的软件解决方式 12.5p晶振启动时间比6P的长可能才是主要的原因 我的板上32.768K晶振(12.5P)也老是出现上电起振难的问题.看到楼主讲主换6P的,我找不到,后来想到也许是12.5P的晶振起动时所需时间要比6P的长,我对RTC的初始化作了一点改动... 这是KEIL RTC例程中的:
[单片机]
stm32嵌入式操作系统具有怎样的优缺点
  STM32简单介绍   一、背景   如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷。   即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MCU应用领域 的32位处理器的性能,但是从工程的角度来讲,除了芯片本身的性能和成本之外,你或许还会考虑到开发工具的成本和广泛度;存储器的种类、规模、性能和容 量;以及各种软件获得的难易,我相信你看完本
[单片机]
<font color='red'>stm32</font>嵌入式操作系统具有怎样的优缺点
ucosii在stm32上的移植详解5
详解1-4把移植过程都已经介绍了。接下来的工作是验证移植是否ok以及如何基于移植好的ucosii开发应用程序。前一个问题可以说是后一个问题的特殊情况,一般我们会创建两个简单的任务,看看任务切换是否成功来验证移植是否ok,因为任务切换可以说是ucosii最核心的功能。 任务代码(main.c): static void task1(void *p_arg) { for (;;) { led_on(LED_0); OSTimeDly(500); led_off(LED_0); OSTimeDly(500); } } static void t
[单片机]
STM32-初学者必知
STM32的核心Cortex-M3处理器是一个标准化的微控制器结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CPU,并行总线结构,嵌套中断向量控制单元,调试系统以及标准的存储映射。 嵌套中断向量控制器(Nested Vector Interrupt Controller,简称NVIC)是Cortex-M3处理器中一个比较关键的组件,它为基于Cortex-M3的微控制器提供了标准的中断架构和优秀的中断响应能力,为超过240个中断源提供专门的中断入口,而且可以赋予每个中断源单独的优先级。利用NVIC从可以达到极快的中断响应速度,从收到中断请求到执行中断服务的第一条指令仅需12个周期。这种极快的响应速度一
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved