[STM32F0] 初试STM32基于Arduino的使用

[复制链接]
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 16:55 | 显示全部楼层 |阅读模式
192186375f6e88f052.png
Arduino的板子虽然有国内的兼容板子,但最终价格也要在40+(意大利原产的就要100+了)。
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:06 | 显示全部楼层
虽然也已经不贵了,但是如果一个方案里用的板子多了,整体成本也是在那里的。况且谁又不希望用最低的价格做最多的事呢?就在儿子4年级时,他们的信息课开始在学习Arduino的简单开发。当时学校发了2块Arduino Uno,这没有毛病。但又过了一个学期,换了一个供应商,发过来的是长这样的板子。 3276863764dd5a77c7.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:13 | 显示全部楼层
但是其实当时老师并没有让他们直接在上面编程的,而是老师已经写好代码,固定了输入和输出口,学生只要根据需要换输入和输出的模块就可以实现很多功能了。而我的确上网查了一下,STM32是可以基于Arduino来写代码的,但是因为老师的这种操作,所以我就没有机会接触到是怎么用Arduino来编写STM32的代码了。这事一放就放下几年。最近在搞那个乘车方案,要用到3个端,特别是用户手持端是要人手一个的。它需要做到体积小,成本低。这就让我重新想起STM32了。
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:14 | 显示全部楼层
在Arduino开发环境中增加STM32
1️⃣ 添加“附加开发板管理网址”

找到“首选项”
9020363764fafb6251.png
修改“附加开发管理器网址”
8074263764fb742645.png
链接是这个,直接拷贝进去就行。这个是比较新的,一些兄弟分享的网址因为是过去分享的,已经无效的,所以请使用我分享的这个。有助于避坑。(如果你修改完这个后发现Arduino启动不了了,请看本文最后的解决方法。)

https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/main/package_stmicroelectronics_index.json
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:14 | 显示全部楼层
如果你好奇,可以用浏览器打开它
6038863764fd22cff6.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:21 | 显示全部楼层
增加STM32开发板

在“工具”=>"开发板:XXX"里找到“开发板管理器”
38176376517636fa9.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:23 | 显示全部楼层
然后选择“贡献”,找到STM32 MCU based boards,将它安装就行了。我这里因为已经安装了,所以“安装”按钮是灰的。安装过程需要点时间, 国内连Github有点慢,如果你有加速的方式的话这时可以拿出来用了。
20302637652091b1bc.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:24 | 显示全部楼层
选择STM32开发板

安装完后,你就可以在这里选择你的开发板了。我的是STM32F0系列,所以选择了Generic STM32F0 Series。
45948637652296d4ae.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:26 | 显示全部楼层
记得选择STM32CubeProgrammer(Serial),这是我们通过UART(也就是TX, RX方式连接)的上传方式。
30751637652b0e2d25.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:27 | 显示全部楼层
写代码测试

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

我从Arduino的示例中找到了"Blink"这个示例。
62231637652f02d003.png
 楼主| 烟雨蒙蒙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
    }
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:30 | 显示全部楼层
如果你细心看,这里的“LED_BUILTIN”是蓝色的。但是STM32是不支持这个宏定义的,那我要怎么操作STM32的各个PIN呢?我找了很多文章,发现原来其实使用起来很简单,看下图,你要用到哪个PIN,直接用哪个PIN的名字就行了。比如我用的是PA4,代码里面直接用PA4就行了。另外,如果你细心看,你会发现下图中用绿色圈出来的LED灯其实就是有2根深色的线连着PA4的。所以我们只要设置PA4的电平,就能让这个LED灯亮起来。
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:32 | 显示全部楼层
 楼主| 烟雨蒙蒙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就变回黑色。也就是说,如果看到是蓝色的,那表示你没有写错了
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:34 | 显示全部楼层
下载

1. 关于连线

接下来就是要下载了。还记得我一开篇说我之前曾经不得要领吗?问题就在这里。我根据使用Arduino的经验,想当然地连上了MicroUSB线,但发现电脑找不到我的STM32F030。我一直以为这块板子时间长了,坏掉了。然后另一篇文章中,我提到新买的那块Arduino Nano不能用(其实是选错芯片类型了),我以为是USB控制器坏了,所以我用USB转TTL(下图这个东西)来连它,发现原来这样也是可以正常使用的。所以啦,我在想,那这个STM32应该是USB控制器坏了,我用USB转TTL不就好了?
89650637654674fb42.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:36 | 显示全部楼层
连上后,发现可以正常下载代码了。你猜怎么着?我又查了一下STM32F030 Demo Board的文档。发现人家就写着"Power only"。为我的无知感到汗颜
328066376548512f96.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:37 | 显示全部楼层
连线方式如下,因为没有找到Fritzing的对应STM32的部件,所以直接拍照。(有STM32的Fritzing部件的同学请分享给我一下。先谢过!
2967463765528610de.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:39 | 显示全部楼层
具体连法如下。其实习惯了的话都知道,看到Tx和Rx,只要反着对连就能跟模块通信了。我一个做软件的觉得这种方式很无敌啊。
19612637655b398b90.png
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:40 | 显示全部楼层
下载 这时准备要点击Arduino的下载,但在此之前,记得让板子启动到bootloader模式。就是将板子上的跳线跳到3v3的位置然后接通电源(跳完按“重置按钮”效果也一样)。
 楼主| 烟雨蒙蒙520 发表于 2022-11-17 23:40 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

719

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部