STM32如何使用arduino_ide进行开发
本帖最后由 正点原子 于 2022-1-7 17:42 编辑以下文章来源于:公众号:开源电子网,读取更多技术文章,请扫码关注
STM32如何使用arduino_ide进行开发
很多朋友问到,我不懂硬件,不懂寄存器操作,C语言也不是很会用,能写STM32单片机代码吗?其实还是有小路子的,用Arduino_IDE上位机软件,借助Arduino的库,使用C++/C语言编写STM32单片机代码。
这里以正点原子MINI板为例子,使用Arduino_IDE完成点灯和串口打印。
废话不多说,开干!!
(本文配套工程文件,在底部下方供大家学习下载。)
第一步 先把Arduino_IDE软件安装好
Arduino_IDE,网址:https://www.arduino.cc/en/software
软件版本的话,最好还是1.8.x,由于arduino官网在国外,所以下载速度慢,这里大家可以查看一下我们提供的资料链接,里面有一个Arduino-1.8.13-windows.zip压缩包,解压即可使用。
第二步 从GitHub下载Arduino_STM32
rogerclarkmelbourne博主提供了这个库。
网址如下:
https://github.com/rogerclarkmelbourne/Arduino_STM32
这个也是属于外网,所以这个压缩包Arduino_STM32.zip也提供给大家。大家解压后,把Arduino_STM32文件夹拷贝或者移动到arduino-1.8.13/hardware即可。如下图所示。
第三步 打开Arduino_IDE,下载编译工具链
按照以下顺序执行即可。
(1)进入到开发管理器
(2)下载安装Arduino SAM Boards(32-bits ARM Cortex-M3)by Arduino开发板。
(这个过程需要一定时间,请耐心等待安装完成)
上图已经烧录好了,所以不需要重新安装。
注意:如果出现下载失败,基本上都是网络问题,最好选择白天下载,晚上外网网速比较慢。
第四步 硬件操作及烧录
1.硬件操作:把MINI板子上的BOOT0引脚连接到VCC,我们使用串口下载方式,然后按一下复位引脚进入等待烧录状态。
2.选择可用的Demo,操作如下:
(1)选中板子型号,GenericSTM32F103R series
(2)选中板子容量,STM32F103RC(48kRAM,256kFlash)
(3)选取参考demo,拿手好戏—点灯demo。
(4)根据原理图,修改一下代码。LED0用到PA8,LED1用到PD2。
(5)选择下载方式串口并选择对应的COM口。
(6)下载验证。
(注意:烧写成功后,会发现LED0和LED1同时闪烁,假如不把BOOT0引脚重新连接到GND,这个现象只会出现一次,所以要把BOOT0引脚连接到GND,这时候你如何进行复位,上电都是正常效果)
下载完成如下图:
可以看到我们已经成功实现了点灯和串口打印。从代码实现上看,十分简单,对于新手比较友好,而且有很多库给我们轻松调用,所以DIY也可以尝试一下这种开发方式。
不过,这个也有很大的缺点,不能调试以及不能goto definition,对于开发来说实属不便。
KEIL,Arduino_IDE,VScode,STM32CubeMX,STM32CubeIDE都是可以进行STM32开发,这些只是工具,各有各的好处,当然对于我们来说,选择一个适合的开发方式肯定有着事半功倍的效果,但最重要的还是掌握STM32的开发。
Platformio更方便快捷。 snowy 发表于 2021-10-27 18:14
Platformio更方便快捷。
同VSC+PIO 最近正好在整这个,rogerclarkmelbourne的库可以,但st有官方的库,比较糟糕的是必须用那个json来下载支持,由于墙的原因,那个文件老是下载失败。建议正点原子把装好st库的arduino打个包,方便后面的人。我是想自己打包,但没搞定,水平太烂,不好意思。 elecfun 发表于 2021-10-27 19:13
同VSC+PIO
是基于cubemx框架还是 Arduino框架? 搞不懂PIO,你们都能在PIO下载东西吗?反正我不行 最近用ESP32做了个项目,这个arduino官方的IDE是真难用,最好用是vs code + Platformio , 但是Platformio也有点不方便,比如要用到flash加密,目前还没什么好办法,另外Platformio也还不支持esp32 arduino 2.0版本。 Roger Clark 已经把 www.stm32duino.com 转交给了 ST 官方处理,所以这个repo基本就算是被废弃了。这个库总体还是挺不错的,有些小bug但不多。
与常见的STM32开发不太一样的一点是这个库是用Maple做底层操作的。所以如果要修改外设什么的,比如自己操配置DMA,得需要摸索Maple的使用方式。
这个库本身确实不支持调试,但是可以用Keil来载入ELF文件调试。因为没有用到Keil的编译功能,不需要买Keil,试用版就行。这里有我前给自己参考用的PDF。
现在版本的Arduino使用VScode或者arduino pro ide都是支持调试的了,也很方便。但是需要Arduino库在platform.txt文件里面配置好调试工具链。对于这个库也不能指望作者干这件事了。
solojimes 发表于 2021-10-27 21:34
是基于cubemx框架还是 Arduino框架?
支持多达7个框架
elecfun 发表于 2021-10-28 13:31
支持多达7个框架
这些我知道,就是问问前辈用的哪个,可以一起交流交流
页:
[1]