打印
[STM32F0]

初试STM32基于Arduino的使用

[复制链接]
778|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

Arduino的板子虽然有国内的兼容板子,但最终价格也要在40+(意大利原产的就要100+了)。

使用特权

评论回复
沙发
烟雨蒙蒙520|  楼主 | 2022-11-17 23:06 | 只看该作者
虽然也已经不贵了,但是如果一个方案里用的板子多了,整体成本也是在那里的。况且谁又不希望用最低的价格做最多的事呢?就在儿子4年级时,他们的信息课开始在学习Arduino的简单开发。当时学校发了2块Arduino Uno,这没有毛病。但又过了一个学期,换了一个供应商,发过来的是长这样的板子。

使用特权

评论回复
板凳
烟雨蒙蒙520|  楼主 | 2022-11-17 23:13 | 只看该作者
但是其实当时老师并没有让他们直接在上面编程的,而是老师已经写好代码,固定了输入和输出口,学生只要根据需要换输入和输出的模块就可以实现很多功能了。而我的确上网查了一下,STM32是可以基于Arduino来写代码的,但是因为老师的这种操作,所以我就没有机会接触到是怎么用Arduino来编写STM32的代码了。这事一放就放下几年。最近在搞那个乘车方案,要用到3个端,特别是用户手持端是要人手一个的。它需要做到体积小,成本低。这就让我重新想起STM32了。

使用特权

评论回复
地板
烟雨蒙蒙520|  楼主 | 2022-11-17 23:14 | 只看该作者
在Arduino开发环境中增加STM32
1️⃣ 添加“附加开发板管理网址”

找到“首选项”

修改“附加开发管理器网址”

链接是这个,直接拷贝进去就行。这个是比较新的,一些兄弟分享的网址因为是过去分享的,已经无效的,所以请使用我分享的这个。有助于避坑。(如果你修改完这个后发现Arduino启动不了了,请看本文最后的解决方法。)

https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/main/package_stmicroelectronics_index.json

使用特权

评论回复
5
烟雨蒙蒙520|  楼主 | 2022-11-17 23:14 | 只看该作者
如果你好奇,可以用浏览器打开它

6038863764fd22cff6.png (286.78 KB )

6038863764fd22cff6.png

使用特权

评论回复
6
烟雨蒙蒙520|  楼主 | 2022-11-17 23:21 | 只看该作者
增加STM32开发板

在“工具”=>"开发板:XXX"里找到“开发板管理器”

使用特权

评论回复
7
烟雨蒙蒙520|  楼主 | 2022-11-17 23:23 | 只看该作者
然后选择“贡献”,找到STM32 MCU based boards,将它安装就行了。我这里因为已经安装了,所以“安装”按钮是灰的。安装过程需要点时间, 国内连Github有点慢,如果你有加速的方式的话这时可以拿出来用了。

使用特权

评论回复
8
烟雨蒙蒙520|  楼主 | 2022-11-17 23:24 | 只看该作者
选择STM32开发板

安装完后,你就可以在这里选择你的开发板了。我的是STM32F0系列,所以选择了Generic STM32F0 Series。

使用特权

评论回复
9
烟雨蒙蒙520|  楼主 | 2022-11-17 23:26 | 只看该作者
记得选择STM32CubeProgrammer(Serial),这是我们通过UART(也就是TX, RX方式连接)的上传方式。

使用特权

评论回复
10
烟雨蒙蒙520|  楼主 | 2022-11-17 23:27 | 只看该作者
写代码测试

到这里我们就可以写代码试一试了。

我从Arduino的示例中找到了"Blink"这个示例。

使用特权

评论回复
11
烟雨蒙蒙520|  楼主 | 2022-11-17 23:29 | 只看该作者
得到如下代码:

    void setup() {
      // initialize digital pin LED_BUILTIN as an output.
      pinMode(LED_BUILTIN, OUTPUT);
    }
     
    // the loop function runs over and over again forever
    void loop() {
      digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);                       // wait for a second
      digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
      delay(1000);                       // wait for a second
    }

