在stm32上使用Arduino IDE(神舟I号为例)
借鉴一下,以备后用
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就行了。
- int led1=PA2;
- void setup() {
- pinMode(led1,OUTPUT);
- }
- void loop() {
- digitalWrite(led1,HIGH);
- delay(1000);
- digitalWrite(led1,LOW);
- delay(1000);
- }
下载到板子上,拔掉BOOT0处的跳线帽,reset,就可以看到led1在blink了。注意:每次下载程序都要进入SystemBoot模式下载!
2、串口的应用,就是用串口从板子往电脑发一个Hello World。实例里面可以看出来,Serial.print(“”)函数是打印引号里面的内容,而Serial.println(“”)是打印引号里面内容之后多打一个换行符。这里程序设置波特率为9600,串口调试器端要设置的一样,注意右下角。
- void setup() {
- Serial.begin(9600);// opens serial port, sets data rate to 9600 bps
- Serial.println("Hello World!");
- Serial.print("Hello World!");
- Serial.print("Hello World!\n");
- Serial.print("Hello World!");
- }
- void loop() {
- }
要是还有什么不明白,可以到这里https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation
在github上面的一篇文章,描述很详细,不过网速实在慢,平常国内下载能到2m/s,校内20-30m/s,但github也就20k/s。。。。而且用百度云离线下载反而更慢。。。
OK,就写这些吧。
在stm32上使用Arduino IDE(神舟I号为例)相关推荐
- 【历史上的今天】9 月 25 日:谷歌进军电商行业;摩托罗拉诞生;神舟七号发射成功
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 9 月 25 日,伟大的文学家鲁迅诞生在 140 年前的今天,他是 20 世纪的文化巨人,以文字为武 ...
- ESP8266-Arduino编程实例-SPIFFS及数据上传(Arduino IDE和PlatformIO IDE)
SPIFFS及数据上传(Arduino IDE和PlatformIO IDE) 1.SPIFFS介绍 ESP8266 包含一个串行外设接口闪存文件系统 (SPIFFS). SPIFFS 是为带有闪存芯 ...
- stm32 神舟3号 开发板 usb DFU 实现
1.官网下载usb源码包, 2.神舟III号的MCU位f103ze 系列.打开压缩包,直接找到 Device_Firmware_Upgrade 文件包 MDK打开工程. 3.选择 stm3210E_E ...
- 【连载】【STM32神舟III号实验例程】流水灯实验(实验一)
源代码流水灯实验例程程序(神舟III号).rar
- 神舟六号的投入产出比:1比12
神舟六号飞船已发射成功,国家大概投入了多少资金,按照成本与收入的配比原则,能为国家带来多少经济效益? 10月11日,北京大学地球与空间科学学院焦维新教授表示,载人航天肯定是花钱的事业,效益可分为两个方 ...
- 2020神舟几号发射_中国宇宙飞船发射到神州几号了
随着如今科学技术的不断发展,中国真的是在国际上都走到了前沿,在短短的17年时间内就已经发射了11艘宇宙飞船,在宇宙的探索中又迈上了更高的一步.那么截止到目前中国宇宙飞船发射到神州几号了呢?据说是在30 ...
- 互联网晚报 | 11月8日 星期一 | 美团外卖公开“订单分配”算法规则;英雄联盟首部动画剧集上线;神舟十三号航天员首次出舱...
今日看点 ✦ 神舟十三号航天员乘组圆满完成首次出舱活动全部既定任务 ✦ 微信视频号公布MCN招募计划:最高10万元奖励 ✦ 美团外卖公开"订单分配"算法规则,推出"主动改 ...
- 神舟IV号开发板-107.OTG功能-对U盘的访问(例程bug1)
107.OTG功能-对U盘的访问(显示U盘中图片)(STM32神舟IV号-库函数版) 例程源码,编译出错 源代码编译出错 我真的栓Q 解决办法~~安排 1.这个文件夹是中文的 把它改成英文" ...
- “神舟”五号飞船数字集纳
1."神舟"五号直接消耗不到10亿元人民币,前四次消耗各约1亿美元. 2."神舟"五号飞船总长9.2米,总重7790千克. 3."神舟"五号 ...
最新文章
- JMeter 报告监听器导入.jtl结果文件报错解决方案
- mysql还原数据报错:
- vue中集合取第一个_快速学习Vue框架(知识点集合)
- 小小数据统计(柱状图、折线图、扇形图)
- mikadonic-RHCE——NFS服务配置图解
- python—pickle模块的dump与load函数
- 学会 配置文件+反射,走遍全球都不怕.
- 【正点原子Linux连载】第六十九章 Linux 网络驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- 在 Windows 下关闭135/139/445端口的图文方法
- 语义分割之《CCNet: Criss-Cross Attention for Semantic Segmentation》论文阅读笔记
- DICOM标准之一_介绍和概述
- leetcode | 整数反转
- GIS空间分析之公路选线
- MATLAB读取EXCEL表格文件,并进行可视化
- 二维码图片在微信无法识别(iOS)
- 模糊图片(动漫)转高清 (aardio GUI),优质图片处理软件
- matlab 2015 积分,浅谈MATLAB在数值积分中的应用
- 毕业论文-----有关目录的全部问题
- 抽象类(abstract class)和接口(interface)
- [2012山东ACM省赛] Fruit Ninja II (三重积分,椭球体积)
热门文章
- python代码解读软件_5种带你轻松分析Python代码的软件库
- 取消对 null 指针“l”的引用。_C语言编程笔记丨C 语言指针 5 分钟教程
- 《c语言从入门到精通》看书笔记——第13章 预处理
- linux只允许从ttyS0设备登录,linux自动以root登录,并自动启动用户程序的设置方...
- c语言课程设计 性别,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
- ubuntu20.1 查看apt仓库_上海食品冷藏仓库出租查看
- 四针角oled屏连接arduino_使用Arduino开发板连接OLED显示屏制作一款智能手表
- Powerful array CodeForces - 86D (莫队算法)
- python系统学习:函数积累(持续更新)
- 接口测试学习——jmeter分布式压测