正点原子 发表于 2021-10-27 18:03:40

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的开发。

snowy 发表于 2021-10-27 18:14:55

Platformio更方便快捷。

elecfun 发表于 2021-10-27 19:13:13

snowy 发表于 2021-10-27 18:14
Platformio更方便快捷。

同VSC+PIO

powerlabor001 发表于 2021-10-27 20:56:48

最近正好在整这个,rogerclarkmelbourne的库可以,但st有官方的库,比较糟糕的是必须用那个json来下载支持,由于墙的原因,那个文件老是下载失败。建议正点原子把装好st库的arduino打个包,方便后面的人。我是想自己打包,但没搞定,水平太烂,不好意思。

solojimes 发表于 2021-10-27 21:34:39

elecfun 发表于 2021-10-27 19:13
同VSC+PIO

是基于cubemx框架还是 Arduino框架?

cantonguy 发表于 2021-10-27 22:01:38

搞不懂PIO,你们都能在PIO下载东西吗?反正我不行

yyts 发表于 2021-10-27 22:35:18

最近用ESP32做了个项目,这个arduino官方的IDE是真难用,最好用是vs code + Platformio , 但是Platformio也有点不方便,比如要用到flash加密,目前还没什么好办法,另外Platformio也还不支持esp32 arduino 2.0版本。

iamseer 发表于 2021-10-28 13:18:52

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文件里面配置好调试工具链。对于这个库也不能指望作者干这件事了。

elecfun 发表于 2021-10-28 13:31:36

solojimes 发表于 2021-10-27 21:34
是基于cubemx框架还是 Arduino框架?

支持多达7个框架

solojimes 发表于 2021-10-28 16:37:08

elecfun 发表于 2021-10-28 13:31
支持多达7个框架

这些我知道,就是问问前辈用的哪个,可以一起交流交流
页: [1]
查看完整版本: STM32如何使用arduino_ide进行开发