使用特权

评论回复
12
烟雨蒙蒙520|  楼主 | 2022-11-17 23:30 | 只看该作者
如果你细心看,这里的“LED_BUILTIN”是蓝色的。但是STM32是不支持这个宏定义的,那我要怎么操作STM32的各个PIN呢?我找了很多文章,发现原来其实使用起来很简单,看下图,你要用到哪个PIN,直接用哪个PIN的名字就行了。比如我用的是PA4,代码里面直接用PA4就行了。另外,如果你细心看,你会发现下图中用绿色圈出来的LED灯其实就是有2根深色的线连着PA4的。所以我们只要设置PA4的电平,就能让这个LED灯亮起来。

使用特权

评论回复
13
烟雨蒙蒙520|  楼主 | 2022-11-17 23:32 | 只看该作者

使用特权

评论回复
14
烟雨蒙蒙520|  楼主 | 2022-11-17 23:33 | 只看该作者
代码我改成了这样:

    void setup() {
      // initialize digital pin LED_BUILTIN as an output.
      pinMode(PA4, OUTPUT);
    }
     
    // the loop function runs over and over again forever
    void loop() {
      digitalWrite(PA4, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(1000);                       // wait for a second
      digitalWrite(PA4, LOW);    // turn the LED off by making the voltage LOW
      delay(1000);                       // wait for a second
    }

* 注意,观察,当你选择了STM32的板子后,这个代码里的“PA4”会变成蓝色。而如果你选回Arduino Uno,那PA4就变回黑色。也就是说,如果看到是蓝色的,那表示你没有写错了

使用特权

评论回复
15
烟雨蒙蒙520|  楼主 | 2022-11-17 23:34 | 只看该作者
下载

1. 关于连线

接下来就是要下载了。还记得我一开篇说我之前曾经不得要领吗?问题就在这里。我根据使用Arduino的经验,想当然地连上了MicroUSB线,但发现电脑找不到我的STM32F030。我一直以为这块板子时间长了,坏掉了。然后另一篇文章中,我提到新买的那块Arduino Nano不能用(其实是选错芯片类型了),我以为是USB控制器坏了,所以我用USB转TTL(下图这个东西)来连它,发现原来这样也是可以正常使用的。所以啦,我在想,那这个STM32应该是USB控制器坏了,我用USB转TTL不就好了?

使用特权

评论回复
16
烟雨蒙蒙520|  楼主 | 2022-11-17 23:36 | 只看该作者
连上后,发现可以正常下载代码了。你猜怎么着?我又查了一下STM32F030 Demo Board的文档。发现人家就写着"Power only"。为我的无知感到汗颜

328066376548512f96.png (83.76 KB )

328066376548512f96.png

使用特权

评论回复
17
烟雨蒙蒙520|  楼主 | 2022-11-17 23:37 | 只看该作者
连线方式如下,因为没有找到Fritzing的对应STM32的部件,所以直接拍照。(有STM32的Fritzing部件的同学请分享给我一下。先谢过!

使用特权

评论回复
18
烟雨蒙蒙520|  楼主 | 2022-11-17 23:39 | 只看该作者
具体连法如下。其实习惯了的话都知道,看到Tx和Rx,只要反着对连就能跟模块通信了。我一个做软件的觉得这种方式很无敌啊。

使用特权

评论回复
19
烟雨蒙蒙520|  楼主 | 2022-11-17 23:40 | 只看该作者
下载 这时准备要点击Arduino的下载,但在此之前,记得让板子启动到bootloader模式。就是将板子上的跳线跳到3v3的位置然后接通电源(跳完按“重置按钮”效果也一样)。

使用特权

评论回复
20
烟雨蒙蒙520|  楼主 | 2022-11-17 23:40 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

627

帖子

0

粉丝