arduino stm32 校园卡签到机-Arduino中文社区 - Powered by Discuz! Archiver

刘开放310 发表于 2018-11-11 01:16

arduino stm32 校园卡签到机

刚开始是使用nano做的,按着例程做没有任何问题,很快就做好了。想再添加一个屏幕,加了ssd1306的库之后动态内存就超了20%。有两个路可以选择,一是优化程序,二是选用更高级的芯片。试着优化了一下,有点难度,就想用stm32c8t6.从此悲惨的经历开始了。废话不说下面是极客工坊一位老哥的帖子,很详细帖子,为了大家方便给大家粘贴上来了         原址:
https://www.geek-workshop.com/forum.php?mod=viewthread&tid=27452

本帖最后由 迷你强 于 2017-4-30 10:10 编辑

【玩STM32】如何用arduino语法来玩STM32(一)本项目开源方案源自:https://github.com/rogerclarkmelbourne/Arduino_STM32 特此申明大家都知道STM32系列芯片属于那种价格便宜量又足的处理器,速度搜搜的还资源足,非常适合做一些相对于复杂比较消耗系统资源的项目,各arduino系小伙伴眼红不已,本系列文章就讲解下如何在arduino代码体系下使用STM32首先介绍硬件平台,因为暂时我们没有开发基于STM32的alpha硬件环境,所以就在淘宝随便买了一款。http://image.geek-workshop.com/forum/201608/31/161051jrltrv33pz3y830v.jpg此款主板使用STM32F103C8T6处理器,外面扔了一堆的IO口,并且将USB口接出来了。属于做工比较粗糙但是价格便宜的产品(注意LED灯标示为PC13,就是说这颗灯接在了PC13管脚上)首先我们要准备好将普通的STM32板子变成支持arduinoIDE的设备,所以要下载bootloader下载工具: https://www.geek-workshop.com/static/image/filetype/zip.gif down.zip (61.66 KB, 下载次数: 1580)bootloader: https://www.geek-workshop.com/static/image/filetype/zip.gif bootloader.zip (58.77 KB, 下载次数: 1317)两个压缩包,第一个包包是用来下载bootloader的下载工具,第二个就是bootloader文件本省啦。新买的板子一般都没有预制arduino用的bootloader,所以我们先要找个usb转TTL电平的UART硬件(就是TTL串口)来给下载一下,推荐OCROBOT alpha CP2104http://image.geek-workshop.com/forum/201608/31/160627uumh4hhw4422h0fh.png阅读STM32 C8T6的手册得知,这款芯片的串口在PA9(TX)和PA10(RX)上面,然后我们将他与串口模块进行连接,并且将BOOT0的跳线设置为1,这样就进入了串口编成模式(接线图如下表)
STM32CP2104
PA9RX
PA10TX
5V5V
GNDGND
如下图http://image.geek-workshop.com/forum/201608/31/161052nn9k3zfnzfnt65fh.jpg
http://image.geek-workshop.com/forum/201608/31/161052m3gkeecipk3xggi3.jpg这样就可以开始下一步了,之前我们下载好的两个文件,首先解压缩down压缩包,里面有两个工具,其实是一样的一个python文件,一个exe文件,我们用exe的假设我将文件解压缩到了D盘,目录是D:down然后解压缩bootloader目录,里面有很多的文件,其实也都是一样的,后面的后缀,代表LED灯默认接在了哪个管脚,其实区别不大的,我们的板子刚好是PC13就将generic_boot20_pc13.bin这个文件复制到down目录下看起来是这样的http://image.geek-workshop.com/forum/201608/31/160630ziz01ymlr00imlwu.png好了,正式开始下载bootloader,首先我们按 徽标键+R 打开启动菜单,输入cmd回车http://image.geek-workshop.com/forum/201608/31/160626lcnnjzcack96kcn6.png会出现一个命令窗口http://image.geek-workshop.com/forum/201608/31/160626vjd8isfds70m808n.png然后我们将目录切换到刚才文件夹放置的位置,首先切换到D盘 输入 D: 回车http://image.geek-workshop.com/forum/201608/31/160627c62b2g2x60vdqgq6.png再输入 cd down回车
http://image.geek-workshop.com/forum/201608/31/160627rf365nsz3d9w6y0d.png接下来我们就开始下载固件咯,输入命令 stm32flash.exe -w generic_boot20_pc13.bin -v -g 0x0 COM14其中COM14是我的串口设备的设备号,请根据自己的实际情况确定http://image.geek-workshop.com/forum/201608/31/160627uk08ee0qnnei74q0.png这样就下载好了,将线头都拔干净,并且将跳线恢复,这些东西基本都用不着了,目前USB接口就正常可用了。开始使用arduino版本的STM32首先,要去装驱动,因为你接到电脑上是这个德行的
http://image.geek-workshop.com/forum/201608/31/160630f2yiney4zrfyrbb2.png下载这个驱动包: https://www.geek-workshop.com/static/image/filetype/zip.gif drivers.zip (15.03 MB, 下载次数: 6805)解压缩后是这个德行的,双击红圈的文件,然后遇到授权提示全部点是 就会给你装好http://image.geek-workshop.com/forum/201608/31/160630dpv1j5vpuajvrf5p.png装好后就变成这样了http://image.geek-workshop.com/forum/201608/31/160631lozso9upveozmzas.png这样就OK咯。。。IDE部分介绍
先下载OCROBOTO IDE: http://www.ocrobot.com/doku.php?id=zh:downloads
下载最新版本即可

