在stm32上使用Arduino IDE(神舟I号为例)

原址:https://blog.csdn.net/alanzjl/article/details/43232601
借鉴一下,以备后用

Arduino IDE是一种很方便的开发环境,通过把底层代码函数化,做到让使用者开发软件不需要太多了解底层控制,缩短了代码,大大提升了开发效率。而且Arduino基于C/C++,其语言、开发环境都很容易理解,是初学者的一个不错选择。但是,Arduino出品的开发板芯片比较古老,计算能力比较低下,较为复杂的运算实现困难。。因此把Arduino环境用在ST意法半导体公司的STM32系列上会有不错的效果。现在网络上已经有Arduino for STM32的文章了,不过都是针对自家做的板子所写,不支持其他板子,这篇文章讲的方法适用性较广,我个人使用的是国产神舟I号开发板,板载STM32F103RB,目前已知此方法适用于STM32F103C8x、STM32F103CBx、STM32F103Rxx 芯片。

下面进入正文。

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

一、软件准备。

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

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

我的板子:

2、STM32 master文件,下载解压之后,把文件夹名改成Arduino_STM32,拷贝到My Documents/Arduino/hardware下,如果hardware文件夹不存在的话就新建一个。


3、安装STM32驱动,不安装的话com口识别不出来,win7/8应该都可以在线自动安装,如果还是不行的话就百度搜一下驱动程序吧。

4、打开Arduino IDE,选择合适的板子,我选的是下图这个。


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




二、软件准备完了,下面准备硬件。

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

我的这块板子:

不同的开发板BOOT0、BOOT1设置的不一样,我的是用跳帽短接BOOT0,BOOT1不动之后复位进入SystemBoot模式。(stm32有多钟启动模式,UserBoot、SystemBoot、SRAM_Boot模式,其中如果使用串口下载要擦写FLASH的话一定要用SystemBoot模式,UserBoot模式是写好程序之后执行这个程序的时候用的,在我的板子上是BOOT0不短接,BOOT1随意,也就是不用跳线帽的时候的默认模式)

如果模式错了,可能会出现下面这个情况(我当初就是在这里纠结了好久):

2、安好跳线帽之后按reset复位,写好的程序就可以往里面烧写了。


三、来点具体案例吧。

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

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

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

  1. int led1=PA2;  
  2. void setup() {      
  3.     pinMode(led1,OUTPUT);  
  4. }     
  5. void loop() {      
  6.     digitalWrite(led1,HIGH);  
  7.     delay(1000);  
  8.     digitalWrite(led1,LOW);  
  9.     delay(1000);  
  10. }  



下载到板子上,拔掉BOOT0处的跳线帽,reset,就可以看到led1在blink了。注意:每次下载程序都要进入SystemBoot模式下载!


2、串口的应用,就是用串口从板子往电脑发一个Hello World。实例里面可以看出来,Serial.print(“”)函数是打印引号里面的内容,而Serial.println(“”)是打印引号里面内容之后多打一个换行符。这里程序设置波特率为9600,串口调试器端要设置的一样,注意右下角。

  1. void setup() {      
  2.     Serial.begin(9600);// opens serial port, sets data rate to 9600 bps     
  3.     Serial.println("Hello World!");   
  4.     Serial.print("Hello World!");  
  5.     Serial.print("Hello World!\n");  
  6.     Serial.print("Hello World!");  
  7.  }     
  8.  void loop() {      
  9.    
  10.  }  




要是还有什么不明白,可以到这里https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation

在github上面的一篇文章,描述很详细,不过网速实在慢,平常国内下载能到2m/s,校内20-30m/s,但github也就20k/s。。。。而且用百度云离线下载反而更慢。。。


OK,就写这些吧。

转载于:https://www.cnblogs.com/neverguveip/p/9457288.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值