本帖最后由 迷你强 于 2017-4-30 10:10 编辑
【玩STM32】如何用arduino语法来玩STM32(一)本项目开源方案源自:https://github.com/rogerclarkmelbourne/Arduino_STM32 特此申明 大家都知道STM32系列芯片属于那种价格便宜量又足的处理器,速度搜搜的还资源足,非常适合做一些相对于复杂比较消耗系统资源的项目,各arduino系小伙伴眼红不已,本系列文章就讲解下如何在arduino代码体系下使用STM32 首先介绍硬件平台,因为暂时我们没有开发基于STM32的alpha硬件环境,所以就在淘宝随便买了一款。 此款主板使用STM32F103C8T6处理器,外面扔了一堆的IO口,并且将USB口接出来了。属于做工比较粗糙但是价格便宜的产品(注意LED灯标示为PC13,就是说这颗灯接在了PC13管脚上) 首先我们要准备好将普通的STM32板子变成支持arduinoIDE的设备,所以要下载bootloader 下载工具: down.zip (61.66 KB, 下载次数: 1580) bootloader: bootloader.zip (58.77 KB, 下载次数: 1317) 两个压缩包,第一个包包是用来下载bootloader的下载工具,第二个就是bootloader文件本省啦。 新买的板子一般都没有预制arduino用的bootloader,所以我们先要找个usb转TTL电平的UART硬件(就是TTL串口)来给下载一下,推荐OCROBOT alpha CP2104 阅读STM32 C8T6的手册得知,这款芯片的串口在PA9(TX)和PA10(RX)上面,然后我们将他与串口模块进行连接,并且将BOOT0的跳线设置为1,这样就进入了串口编成模式(接线图如下表) [td]STM32 | CP2104 | PA9 | RX | PA10 | TX | 5V | 5V | GND | GND |
如下图 这样就可以开始下一步了,之前我们下载好的两个文件,首先解压缩down压缩包,里面有两个工具,其实是一样的一个python文件,一个exe文件,我们用exe的 假设我将文件解压缩到了D盘,目录是D:down 然后解压缩bootloader目录,里面有很多的文件,其实也都是一样的,后面的后缀,代表LED灯默认接在了哪个管脚,其实区别不大的,我们的板子刚好是PC13就将generic_boot20_pc13.bin这个文件复制到down目录下 看起来是这样的 好了,正式开始下载bootloader,首先我们按 徽标键+R 打开启动菜单,输入cmd回车 会出现一个命令窗口 然后我们将目录切换到刚才文件夹放置的位置,首先切换到D盘 输入 D: 回车 再输入 cd down 回车
接下来我们就开始下载固件咯,输入命令 stm32flash.exe -w generic_boot20_pc13.bin -v -g 0x0 COM14 其中COM14是我的串口设备的设备号,请根据自己的实际情况确定 这样就下载好了,将线头都拔干净,并且将跳线恢复,这些东西基本都用不着了,目前USB接口就正常可用了。 开始使用arduino版本的STM32首先,要去装驱动,因为你接到电脑上是这个德行的
下载这个驱动包: drivers.zip (15.03 MB, 下载次数: 6805) 解压缩后是这个德行的,双击红圈的文件,然后遇到授权提示全部点是 就会给你装好 装好后就变成这样了 这样就OK咯。。。 IDE部分介绍
先下载OCROBOTO IDE: http://www.ocrobot.com/doku.php?id=zh:downloads
下载最新版本即可
当然啦,先打开我们的IDE 打开工具菜单下的开发板管理器,安装STM32系统支持 点击安装STM32支持包 耐心等待,等进度条消失就安装完毕 然后就可以选择板子啦,我们选择F103C系列板卡 子选项卡也很简单,第一项选择C8系列板卡,通讯方式选择bootloader 第一次端口不会出com口号,所以不用选择,直接下载程序好了 程序
- void setup() {
- pinMode(PC13, OUTPUT);
- }
- void loop() {
- digitalWrite(PC13, HIGH);
- delay(1000);
- digitalWrite(PC13, LOW);
- delay(1000);
- }
[color=rgb(51, 102, 153) !important]复制代码
下载成功,会有一个提示找不到文件的错误,不过没有任何影响啦,管脚遵循了STM32的表示方式,其他基本没区别
硬件效果
我们再来测试下串口通信看看是否好用(注意,刚才通讯过后,设备会有端口号了,注意在板卡选项卡里选择上)
- void setup() {
- Serial.begin(9600);
- }
- void loop() {
- Serial.println("hello OCROBOT~!");
- delay(1000);
- }
[color=rgb(51, 102, 153) !important]复制代码
测试效果
|