STM32
直播中

李斌

7年用户 1431经验值
私信 关注
[问答]

请问STM32Duino开发环境是怎么配置的?

请问STM32Duino开发环境是怎么配置的?

回帖(1)

王冬梅

2021-9-29 15:43:05
   STM32Duino:突然心血来潮,想到STM32Duino这个东西,就是在Arduino IDE 上开发STM32的板子。以前遇到过这种开发模式,但是没有亲自上手设置过。搞了大半天,查看了好多的文档和视频,看别人都是设置成功了,但是我却搞不赢,不过最后还是鼓捣成功了(在开发环境的配置上的从来没有一帆风顺过)
踩坑:我就索性自己再写一个流程,再总结一下里面的坑!
  
  你在看我这篇文章之前可以通读一遍再操作!!
本文仅发布在CSDN 青云双青 和个人博客,其他地方均为搬运
  需要准备的

  


  • STM32F103RCT6最小系统一个(需要可设置BOOT0/1引脚电平模式)
  • ST-Link(带有SWCLK/SWDIO口) 下载器一个,有那种USB口的或者ST官方的那种大的都可以
  • 数据线一根,我用的是Mini USB,给那个只能给STM32供电使用的那个口使用
  • Windows(Win10)操作系统电脑,已经安装好Arduino IDE 1.8.12和ST-Link的驱动
  • 支持STM32的硬件文件(支持STM32F1和F4的 )下载地址:Github原地址 网盘地址
  • 给STM32Duino的BootLoader 下载地址:Github原地址 网盘地址
  • 开发板管理器Arduino SAM Boards(需要在ArduinoIDE 里面安装)

  备选的,在有的步骤中需要用到

  


  • USB转TTL(CH340G、CP2102或者FT232都可以)
  • ST官方的FlashLoader烧录软件 下载链接
  • USB转TTL-CH340G驱动下载 下载地址

  0x01、方法一(程序直接烧录法)

  步骤1、下载STM32硬件支持文件,并复制到Arduino的安装路径下的hardware目录下

  将上面的STM32硬件文件下载并解压出来(这个是Github上的大佬整的,感谢大佬和其他提供技术支持的人)复制到Arduino的安装路径下,下面是文字说明
  文字演示
以我的Arduino的安装路径为例子,我的安装路径为:E:Program FileArduinoarduino-1.8.12,在这路径下面你可以看到你的arduino.exe这个文件,同时也可以看到我们放置的目标文件夹hardware,直接原封不动地复制到这里即可
  
  

  

内容说明
进到Arduino_STM3文件夹内,你可以看到
  [tr]项目说明[/tr]
drivers在里面的win文件夹下放的有用到的maple串口驱动安装文件(稍后安装)
STM32F1F1支持文件
STM32F4F4支持文件
tools里面有三种操作系统对应的烧录程序对应的文件夹,在win里面的stm32flsah.exe 可以提供烧录BootLoader使用(稍后说明)
结果
打开你的Arduino IDE,在工具>开发板XXX往下翻就可以看到有好多的STM32支持的板子类型,有STM32F1和F4shuo说明你已经添加成功!
  
  

  

  步骤2、去Arduino IDE安装Arduino SAM boards(对于STM32的Arduino支持扩展包)

  在网络良好的情况下操作(什么意思你懂的,记得开启全局模式哦)
在Arduino的首选项的附加开发板管理器网址中填入:
  https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json   保存,然后到工具>开发板XXX>开发板管理器,然后搜索SAM,选择默认的版本,点击安装,然后就是等待安装即可(网络良好的话其实挺快的)
  
  

  

如果你不具有良好的网络环境
  那么就下载这个文件,下载地址 其实就是我安装后复制给你一份,你只要把它放在特定的位置也是可以用滴
下载完成后解压,然后原封不动地复制到这个路径
  C:Users你的用户名AppDataLocalArduino15packages   内容说明
可能是一些支持串口或者ST-Link的编译工具之类的东西吧
结果

  

  

  步骤3、到Arduino IDE中,开始烧录Blink demo

  需要进行的操作

  方案A:软件端的设置(使用STLink下载)
  
   

  • 在示例中找到Blink 例程 并打开
  • 在工具>开发板XXX的下拉菜单中选择Generic STM32F103R series
  • 在variant中选择STM32F103RC(48KRAM 256KFlash)
  • 在Upload method中选择STLink

  
  硬件端的设置(接线)
  
   

  • 将STLink与STM32开发板连接(记得使用5V连接)
  • 给STM32额外供上电(如果你的STLink不能自己供电时使用)

   
    情况1
BOOT0 = 0,BOOT1 = 0
在这种情况下可以正常给板子下载进去程序,并且按复位键也没事儿,程序不会中断
   
   
    情况2
BOOT0 = 1,BOOT1 = 0
在这种情况下可以给板子下载进去程序,但是按下复位键后程序即停止执行,再次下载程序后才会运行
   
  
  下载动图演示
  
  

  

  

  

  

  

  

  

说明
  
   

  • PA8对应STM32的LED0,PE2对应STM32的LED1
  • 为什么会产生不同的接法出现不同的现象,你可以去了解一下STM32的BOOT模式的相关文章
  • 这种烧录方法不能让STM32打印数据,就是Serila.print()函数不能使用,没有办法解决么?有的,继续往后看

  
  方案B:软件端的设置(使用CH340G烧录器下载)
  
   

  • 在示例中找到Blink 例程 并打开
  • 在工具>开发板XXX的下拉菜单中选择Generic STM32F103R series
  • 在variant中选择STM32F103RC(48KRAM 256KFlash)
  • 在Upload method中选择serial

  
  硬件端的设置(接线)
  
   

  • 插上CH340G烧录器,获得串口(在设备管理器中查看)
  • 如果没有引出的RX、TX引脚地话,那就得接到PA口的串口引脚上,接发如下图

  
  [tr]CH340G端单片机端[/tr]
