将你的STM32搞成Arduino(一)

2023-11-03

接触STM32有一年半了从刚开是的懵懂无知到现在的拉个库就是干,我慢慢的发现STM3功能的强大已经配套环境的完整程序,他不像是51单片机那样已经被intel抛弃,之后也没人出一个官方的库,一切都是纯生的需要自己搭建。STM32标准库已经为你搭建好了一个完整的环境,仅仅需要去调用就好了。更甚至ST为了推广F4、F7、H7系列的单片机推出了CubeMX+HAL/LL库,虽然对于已经用惯了标准库的大佬们迁移来说很简单,但是对于刚刚开始单片机深坑之旅的小伙伴们来说学习的成本还是有电高。

国外的大佬Roger Clark在Github上有一个开源的项目,可以将Stm32F103系列单片机刷入Arduino的Bootloader,并且使用Arduino的编译器和IDE来完成代码的编写,省去了一大部分配置寄存器和学习的时间,可以让新手小白拿到之后就可以直接怼!

下面介绍三种食用的打开方式:

  • 方式1:直接使用串口烧录和使用

Step1:我们首先需要从Git上下载大佬的项目文件(https://github.com/rogerclarkmelbourne),在他的Git仓库中有两个我们需要下载的项目集,分别是“Arduino_STM32-master”和“STM32duino-bootloader-master”。“Arduino_STM32-master”文件是我们需要使用的STM32的支持库需要将其导入到Arduino的IDE之后IDE才可以编译,并且生成STM32可以使用的hex程序文件。因为不管是Arduino UNO还是Arduino mega 2560他们的内核都是AVR的,和STM32 的ARM内核是相同的。如果不导入安装这个库文件的话就无法编译生成STM32 对应的hex文件。

Step2:下载完成之后将Arduino_STM32-master.zip解压并且将其更名为“arduino_STM32”。然后找到你的Arduino的安装路径,默认是在“C:\Program Files (x86)\Arduino\”当然也可能在其他的地方,你可以使用Arduino IDE桌面的图标来寻找他的安装目录,右键IDE图标并且点击属性菜单栏,即可看到IDE的安装位置。将“arduino_STM32”文件夹复制到Arduino编译根目录下的hardware文件夹中。

Step3:复制完成之后打开,打开IDE(如果刚才你打开了需要关闭从新启动IDE才会加载刚才你复制进去的文件)我们需要添加STM32的相关文件,单击菜单栏中的工具->开发板->开发板管理器。

在开发板管理器中搜索我们所要使用的STM32相关的配套文件,如果是使用的是STM32F103系列就安装M3的配套文件,如果使用的是F104系列就添加M4的配套文件。

 

在安装完成配套文件之后就可以在工具->开发板 中看到许多STM32有关的开发板了。

选定我们使用的相应的STM32单片机的型号即可,如果使用的是正点原子的战舰或者精英版就选择STM32F103Z(二者的芯片均为STM32F103ZET6),如果是正点原子的mini版就采用STM32F103R(芯片为STM32F103RBT6)其他的原理类似。

我们本次讲解使用的是淘宝上只要搜索“STM32最小系统”就会找到的最常见的STM32C8T6单片机,为什么要采用这款单片机呢,因为在外观上他和Arduino nano的大小较为相似,价格也较为的便宜最贵也就不到20元,一般都在13元左右。其他的原因我将在后面的提及不要着急。

这款开发板板子的没有ch340G下载芯片因此我们需要一个usb转TTL下载器并且将其连接在开发板的串口1上,根据STM32F103权威指南我们可以知道串口1的烧录引脚是在PA9和PA10上的。因此我们要将下载器和单片机相连接:TX -----》PA10、RX-----》PA9、VCC-----》VCC、GND-----》GND。

别问我啥是USB转TTL,这都不知道玩神马硬件!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在连接好之后就需要打开你电脑的设备管理器然后查看你连接的USB转TTL设备所占用的COM口的编号,之后就可以在我们的IDE中将:工具-->端口号设置为刚才我们在设备管理器中看到的端口号即可,然后开始编译下载我们的程序就可以了,和你日常使用Arduino Uno一样。(备注:我们在使用Arduino编译器中的STM例程中的Blink时需要将IO修改成PC13,因为小蓝板的LED是在PC13上的)。

最后烧录成功之后会如图所示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将你的STM32搞成Arduino(一) 的相关文章

  • 将字符串转换为字节数组,然后返回原始字符串

    在Java或Android中是否可以将字符串转换为字节数组 然后将其转换回原始字符串 我的目标是将一些字符串发送到微控制器 Arduino 并将其存储到 EEPROM 这是唯一的 1 KB 中 我尝试使用MD5 http en wikipe
  • Arduino 支持线程吗?

    我有几个任务需要用arduino来做 但其中一个需要很长时间 所以我想使用线程来同时运行它们 我有一个 Arduino Mega 更新 四年后 我终于可以在我的 arduino mega 上安装 FreeRTOS 这里有一个link htt
  • Arduino 错误:无法将参数 '1' 的 'String' 转换为 'char*' 到 'char* strtok(c​​har*, const char*)'

    我正在研究一个 arduino 分配 它分割传入的字符串并将字符串的术语放入 6 个不同的变量中 分割时的示例输入字符串有 6 个术语 我弹出以下错误 无法将参数 1 的 String 转换为 char 到 char strtok c ha
  • VSCode 上的 PlatformIO 未编译:collect2.exe:错误:ld 返回 1 退出状态

    我最近不得不擦拭我的计算机 在一切准备就绪并运行之后 是时候打开我之前正在处理的一些 ESP32 程序了 发现 VSCode 上的 Platform IO 将不再编译 运行编译器后 我收到以下错误 Compiling pio build e
  • arduino安装DHT11库

    步骤操作如下 打开Arduino IDE 在菜单栏中选择 项目 gt 加载库 gt 管理库 在库管理器的搜索框中 输入 DHT sensor library 找到 DHT sensor library by Adafruit 点击 安装 安
  • Arduino 中的字符串比较

    我正在开发基于网络的家庭自动化系统 因此我的Arduino向服务器发送请求并在串行监视器中获得以下响应以及 loneOn 这是由于Serial println r 陈述 HTTP 1 1 200 OK Date Mon 13 Oct 201
  • 批处理文件:从串口接收数据并将其写入txt文件

    我正在尝试通过 USB 串行端口从 Arduino 提取一些数据并将其写入 txt 文件 因此 我使用批处理文件 Windows 7 普通cmd 它发送例如 d 从 Arduino 请求所需的数据 收到 d 后 Arduino 开始向 PC
  • Arduino Python3 脚本

    我正在尝试使用 Python3 脚本来控制 Arduino Mega 这是一个简单的脚本 用于从键盘获取一行并通过 Arduino 回显它 我从一个可用的 Python 2 脚本开始http petrimaki wordpress com
  • 如何将 char 数组定义为常量?

    这里是 C C 菜鸟 我已经在头文件中定义了它 typedef unsigned char BitChar 9 8 data bytes chars and one width byte char extern BitChar BitFon
  • 如何将 ASCII char 转换为其 ASCII int 值?

    我想将 char 转换为它的ASCII http en wikipedia org wiki ASCIIint 值 我可以用所有可能的值填充一个数组并与其进行比较 但这对我来说似乎不正确 我想要类似的东西 char mychar k pub
  • Arduino从SD卡读取最后一行

    我对 Arduino 业务还很陌生 如何从 SD 卡读取最后一行 通过以下代码片段 我可以读取第一行 n 之前的所有字符 现在我想添加一个 向后 声明 或其他内容 到目前为止我的代码 include
  • 为什么使用 libnfc 和 PN532 SHIELD 时“找不到 NFC 设备”

    我在 ArchLinux 上安装了 libnfc 并通过我的 Adafruit PN532 arduino SHIELD 使用它 nfc list返回消息 未找到 NFC 设备 我在 etc nfc devices d pn532 conf
  • pySerial 与 python 2.7 和 3.4 的差异

    我正在开发一个项目 需要通过串口将一些数字从 Windows 10 中的 python 发送到 arduino uno 作为一个简单的测试 我只想通过发送 2 来打开 LED 并通过从命令提示符发送 4 来关闭 LED 尽管我希望最终能够将
  • 如何在 Windows 上获取 Arduino 草图的汇编语言列表?

    我希望能够看到我的 Arduino 草图的汇编语言列表 我怎样才能实现这个目标 Update 我正在 Windows 机器上运行 Arduino 软件 一种方法是使用avr objdump on the elf构建创建的文件 例如 在 OS
  • 通过iPhone音频插孔读取数据

    我正在寻找一种方法来读取通过 iPhone 的音频插孔从 Arduino 发送的原始数据 我搜索了很多并发现this https github com sanjibahmad Is Headphone Plugged In tree mas
  • 编译器:如果条件始终为真/假怎么办

    我想到了条件和编译器 我正在为 Arduino 编写一个应用程序 因此我需要该应用程序尽可能快 在我的代码中我有这个 define DEBUG false if DEBUG String pinName pinName Pin pinNam
  • 当我启动程序时,Arduino IDE (Win10) 崩溃

    我的 Arduino IDE Win10 上的版本为 1 8 12 在启动时崩溃 运行arduino debug exe我收到此错误消息 C Program Files x86 Arduino gt arduino debug exe Se
  • 在链接时合并全局数组/从多个编译单元填充全局数组

    我想定义一系列的东西 比如事件处理程序 的内容 该数组在编译时是完全已知的 但定义在 多个编译单元 分布在多个库中 至少在最终 静态 链接之前是相当解耦的 我想要 也保持这种方式 因此添加或删除编译单元将 还可以自动管理事件处理程序 而无需
  • 如何在 Arduino 中将 char 变量作为数字打印到串行端口?

    我正在使用 Arduino Uno 我正在从 EEPROM 读取一个字节值并将该值存储在类型变量中char 1 字节 我想将变量的值作为数字 而不是相应的 ASCII 代码 打印到串行监视器 例如考虑char val 5 我想查看串行监视器
  • 无法将 minicom 的输出保存到文件中

    当我使用Minicom从串口捕获数据时 我需要将大数据保存到一个文件中 名为minicom cap 但是 如果我按 Ctrl A 和 L 来捕获文件 则失败 没有创建文件 minicom cap之前并不存在 我的下载目录已正确创建 我的操作

随机推荐

  • SpringBoot关键面试题

    什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置 properties或yml文件 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化maven
  • 如何使用 scp 将文件夹从远程复制到本地?

    问 如何使用 scp 将文件夹从远程复制到本地主机 我使用 ssh 登录到我的服务器 然后 我想将远程文件夹 foo 复制到本地 home user Desktop 我如何实现这一目标 答1 huntsbot com 高效赚钱 自由工作 s
  • Qt中关于emit和moc_*.cpp的自动生成

    关于Qt中的emit 函数 直接查看emit的定义 define emit 可以发现emit仅仅是个宏定义符号 编译器宏替换后就是个 空白 根本就不会编译它 所以代码里完全可以去掉这个符号 反之也可以在任何代码前加上这个符号 如这行代码em
  • C语言详解——枚举类型

    在程序中 可能需要为某些整数定义一个别名 我们可以利用预处理指令 define来完成这项工作 您的代码可能是 define MON 1 define TUE 2 define WED 3 define THU 4 define FRI 5
  • 说一下反三角函数atan等的角度计算值,弧度制和角度制

    我们平时在进行数学计算是 往往会用到三角函数和反三角函数 最常用的反三角函数大概就是atan了 因为这个相当于给定两点之间直线的夹角了 1 正切函数图像 这时正切函数图像 高中的我们就应该知道 正切函数是周期函数 即同一个值 有很多角度值对
  • html 中shadow DOM 的使用

    什么是shadow DOM An important aspect of web components is encapsulation being able to keep the markup structure style and b
  • antV/g2的使用

    antV g2 特点 以数据驱动 安装 npm instal antv g2 使用 准备一个容器 div div 执行代码 1 引入 import
  • 如何使用C ++以编程方式在Word文档中使用目录?

    目录 TOC 是Word文档的重要组成部分 它提供了文档内容的概述 并允许您快速导航到所需的部分 您可能会遇到需要以编程方式从Word文档中添加 提取 更新或删除目录的情况 为此 本文将教您如何使用C 处理Word文件中的目录 让我们探索以
  • D. Permutation Restoration(优先队列+贪心)

    Problem D Codeforces include
  • 学习Flask之分页插件flask_bootstrap

    这次分页功能 主要是依靠 Flask Bootstrap 首先也是下载flask bootstrap pip install flask bootstrap 安装完后可以观察里面的文件夹 里面其实还有nav 导航 form 表单 pagin
  • linux内核调试环境的搭建(使用qemu)

    这里说明下 本人调试的内核版本是2 6 11 12 为什么去调试这么 古老 的版本 原因不多说了 你手头也许正拿着ULK3 而它针对的内核版本正是2 6 11 有比这更好的理由吗 而且这个版本不算旧 已不算新 我认为还算不错 想想当下还有如
  • 我的计算机管理里面没有家庭组,Win10控制面板没有家庭组怎么解决?

    我们经常在使用电脑的时候经常会用到家庭组这个功能 家庭组使用起来非常方便的功能 但是最近很多的用户们反映Win10家庭组功能在控制面板找不到了 这个问题我们要怎么解决呢 下面小编为大家带来详细的解决教程介绍 快来看看吧 Win10控制面板没
  • 七牛云 composer 文件上传、删除、请除缓存操作

    class QiniuUp extends ModelBasic private AccessKey private SecretKey private bucket private auth function construct pare
  • DBCP连接池参数

    DBCP连接池参数说明如下 1 maxActive 10 表示并发情况下最大可从连接池中获取的连接数 2 maxIdle 5 如果在并发时达到了maxActive 10 那么连接池就必须从数据库中获取10个连接来供应用程序使用 当应用程序关
  • [1187]win环境2026, SSL connection error: unknown error number

    先贴上详细的报错信息 PS D test orchard liang gt python manage py sqlmigrate app 0001 Traceback most recent call last File D Python
  • python复习

    python复习 文章目录 python复习 一 Python基础笔试题 1 什么是变量 2 python和CPython是什么关系 3 如何生成一个整数序列 4 表达式与语句的主要区别是什么 5 Python的基础数据类型有哪些 6 在P
  • [RK3568][Android11]内核Oops日志分析

    文章目录 一 什么是内核oops 二 内核oops信息 三 工具调试内核oops 3 1 gdb list command 3 2 addr2line 3 3 objdump 一 什么是内核oops Linux内核在发生kernel pan
  • 如何在Linux下开发

    ctrl alt t打开命令行 输入vi 文件名 c 一 VI的使用 VI有两种模式 一种是命令行模式 一种是输入模式 命令行模式 这个是默认模式 VI之后就是这个模式 如果我们要从输入模式回到命令行模式 按下esc 待INSERT消失 我
  • 解决ubuntu不能远程连接

    1 查看当前是否安装了ssh server服务 dpkg l grep ssh 2 安装ssh server服务 sudo apt get install openssh server
  • 将你的STM32搞成Arduino(一)

    接触STM32有一年半了从刚开是的懵懂无知到现在的拉个库就是干 我慢慢的发现STM3功能的强大已经配套环境的完整程序 他不像是51单片机那样已经被intel抛弃 之后也没人出一个官方的库 一切都是纯生的需要自己搭建 STM32标准库已经为你