STM32
登录
直播中
好名字
10年用户
953经验值
擅长:可编程逻辑
私信
关注
[问答]
如何在STM32上去使用arduino的方法来进行编程呢
开启该帖子的消息推送
STM32
Arduino
编程
Arduino的优缺点有哪些?
如何在
STM32
上去使用arduino的方法来进行编程呢?
回帖
(1)
成尔秩
2021-12-15 10:38:31
Arduino自从面世以来,便迅速在电子爱好者的圈子中流行起来。Arduino编程简单,并且周边配件也很丰富。但是Arduino有一个比较严重的问题,就是性价比不高。最常见的Uno和Pro Mini,一般使用328p,主频只有35MHz,IO口也很有限,但是价格却比较高。而性能比较好的片子(例如意法半导体的STM32F103xx),虽然性能比较好(72MHz主频,丰富的外设(SPI、IIC、多个USART、CAN等),并且片上存储也高达512k),但是编程却比较复杂。往往为了点一个LED,还要进行各种初始化、时钟配置操作。在这种片子上编程,往往还要求用户对硬件了解比较深刻。所以,如果能够将STM32的高性能(相对)和arduino的用户友好结合起来,就再好不过了。而实际上,Maple早就做过这个工作了,针对STM32单独做了一套库,来兼容arduino的库。下面就简单说一下,如何实现在STM32上,使用arduino的方法来编程。
了解我们要使用的工具
Bootloader文件:来自于
这里
;
USB转串口(本例中使用的是CP2102,其他的设备可能也可以使用,但是并未经过测试);
STM32flash,可以从
这里
找到适合你的操作系统的烧写器(我的操作系统是Linux,所以我使用linux/stm32flash/stm32flash,不过我后来在AUR中发现了stm32flash,于是就安装了AUR中的stm32flash
如果你使用Windows或者Mac OS,就选择适合你的工具,另外最好将Bootloader和这个放到同一个目录中(如果你在Linux上使用软件管理器安装的,请忽略这一点);
硬件库,来自于
Arduino_STM32的git
(以下简称官方git)。
向STM32烧写Bootloader
引言
arduino起初主要是建立在AVR单片机上,arduino的简易编程,实际上也是建立在一套库和Bootloader之上。要想在STM32上用这种方式编程,第一步便是向STM32烧写Bootloader。
下载Bootloader
我们从
这里
来找我们需要的Bootloader。本身这个Bootloader需要自行编译,但是实际山作者已经帮我们编译好了,我们只需要从binaries目录中找到我们需要的Bootloader即可。在我们手头上的STM32板子上,一般至少有一个用户LED,我们需要用一个LED来作为状态指示灯(这也是被要求的),而不同的板子,这个LED也不同,所以我们需要下载的Bootloader也不尽相同。我的板子上的LED引脚是PC13,所以我下载了generic_boot20_pc13.bin(请注意这里一定要根据你自己的情况选择Bootloader,否则可能出现问题)。
备注:stm32f103的引导选择:
– BOOT1=x BOOT0=0从用户闪存启动,这是正常的工作模式。(用户使用)
– BOOT1=0 BOOT0=1从系统存储器启动,这种模式启动的程序功能由厂家设置。
– BOOT1=1 BOOT0=1从内置SRAM启动,这种模式可以用于调试。
准备烧写器
按照
上面的方法
找到适合我们自己的烧写器,同时也要准备好下载器。将刚刚下载的Bootloader和烧写器(stm32flash)放在我么容易找到的目录中(最好在同一个目录中),然后打开终端(或这Windows的命令提示符),进入到刚刚的目录。
连接硬件
STM32支持3种引导方式,Flash、SRAM和ISP。通常情况下,我们使用Flash比较多,这种方式通过下载器(JLink、STLink等)将代码放到Flash中,再
– 然后链接硬件,我手头上的是C8T6,这个片子的Tx和Rx分别对应引脚PA9和PA10。连接方式参见下面的表格
[tr]STM32串口下载器[/tr]
PA9
Rx
PA10
Tx
Vcc
(自行准备电源)
GND
GND
开始烧写Bootloader
还记得我们刚才准备好的文件吗?就是那个stm32flash(请注意可能我们的操作系统不同,所以下载的东西也可能不同)和我们刚刚从github上下载的Bootloader(需要再确认一下,下载的Bootloader是否是正确的),然后打开终端(在Windows上称为“命令提示符”,打开的方式是“Win键+r” => “输入cmd”,然后就会出现一个黑框),进入上述两个文件所在目录(所以说最好把上面两个文件放到同一个目录中(主要针对Windows用户),然后把我们的USB转串口模块链接到电脑上,执行
1
stm32flash.exe -w generic_boot20_pc13.bin -v -g 0x0 COM14
在上面的命令中,-w 表示写入,后面跟着要写入的文件名,-v 参数是指校验写入,这个指令可加可不加,-g 参数指开始写入的地址(这个地址是指片子上的地址),同样默认情况下就是从0x0开始写入,所以这个参数也可有可无。最后的COM14是你的USB转串口在你的电脑上的名字,通常是COM开头。在Linux上往往是“/dev/tty*”。
由于各种原因,上述命令很可能不能正确执行,这时候就输入
1
stm32flash.exe -help
来获取帮助。
我相信Linux用户会自行解决各种问题的。
最终运行效果大概如下
后续工作
截止到现在,我们已经完成了Bootloader的烧写。下面我们把STM32上面所有的线拔下来,并断其电,然后设置引导方式为Flash(把Boot0和Boot1跳线分别设置为0和0)。然后再插上USB,上电。如果一切正常,那么这时候你就会看到板子上有一个小灯在闪烁(实际上在刚插上电的时候,小灯会快速闪烁6下,然后就比较慢地闪烁)。如果你使用Windows,那么在设备管理器中你可以看到一个名为maple的未识别设备,如果在linux上,通过lsu***命令,你可以看到一个ID为1eaf:000x(“x”截止到现在,我们已经完成了Bootloader的烧写。下面我们把STM32上面所有的线拔下来,并断其电,然后设置引导方式为Flash(把Boot0和Boot1跳线分别设置为0和0)。然后再插上USB,上电。如果一切正常,那么这时候你就会看到板子上有一个小灯在闪烁(实际上在刚插上电的时候,小灯会快速闪烁6下,然后就比较慢地闪烁)。如果你使用Windows,那么在设备管理器中你可以看到一个名为maple的未识别设备,如果在linux上,通过lsu***命令,你可以看到一个ID为1eaf:000x(“x”处可能是3或4),而这个设备的设备名却是空白的。
实际上这时候我们已经完成了板子上的所有操作,下面就是配置电脑了。由于我们在电脑上看到了未知的设备,所以我们需要为其安装驱动程序(主要针对Windows)。打开在第一节中提到的硬件库,下载之。其中有一个名为“driver”的文件夹,其中就是相应的驱动,打开之。运行其中的“install_driver.bat”。(关于Windows上的驱动安装,我只能帮到这里了,因为我并没有Windows,如果你在这一步遇到了什么问题,可以
给我发邮件
。
下面是linux上面的操作,在Linux上,我们不需要安装驱动,只需要添加相应的rules就可以了。在刚刚提到的硬件库中,找到tools文件夹,进入“linux”目录,运行其中的install.sh,即可自动添加相应的rules,这一步需要以sudo运行(或者root)。
然后我们需要安装dfu-util,在archlinux的官方仓库中,已经有了编译好的dfu-util,只需要直接安装即可。如果你的发行版的软件仓库中没有dfu-util,可以使用硬件库中的dfu-util,它在tools/linux中。
配置arduino
下一步就是配置我们的arduino环境,步骤很简单。把刚刚我们下载的硬件库,拷贝到arduino的sketch文件夹中。
在Windows上,这个文件夹位于“我的文档Arduino”中,而在Linux上,这个文件夹位于用户的home目录中。
尝鲜
打开arduino,如果上述配置正确的话,我们在tools->board中可以看到一些STM32的板子,如下图:
我们打开Blink,然后选择板子、RAM、时钟等,第一次我们不需要选择端口,直接下载。
如果出现上面的图,就说明成功下载。
Arduino自从面世以来,便迅速在电子爱好者的圈子中流行起来。Arduino编程简单,并且周边配件也很丰富。但是Arduino有一个比较严重的问题,就是性价比不高。最常见的Uno和Pro Mini,一般使用328p,主频只有35MHz,IO口也很有限,但是价格却比较高。而性能比较好的片子(例如意法半导体的STM32F103xx),虽然性能比较好(72MHz主频,丰富的外设(SPI、IIC、多个USART、CAN等),并且片上存储也高达512k),但是编程却比较复杂。往往为了点一个LED,还要进行各种初始化、时钟配置操作。在这种片子上编程,往往还要求用户对硬件了解比较深刻。所以,如果能够将STM32的高性能(相对)和arduino的用户友好结合起来,就再好不过了。而实际上,Maple早就做过这个工作了,针对STM32单独做了一套库,来兼容arduino的库。下面就简单说一下,如何实现在STM32上,使用arduino的方法来编程。
了解我们要使用的工具
Bootloader文件:来自于
这里
;
USB转串口(本例中使用的是CP2102,其他的设备可能也可以使用,但是并未经过测试);
STM32flash,可以从
这里
找到适合你的操作系统的烧写器(我的操作系统是Linux,所以我使用linux/stm32flash/stm32flash,不过我后来在AUR中发现了stm32flash,于是就安装了AUR中的stm32flash
如果你使用Windows或者Mac OS,就选择适合你的工具,另外最好将Bootloader和这个放到同一个目录中(如果你在Linux上使用软件管理器安装的,请忽略这一点);
硬件库,来自于
Arduino_STM32的git
(以下简称官方git)。
向STM32烧写Bootloader
引言
arduino起初主要是建立在AVR单片机上,arduino的简易编程,实际上也是建立在一套库和Bootloader之上。要想在STM32上用这种方式编程,第一步便是向STM32烧写Bootloader。
下载Bootloader
我们从
这里
来找我们需要的Bootloader。本身这个Bootloader需要自行编译,但是实际山作者已经帮我们编译好了,我们只需要从binaries目录中找到我们需要的Bootloader即可。在我们手头上的STM32板子上,一般至少有一个用户LED,我们需要用一个LED来作为状态指示灯(这也是被要求的),而不同的板子,这个LED也不同,所以我们需要下载的Bootloader也不尽相同。我的板子上的LED引脚是PC13,所以我下载了generic_boot20_pc13.bin(请注意这里一定要根据你自己的情况选择Bootloader,否则可能出现问题)。
备注:stm32f103的引导选择:
– BOOT1=x BOOT0=0从用户闪存启动,这是正常的工作模式。(用户使用)
– BOOT1=0 BOOT0=1从系统存储器启动,这种模式启动的程序功能由厂家设置。
– BOOT1=1 BOOT0=1从内置SRAM启动,这种模式可以用于调试。
准备烧写器
按照
上面的方法
找到适合我们自己的烧写器,同时也要准备好下载器。将刚刚下载的Bootloader和烧写器(stm32flash)放在我么容易找到的目录中(最好在同一个目录中),然后打开终端(或这Windows的命令提示符),进入到刚刚的目录。
连接硬件
STM32支持3种引导方式,Flash、SRAM和ISP。通常情况下,我们使用Flash比较多,这种方式通过下载器(JLink、STLink等)将代码放到Flash中,再
– 然后链接硬件,我手头上的是C8T6,这个片子的Tx和Rx分别对应引脚PA9和PA10。连接方式参见下面的表格
[tr]STM32串口下载器[/tr]
PA9
Rx
PA10
Tx
Vcc
(自行准备电源)
GND
GND
开始烧写Bootloader
还记得我们刚才准备好的文件吗?就是那个stm32flash(请注意可能我们的操作系统不同,所以下载的东西也可能不同)和我们刚刚从github上下载的Bootloader(需要再确认一下,下载的Bootloader是否是正确的),然后打开终端(在Windows上称为“命令提示符”,打开的方式是“Win键+r” => “输入cmd”,然后就会出现一个黑框),进入上述两个文件所在目录(所以说最好把上面两个文件放到同一个目录中(主要针对Windows用户),然后把我们的USB转串口模块链接到电脑上,执行
1
stm32flash.exe -w generic_boot20_pc13.bin -v -g 0x0 COM14
在上面的命令中,-w 表示写入,后面跟着要写入的文件名,-v 参数是指校验写入,这个指令可加可不加,-g 参数指开始写入的地址(这个地址是指片子上的地址),同样默认情况下就是从0x0开始写入,所以这个参数也可有可无。最后的COM14是你的USB转串口在你的电脑上的名字,通常是COM开头。在Linux上往往是“/dev/tty*”。
由于各种原因,上述命令很可能不能正确执行,这时候就输入
1
stm32flash.exe -help
来获取帮助。
我相信Linux用户会自行解决各种问题的。
最终运行效果大概如下
后续工作
截止到现在,我们已经完成了Bootloader的烧写。下面我们把STM32上面所有的线拔下来,并断其电,然后设置引导方式为Flash(把Boot0和Boot1跳线分别设置为0和0)。然后再插上USB,上电。如果一切正常,那么这时候你就会看到板子上有一个小灯在闪烁(实际上在刚插上电的时候,小灯会快速闪烁6下,然后就比较慢地闪烁)。如果你使用Windows,那么在设备管理器中你可以看到一个名为maple的未识别设备,如果在linux上,通过lsu***命令,你可以看到一个ID为1eaf:000x(“x”截止到现在,我们已经完成了Bootloader的烧写。下面我们把STM32上面所有的线拔下来,并断其电,然后设置引导方式为Flash(把Boot0和Boot1跳线分别设置为0和0)。然后再插上USB,上电。如果一切正常,那么这时候你就会看到板子上有一个小灯在闪烁(实际上在刚插上电的时候,小灯会快速闪烁6下,然后就比较慢地闪烁)。如果你使用Windows,那么在设备管理器中你可以看到一个名为maple的未识别设备,如果在linux上,通过lsu***命令,你可以看到一个ID为1eaf:000x(“x”处可能是3或4),而这个设备的设备名却是空白的。
实际上这时候我们已经完成了板子上的所有操作,下面就是配置电脑了。由于我们在电脑上看到了未知的设备,所以我们需要为其安装驱动程序(主要针对Windows)。打开在第一节中提到的硬件库,下载之。其中有一个名为“driver”的文件夹,其中就是相应的驱动,打开之。运行其中的“install_driver.bat”。(关于Windows上的驱动安装,我只能帮到这里了,因为我并没有Windows,如果你在这一步遇到了什么问题,可以
给我发邮件
。
下面是linux上面的操作,在Linux上,我们不需要安装驱动,只需要添加相应的rules就可以了。在刚刚提到的硬件库中,找到tools文件夹,进入“linux”目录,运行其中的install.sh,即可自动添加相应的rules,这一步需要以sudo运行(或者root)。
然后我们需要安装dfu-util,在archlinux的官方仓库中,已经有了编译好的dfu-util,只需要直接安装即可。如果你的发行版的软件仓库中没有dfu-util,可以使用硬件库中的dfu-util,它在tools/linux中。
配置arduino
下一步就是配置我们的arduino环境,步骤很简单。把刚刚我们下载的硬件库,拷贝到arduino的sketch文件夹中。
在Windows上,这个文件夹位于“我的文档Arduino”中,而在Linux上,这个文件夹位于用户的home目录中。
尝鲜
打开arduino,如果上述配置正确的话,我们在tools->board中可以看到一些STM32的板子,如下图:
我们打开Blink,然后选择板子、RAM、时钟等,第一次我们不需要选择端口,直接下载。
如果出现上面的图,就说明成功下载。
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
Arduino
编程
Arduino
是什么?如何对
Arduino
进行
编程
呢
2021-12-08
1766
如
何在
stm32
芯片
上去
实现MBD设计
呢
2021-11-19
1683
如
何在
SimpleFOC
上去
移植
STM32
呢
2022-02-10
2434
在PCB板上对5000个esp8266-07芯片
进行
编程
的最快
方法
是什么?
2023-05-29
409
如
何在
stm32
上去
实现IAP功能
呢
2021-09-26
1207
怎样通过
Arduino
IDE对
Arduino
UNO
进行
编程
呢
2022-01-24
1582
Arduino
配置esp32失败是为什么?怎么解决?
2024-06-18
1553
有什么好的
方法来
实现对某个信号的延时吗?
2019-09-19
3195
Arduino
配置esp32失败怎么解决?
2023-02-15
527
stm32
怎么通过硬件仿真的
方法来
找错?
2016-09-11
7401
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分