GNDGND
5V5V
RXPA9(TX)
TXPA10(RX)
说明
  
   

  • 由于在我的测试中有这种情况下大概率载不进去程序的情况出现,可能是我的问题,但是你如果可以使用的话也可以采用串口下载
  • 同样也需要设置BOOT0/1的电平,但是都得看你自己鼓捣喽
  • 代码打开方法以及需要修改的地方同上操作

  
  总结

  


  • 方法一的操作虽然方便,但是有弊端和Bug,看情况使用
  • 个人能力有限,没有排查出来问题所在

  0x02、方法二(烧录BootLoader)

  步骤4、先安装STM32的新的串口驱动

  你要问我这个串口是啥,我也不清楚,只是知道多了一个叫maple的串口
  你需要了解的
  
   

  • 这个串口不是PA8、PA9的那种串口,而是从STM32F103RC板子上带的那个供电的Mini USB生成的串口
  • 这个串口的出现需要安装驱动,并且没有烧录Bootloader的话不会出现
  • 更多的东西可以在这里了解 点击链接查看

  
  maple串口驱动的安装
  打开你在步骤一复制的文件夹,进到drives文件夹内,再进到win文件夹内,你就能看到
  
  

  

接下来以管理员的方式运行那两个bat批处理文件,等待出现success字样即可
  
  

  

然后,这个文件夹就会变成这个样子
  
  

  

  接着下一步!
  方案A、使用软件烧录对应的Bootloader文件

  接线(CH340G串口烧录)
  
   

  • 参考上面的步骤三的方案B的CH340G烧录接线法接即可
  • 安装ST官方的FlashLoader工具(在文章开始有安装包链接)
  • BOOT0 = 1,BOOT1 = 0,一定要这样接哦,要不软件不会识别的,然后在烧录完成后恢复默认

  
  烧录
  


  • 烧录的话,烧录什么呢?这就需要用到还是那位Github上的大佬提供的BootLoader文件,同样,在文章开始有下载地址
  • 这个BootLoader文件夹放在哪里都可以
  • 烧录的文件在binarie文件夹中,打开会有好多的,选择哪个呢?

  以C8T6和RCT6为例
  [tr]项目对应板子[/tr]
gd32f1_generic_boot20_pc13.binSTM32C8T6
generic_boot20_pa1_button_pa8.binSTM32RCT6



  • 这个是怎么看出来的呢?应该是根据LED0连接的引脚判断的

  烧录动图演示
  
  

  

  

  

  

  

  

  

  注意
  
   

  • 烧录完成后记得把BOOT0 = 0,BOOT1 = 0

  
  结果
重启Arduino IDE,拔掉CH340G串口下载器,插上我们准备的Mini USB,然后你就会在串口出看到Maple MIni
Oh~~ 出现了这个,你以后就可以只用一根线随便下载喽!!!
  
  

  

  方案B、使用命令烧录对应的Bootloader文件

  接线同上
  
   

  • 注意在烧录时BOOT1 = 0,BOOT 0 =1

  
  烧录
  
   

  • 烧录的文件跟上面一样,但是这次方式变了,使用文件中自带的烧录程序stm32flash.exe进行烧录

  
  查看步骤一的STM32_Arduino的tools文件夹下的win文件夹
  你会看到

  

  

注意
  
   

  • 记得把需要烧录的bin文件复制到这个地方,方便查找·

  
  然后在cmd命令行中打开这个位置
  查看相关的信息的指令
  stm32flash.exe COM14(输入识别到的对应的串口,然后就能看到相关的芯片信息)   
  

  

  要使用这行指令烧录哦
  stm32flash.exe -w generic_boot20_pa1_button_pa8.bin -v -g 0x0 COM14   知道更多指令的相关含义,执行帮助命令查看
  stm32flash.exe -help(查看帮助命令)   接下来动图演示
  
  

  

  

  

  

  

  

  

  


  • 剩下的操作与上面就一样了,转换BOOT的电平,然后去Arduino IDE看看有没有maple Mini出现
  • 记得在上传代码的时候把Upload method修改成STM32duino bootloader,因为现在你已经烧录了bootloader了,可以使用了

  总结

  


  • 方案二的操作可以使用串口打印,并且下载程序的话只需要一跟Mini线即可
  • 这种方法适用于市面上的成品板子,可以设置BOOT电平和留有maple的串口,自己打的板子可能需要飞线或者查找相关的资料解决这个问题
  • 其实这个maple端口是跟STM32的引脚相连的,我就不再深究是哪两个了
  • 这种操作可以使STM32兼容大多数的Arduino的库,具体问题的话具体再说

  0x03、下载一个代码看看效果

  这里写一个LED闪烁和串口打印数字的代码
其实在STM32Duino中不用太在意波特率,因为都能打印
代码下载过程中板子会重启,你可以听到两次设备识别音
  
  

  

  

  

  

  

  

  

  0x04、剩下的给你探索

  相信你选择使用STM32Duino可能是想自己玩玩或者想借助STM32的优势让自己的代码运行的更好
我们就以STM32C8T6和rduino UNO R3做个比较
  [tr]项目STM32C8T6Arduino UNO R3[/tr]
晶振频率72M16M
价格¥6-13¥13-35
可扩展性优(引脚多,精度高)
   

  • 这篇文章算是我的踩坑记录,有些问题我也没整明白,或者不详细,或者有错误。如果你看到的话可以评论哦
  • 更加详细的说明请移步 Github
  • 怎么回退,直接插上ST-Link下载一个STM32的示例代码就都回来了

  
  




举报

更多回帖

发帖
×
20
完善资料,
赚取积分