STM32替换Arduino直通车


众所周知,用Arduino进行开发简单快捷,一个项目能很快的做好,而Arduino相比STM32,贵且性价比也很低,Arduino Uno可用的针脚也少得可怜,怎么办?换做STM32吧!STM32高性能,STM32的最小系统版价格很低,对我这种穷学生来说是福利啊!于是我兴致勃勃的淘了STM32的最小系统版准备入坑STM32。

可接下来我就要下载各种各样的软件进行编程,烧录,写个最简单的Blink程序都非常麻烦,折腾我一天。

要是能像Arduino一样简单方便快捷就好了,怎么办呢?那么现在正式开始教程!



  1. STM32最小系统板,配套数据线,20元以下的就可以了。

  2. Arduino(不是必须,但如果你不想买USB转TTL就可以把Arduino用USB转TTL)或者USB转TTL模块一个。 

  3. 跳线数根。


1、配置Arduino并下载所需的文件


首先我们下载这个人开源的Arduino-STM32项目
https://github.com/rogerclarkmelbourne


下载下来并解压



Arduino快捷方式右键打开文件所在位置,将解压下来的文件移动到如下图所示目录,并将文件夹改名为STM32



接下来是重点,打开Arduino,进入开发板管理器,安装如下图所示的开发板文件




安装完后选择你的STM32开发板型号

Arduino新建一个空文件,点击左上角的验证按钮,看看能不能编译,如果可以就继续


2、为STM32下载和烧写Bootloader


接下来我们需要用USB转TTL给STM32烧录Bootloader,首先我们要下载Bootloader,进入刚刚那个人的另一个开源项目,这个地址:
https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries
选择你的STM32最小系统板的D2所对应的接口名字的文件下载(一定要选择对应的) 


比如我这里找到开发板的原理图,D1是通电后的指示灯,D2是另外的LED灯,它连接了PC13针脚


那么我就选择这个文件下载


下载完成后,我们要烧录这个文件到STM32里,我们先下载所需要的软件,叫做FlyMcu,下载地址:https://www.lanzous.com/ib3shba



然后,这里我用Arduino代替USB转TTL进行烧录,降低额外的成本。

需要注意的是,STM32的BOOT0要接上VCC高电平,BOOT1要接上GND低电平,然后按STM32版上的REST按钮使之重启进入ISP下载模式,我们才可以烧录Bootloader进去(重要)。 

单片机的组成、工作原理、分类、特点以及发展趋势为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。




然后我们还可以看到,PA9是TX,PA10是RX。STM32的TX连接Arduino的RX(0接口),STM32的RX连接Aruidno的TX(1接口)。 



紧接着,如果要把Arduino用作USB转TTL一定要把Arudino的RST接口一直连接Arduino的GND!Arduino连接电脑,STM32也要供电!

OK,恭喜你来到了这一步,接下来我们要用FlyMcu烧录程序,但FlyMcu无法烧录.bin文件(可以打开但无法烧录),这时我们要需要把刚刚下载下来的Bootloader从.bin文件转换成.hex文件进行烧录! 


所以我们还需要一个软件,来完成这个操作,叫做BinToHex。
下载地址:
https://www.lanzous.com/ib3shcb



选择我们刚刚下载的bootloader文件,然后选择文件夹导出成.hex文件,随便取个名字。 





这时我们还需要很重要的一步,将生成的.hex文件用文本编辑器打开,将第一行的:020000040000FA更改成:020000040800F2(非常非常重要)




紧接着保存退出,我们打开FlyMcu,选择已经修改好的.hex文件,点击开始编程



注意,如果长时间无法连接,请按STM32版上的RST按钮或者断电重试!
如果烧录Bootloader成功,并且STM32版是通过USB连接电脑供电的话,你的电脑会提示你USB设备异常,这是没用安装正确的驱动造成的,我们打开设备管理器看一下



3,为电脑安装连接STM32的驱动

解决这个问题,接下来我们安装驱动程序。
进入我们之前下载的文件目录,点击下图所示的.bat文件安装驱动,一定要要管理员身份运行



success就是成功了,我们按STM32上的RST键,随着电脑的提示音,这时我们再看看设备管理器


我们发现多了一个串口,如果不行就重启电脑试一试。

最后我们打开Aruidno IDE,选择上传程序的模式,如下图

然后写入一个Blink程序

void setup() { pinMode(PC14, OUTPUT); } void loop() { digitalWrite(PC14, HIGH); delay(50); digitalWrite(PC14, LOW); delay(50); }


随着红色的“Done!”和电脑一声USB提示,STM32自动重启,然后连接在STM32PC14接口上的LED开始闪烁了!
以后我们不需要额外的硬件,直接用数据线连接STM32最小系统版和电脑,并打开Arduino IDE就可以像玩Arduino一样简单方便快捷了!


教程结束,如果博文有错误或者有疑问,欢迎评论来告诉我,谢谢!

来源:https://blog.csdn.net/hk_shao/article/details/79319548

内部中断是指单片机内部的功能模块产生中断信号,只要是单片机内部在CPU外围能独立工作的功能模块都会提供中断功能,常见的内部中断类型有时钟timer、串口UART、模数转换ADC等。内部中断的工作流程和外部中断没太多区别,只是中断请求信号是在单片机内部进行传输,中断信号不是管脚上的电平状态,而是一个寄存器里面的相应标志位,通常当某个内部中断产生中断请求时就会将相应标志位置为1,CPU响应中断时将这个标志位清0。

生成海报
点赞 0

创世纪

单片机学习,电子制作DIY学习与分享,各种新鲜的,有趣的,好玩的,一起来吧!机器人、无人机、树莓派/Raspberry Pi、arduino、极客、创客等

相关推荐

Esp8266多功能点阵时钟(开源)

原文地址 多功能点阵时钟 更新 点阵时钟立创PCB工程已经完成,开源地址为: ESP8266多功能点阵时钟 - PCB制作分享 简介 很早就了解ESP8266了,当时也用这个搞过一些小demo,一直也没有想

arduino与激光雷达?

先上图片: 一般来说,这样子的激光雷达都是与电脑或者树莓派等等配合使用的,但是暂时没有时间去捣鼓slam算法相关的东西,那有没有方法把它应用在其他简单的项目中呢? 。。。。我