初试STM32基于Arduino的使用(第二集)

初试STM32基于Arduino的使用(第二集)_第1张图片

 

系列文章列表

一、初试STM32基于Arduino的使用

二、初试STM32基于Arduino的使用(第二集)

前两周成功将STM32F0 Demo Board用起来,以后不用花40+买Arduino板子了,真香啊。然后我就买了两块STM32的板子,型号是F103C6T6A,入手价16块。这样的成本拿来当玩具玩不心痛。

板子长这样

初试STM32基于Arduino的使用(第二集)_第2张图片

因为最近学到了怎样焊针脚,所以特意买了没焊的版本,然后买回来大显身手,效果如下。

初试STM32基于Arduino的使用(第二集)_第3张图片

虽然比不上各位大神,但焊点也算鲜亮,好几个也算是饱满。焊完之后,可给我牛得。。。可是,当我翻过来时,发现原来排针给我焊歪了,无语啊。不过呢,我倒是知道以后怎么样避免这样的问题。(请戳我在B站上的视频:小白的电烙铁使用入门_哔哩哔哩_bilibili)

初试STM32基于Arduino的使用(第二集)_第4张图片

好了,言归正传,这次买回来后,我当然是想让它能基于Arduino运行起来了。所以我做了些尝试。老实说,一开始我以为跟STM32F0差不多,所以想着试完就不写文章了。但是我发现还是花了不少时间,其中也有不少关于如何解决问题的思路,估计对大家接下来的一起探索有作用,所以还是整理一下,分享给你。

目录

一、添加STM32板子到Arduino

二、作死的尝试

1️⃣ 直接连接MicroUSB

2️⃣ 查看手册

3️⃣ UART方式连不上

4️⃣ 寻找正确的Boot Mode

三、正式试用

四、最后的疑惑


一、添加STM32板子到Arduino

如果你已经跟着我上篇文章做过了,那恭喜你,你不用再做了。直接在Arduino就能找到对应的板子了,所以我就不重复写了。有需要可以找回我之前的文章,就在本文开头的地方有链接。

初试STM32基于Arduino的使用(第二集)_第5张图片

二、作死的尝试

本来嘛,如果继续按之前的经验呢,我直接通过TX和RX直接连这块板子,就能少花2个时间了,但是我还是想试一试能不能直接用USB来下载代码。(其实直接看板子就知道,上面并没有CH341之类的芯片了,但我不死心。)

1️⃣ 直接连接MicroUSB

于是,我用MicroUSB插上板和电脑之后,它竟然有反应,可让我兴奋了好几秒。我想它是不是有另一种机制来达到UBS转TTL的功能。

初试STM32基于Arduino的使用(第二集)_第6张图片

但是我发现报了以上这样的问题。

我第一个反应当然是觉得驱动程序没有安装好啦,所以就搜索驱动,竟然连在官网都找不着对应的驱动。我找到的竟然是大量为它写驱动程序过程中的一些疑问(这已经让我起了疑心)。

2️⃣ 查看手册

照旧,有了之前的经验,我就上网找对应的手册。上面的确是写着支持USB的,有图为证。

初试STM32基于Arduino的使用(第二集)_第7张图片

还有专门的章节说明USB的相关信息。 

 初试STM32基于Arduino的使用(第二集)_第8张图片

3️⃣ UART方式连不上

查完手册后还是不得要领,所以我决定不作死了,走回旧路吧。但旧路也不好走。我再查了手册,找到这2行。

初试STM32基于Arduino的使用(第二集)_第9张图片

 知道PA9=TX,PA10=RX。所以愉快地直接连上3V3, GND, TX, RX到USB转TTL上,并接上电脑。

初试STM32基于Arduino的使用(第二集)_第10张图片

 这里要介绍一个工具,叫做STM32 Cube Programmer。打开这个工具,我们可以连接上板子,通过工具取得板子里的数据,从而确认板子是否正确连接。

