打印
[应用相关]

在stm32上使用Arduino IDE

[复制链接]
1204|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2021-4-30 21:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Arduino IDE是一种很方便的开发环境,通过把底层代码函数化,做到让使用者开发软件不需要太多了解底层控制,缩短了代码,大大提升了开发效率。而且Arduino基于C/C++,其语言、开发环境都很容易理解,是初学者的一个不错选择。但是,Arduino出品的开发板芯片比较古老,计算能力比较低下,较为复杂的运算实现困难。。因此把Arduino环境用在ST意法半导体公司的STM32系列上会有不错的效果。现在网络上已经有Arduino for STM32的**了,不过都是针对自家做的板子所写,不支持其他板子,这篇**讲的方法适用性较广,我个人使用的是国产神舟I号开发板,板载STM32F103RB,目前已知此方法适用于STM32F103C8x、STM32F103CBx、STM32F103Rxx 芯片。
————————————————
版权声明:本文为CSDN博主「alanzjl」的原创**,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/alanzjl/article/details/43232601

使用特权

评论回复
沙发
t60yz|  楼主 | 2021-4-30 21:08 | 只看该作者
下面进入正文。

详细页面:http://alanzjl.sinaapp.com/2015/02/arduino_in_stm32/

使用特权

评论回复
板凳
t60yz|  楼主 | 2021-4-30 21:09 | 只看该作者
一、软件准备。

1、Arduino最新版,现在好像是1.5.8 BETA,我用的是1.6.0,忘了从哪里下到的了现在貌似找不到了,不过1.5.x也可以。

下载地址:http://www.arduino.cc/en/Main/Software

使用特权

评论回复
地板
t60yz|  楼主 | 2021-4-30 21:09 | 只看该作者
我的板子:

使用特权

评论回复
5
t60yz|  楼主 | 2021-4-30 21:10 | 只看该作者
2、STM32 master文件,下载解压之后,把文件夹名改成Arduino_STM32,拷贝到My Documents/Arduino/hardware下,如果hardware文件夹不存在的话就新建一个。

使用特权

评论回复
6
t60yz|  楼主 | 2021-4-30 21:10 | 只看该作者

使用特权

评论回复
7
t60yz|  楼主 | 2021-4-30 21:11 | 只看该作者
3、安装STM32驱动,不安装的话com口识别不出来,win7/8应该都可以在线自动安装,如果还是不行的话就百度搜一下驱动程序吧。

使用特权

评论回复
8
t60yz|  楼主 | 2021-4-30 21:12 | 只看该作者
4、打开Arduino IDE,选择合适的板子,我选的是下图这个。

使用特权

评论回复
9
t60yz|  楼主 | 2021-4-30 21:12 | 只看该作者
选择好COM口,用的是哪个COM口在控制面板-设备管理器里可以看到(如果看不到就说明驱动程序没装好)。另:连接STM32和电脑的时候一定注意STM32上用的是哪个接口!!比如我的这块神舟I,有两个miniUSB口,其中有一个是USB转串口的,那么需要连的就是这个,别连错了!!连错了COM口也不会出现。(如果开发板不是自带USB转串口芯片的,就要自备这块芯片,从串口连接)

使用特权

评论回复
10
t60yz|  楼主 | 2021-4-30 21:13 | 只看该作者

使用特权

评论回复
11
t60yz|  楼主 | 2021-4-30 21:14 | 只看该作者

使用特权

评论回复
12
t60yz|  楼主 | 2021-4-30 21:15 | 只看该作者
二、软件准备完了,下面准备硬件。

1、STM32启动方式:SystemBoot。这个非常重要!我就是在这里卡了好久。

我的这块板子:

使用特权

评论回复
13
t60yz|  楼主 | 2021-4-30 21:15 | 只看该作者

使用特权

评论回复
14
t60yz|  楼主 | 2021-4-30 21:16 | 只看该作者
不同的开发板BOOT0、BOOT1设置的不一样,我的是用跳帽短接BOOT0,BOOT1不动之后复位进入SystemBoot模式。(stm32有多钟启动模式,UserBoot、SystemBoot、SRAM_Boot模式,其中如果使用串口下载要擦写FLASH的话一定要用SystemBoot模式,UserBoot模式是写好程序之后执行这个程序的时候用的,在我的板子上是BOOT0不短接,BOOT1随意,也就是不用跳线帽的时候的默认模式)

使用特权

评论回复
15
t60yz|  楼主 | 2021-4-30 21:17 | 只看该作者
如果模式错了,可能会出现下面这个情况(我当初就是在这里纠结了好久):

使用特权

评论回复
16
t60yz|  楼主 | 2021-4-30 21:17 | 只看该作者
2、安好跳线帽之后按reset复位,写好的程序就可以往里面烧写了。

使用特权

评论回复
17
t60yz|  楼主 | 2021-4-30 21:18 | 只看该作者
三、来点具体案例吧。

1、LED闪烁。你的开发板上应该有板载LED吧,什么?你的是核心板?那就跳过这一个到下一个或者外接一个LED吧。

led闪烁首先要搞清楚led接在哪个管脚上,我的有三个,分别接在接在PA2、PA3还有PB2上,看PA1比较顺眼,那就PB1吧。

使用特权

评论回复
18
t60yz|  楼主 | 2021-4-30 21:19 | 只看该作者
注意,Arduino自家板子的I/O口是有编号的,比如在Arduino Ide里面打开一个实例程序,Blink,可以发现编号为13的管脚接着一个led。。。但是在stm32上面编号是怎么对应的就不一定了。。于是,我们就不能用编号了,用管脚标号吧,买板子的时候商家会给,硬件原理图里面,比如下面这个,可以看出PA2、PA3都是led,那么我们只要把原来实例代码的编号改成这个PA2、PA3就行了。

使用特权

评论回复
19
t60yz|  楼主 | 2021-4-30 21:19 | 只看该作者

使用特权

评论回复
20
t60yz|  楼主 | 2021-4-30 21:20 | 只看该作者

int led1=PA2;
void setup() {   
    pinMode(led1,OUTPUT);
}   
void loop() {   
    digitalWrite(led1,HIGH);
    delay(1000);
    digitalWrite(led1,LOW);
    delay(1000);
}

使用特权

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

本版积分规则

170

主题

1009

帖子

0

粉丝