当然啦,先打开我们的IDEhttp://image.geek-workshop.com/forum/201608/31/160628c3fy3yzg6hhwm36v.png打开工具菜单下的开发板管理器,安装STM32系统支持http://image.geek-workshop.com/forum/201608/31/160628ikglk7nki758lnli.png点击安装STM32支持包http://image.geek-workshop.com/forum/201608/31/160628me4sddddte411md9.png耐心等待,等进度条消失就安装完毕http://image.geek-workshop.com/forum/201608/31/160629ceqe0mjzkbcum3ou.png然后就可以选择板子啦,我们选择F103C系列板卡http://image.geek-workshop.com/forum/201608/31/160629n58tgcgkvgkk550g.png子选项卡也很简单,第一项选择C8系列板卡,通讯方式选择bootloaderhttp://image.geek-workshop.com/forum/201608/31/160629dxa339syr2razccz.png第一次端口不会出com口号,所以不用选择,直接下载程序好了程序

[*]void setup() {
[*]pinMode(PC13, OUTPUT);
[*]}
[*]void loop() {
[*]digitalWrite(PC13, HIGH);
[*]delay(1000);
[*]digitalWrite(PC13, LOW);
[*]delay(1000);
[*]}

复制代码


下载成功,会有一个提示找不到文件的错误,不过没有任何影响啦,管脚遵循了STM32的表示方式,其他基本没区别
http://image.geek-workshop.com/forum/201608/31/160629tzxxxz81iqx8xzzg.png
硬件效果
http://image.geek-workshop.com/forum/201608/31/160631xtmklqzpemkmpghk.png我们再来测试下串口通信看看是否好用(注意,刚才通讯过后,设备会有端口号了,注意在板卡选项卡里选择上)

[*]void setup() {
[*]Serial.begin(9600);
[*]}
[*]void loop() {
[*]Serial.println("hello OCROBOT~!");
[*]delay(1000);
[*]}

复制代码


测试效果

http://image.geek-workshop.com/forum/201608/31/160630ahqk69hlycylykfk.png
在这里我进行一下补充,本人的两台电脑都打不开这个下载程序的软件,无解。最后还是用实验室朋友的电脑下载的。网上找的资料说可以用其他的串口下载软件来下载,但要把二进制改为16进制。本人没有尝试,如果你的电脑也不能运行,你可以尝试一下。https://www.arduino.cn/forum.php?mod=image&aid=47107&size=300x300&key=fbe36a7d0fc4045f&nocache=yes&type=fixnone
然后我说一下是stm32引脚,我们刷入的是maple的固件,固件里spi和iic引脚已经修改,我们只需要看原理图把线子和板子硬件引脚连起来,不能连错。特别注意的是cs引脚自己要重新配置一下,如果不手动拉低的话,引脚会输出高电平。
我把rc522读卡模块配置好后,一会能用一会不能用。我从网上找了一个,没有采用官方的库,但也和官方的库一样,应该是以前的库,很好用。示例里面的一会能用一会不能用,快把我给搞崩溃了,sd卡也是这样,但sd卡应该是我配置的问题。
手动配置cs和复位,关闭在stm32中尤为重要
pinMode(chipSelectPin,OUTPUT); // Set digital pin 10 as OUTPUT to connect it to the RFID /ENABLE pin
    digitalWrite(chipSelectPin, LOW); // Activate the RFID reader
    pinMode(NRSTPD,OUTPUT); // Set digital pin 5 , Not Reset and Power-down
网上说sd卡模块修改cs引脚是通过定义这个chipSelectPin,可能这是之前的库,最新的库是在下面PB5那个地方修改,这我是打开了库函数才发现的,sd卡的cs接的PB5上,sd的初始化要修改成下面的样子
if (!SD.begin(PB5)) {
    Serial.println("initialization failed!");
    return;
}https://www.arduino.cn/forum.php?mod=image&aid=47110&size=300x300&key=974c8de1f6afddec&nocache=yes&type=fixnonehttps://www.arduino.cn/forum.php?mod=image&aid=47109&size=300x300&key=ef2a52f074caeb84&nocache=yes&type=fixnone
再说一下连线
SPI
SCLPA5
MISO PA6
MOSI PA7
SD_CS PB5
RC522_CS PA3
RC522_RST PA2


IIC
SCL PB6
SDA PB7

LED
RLED PA8
GLED PA10
BLED PA9
其他的没什么好说的,我会上传用到的所有资料和我写的代码
第一次写博客,不知道怎么添加图片,实验室一位漂亮的小姐姐还帮我设计出了外壳,用紫色的pla打印的,贼好看,很迷你




刘开放310 发表于 2018-11-11 01:24

stm32程序
https://www.arduino.cn/forum.php?mod=viewthread&tid=82567&fromuid=138843
(出处: Arduino中文社区)
程序在下个帖子里

零知实验室-roc 发表于 2018-11-19 22:29

刘开放310 发表于 2018-11-11 01:24
stm32程序
https://www.arduino.cn/forum.php?mod=viewthread&tid=82567&fromuid=138843
(出处: Arduino中 ...

直接零知的板子,一键下载,不用这么麻烦:http://www.lingzhilab.com/forum.php?mod=viewthread&tid=155&extra=page%3D1
页: [1]
查看完整版本: arduino stm32 校园卡签到机