初试STM32基于Arduino的使用(第二集)_第11张图片

 但是。。。我点击“Connect”之后,显示是这个错。

初试STM32基于Arduino的使用(第二集)_第12张图片

4️⃣ 寻找正确的Boot Mode

按上次所学习到的,我们要写代码进板子里,要进入“Bootloader”模式。目前这个情况看来,我们没有正确启动板子。也就是要找BOOT跳线,要看怎么跳成“Bootloader”模式。看回板子,这块板跟F0 Demo Board不一样,它有两排跳线。

初试STM32基于Arduino的使用(第二集)_第13张图片

所以我查回卖家在某宝上的页面,根据页面描述,我将它跳成BOOT0=1,BOOT1=1。但是还是不成功。最后我找了半天,在手册上找到了“可疑”的一行。这里写着要参考AN2606,所以在网上搜索了一下,得到另一份文档。

初试STM32基于Arduino的使用(第二集)_第14张图片

 在这份名叫“AN2606 Application Note”的文档里,我找到了

初试STM32基于Arduino的使用(第二集)_第15张图片

根据红色框,可以看到,之前找到的针脚是对的,也就是在Bootloader模式下,也是用PA9=TX,PA10=RX。注意哦,在Bootloader模式下,只有USART1是可用的,虽然这块板支持2个UART。

再根据蓝色框,我们知道这块板是用Pattern 1来确定启动时的模式的。

查文档找到。

初试STM32基于Arduino的使用(第二集)_第16张图片

 至此,我们找到 了正确的跳线方式,并正确地跳好跳线了。 (跳好跳线后,记得按RESRT或者断电再接上,这样板子才会重启到Bootloader)

初试STM32基于Arduino的使用(第二集)_第17张图片

 然后再用STM32 Cube Programmer尝试,连上后是这样的,具体这些表示什么,还没有花时间去探究。简单理解应该就是写在里面的代码了。 

初试STM32基于Arduino的使用(第二集)_第18张图片

三、正式试用

 接下来,我准备跟上次一样,测试自带的LED闪烁的代码。 

初试STM32基于Arduino的使用(第二集)_第19张图片

从板子上看到LED上面有标着PC13,可惜没有找到有任何文档描述PC13是否就是可以驱动LED的针脚,所以只能通过测试来确定。

代码如下。

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(PC13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(PC13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(PC13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

1️⃣ 选择开发板 

初试STM32基于Arduino的使用(第二集)_第20张图片

2️⃣ 别忘记了这里选择STM32CubeProgrammer(Serial)

初试STM32基于Arduino的使用(第二集)_第21张图片

3️⃣ 关于运行

下载代码后,板子会自动运行代码,你会发现LED闪烁起来,表示LED=PC13。

另外,要提醒大家的是,下载代码后板子会自动启动Flash(存放代码的地方)上一次。当你重启板子,它因为跳线还在Bootloader模式下,所以又会启动到Bootloader。为了让板子继续按你的代码运行,你需要将跳线跳到BOOT0=0,BOOT1=0上。

初试STM32基于Arduino的使用(第二集)_第22张图片

四、最后的疑惑

虽然这块开发板可以用了。但是一开始那个关于MicroUSB直接连上电脑不能识别的问题又是什么回事呢?

我还没有找到明确的说明,但是我自己的想法是:

虽然它支持USB,但其实这个USB是与其它设备的通讯方式之一。目前它里面没有实际的与其它设备的通讯代码,也就是说Windows也不知道怎么跟它沟通。所以如果我们希望将这块板变成Windows的一个外部设备,那我们就要为它编写与Windows沟通的代码,且在Windows上编写驱动并安装到Windows上去,这样Windows才知道如何跟它通讯,而它也才知道要跟Windows做什么样的通讯。TODO:未来我明确后会更新这部分文章。

你可能感兴趣的:(创客分享,创客,Arduino,STM32)