基于stm32f103c8t6的Arduino系统-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11517|回复: 8

基于stm32f103c8t6的Arduino系统

[复制链接]
发表于 2019-3-13 15:09 | 显示全部楼层 |阅读模式
本帖最后由 zhuhai 于 2019-3-15 13:56 编辑

基于stm32f103c8t6的Arduino系统

为了小目标的实现,使用ATMEGA328P和Leana都无法完整接收OneNet返回的信息(近300个字符),最终将目标定在了stm32f103c8t6上,选上它是因为这块板子有三个硬串,而且价格只有几元,所以买来试试,居然成功了,总结本文方便需要者参考。

下图是新买的一块stm32f103c8t6,外观尺寸22mmX52mm

1.png


第一步、软件准备:
下面地址下载开发板软件:
https://github.com/rogerclarkmelbourne/Arduino_STM32
得压缩包Arduino_STM32-master.zap
解压后保存到Arduino安装目录下D:\ProgramFiles (x86)\Arduino\hardware

12.png
打开工具\开发板管理器,然后再安装开发板包
2.png
以上是二套软件安装。

重启Arduino后可以看到多了主板选项
3.png

第二步、硬件连接
下图接TTL
4.png
stm32f103c8t6三个串口如下表,都可以接TTL,其它脚位分布参考百度文库
https://wenku.baidu.com/view/8412fbc0dd88d0d232d46a48.html

14.JPG

第三步、上传代码测试

开发板选项参考下图
5.png
收到板子后,通电,PC13灯一闪一闪的,这是商家已写入的测试程序,我们不需要。
BOOT0的跳线设置为1,通电按下RESET清空闪存,这一步需要,否则象没写似的。新板子第一次写时,按RESET没用。要先写再RESET再写,程序就写进去了,以后每次更新程序都先RESET再写。写完后带电状态将BOOT0的跳线设置为0,否则一掉电程序马上没了。

测试代码:
void setup() {
  //initialize digital pin LED_BUILTIN as an output.
pinMode(PC13, OUTPUT);
Serial.begin(9600);
}

// the loop function runs over and overagain forever
void loop() {
digitalWrite(PC13, HIGH);   //turn the LED on (HIGH is the voltage level)
delay(1000);                      // wait for a second
digitalWrite(PC13, LOW);    //turn the LED off by making the voltage LOW
delay(1000);                      // wait for a second
Serial.println("hello world");
delay(1000);                      // wait for a second

}

打开串口监视器,接收
6.png

Hello world收到了

关于编译器提示的问题,串口工具没有断开时上传,也是上传成功,但是实际是没有成功。
这个上传成功不能代表一定成功,即使你板子没有通电也是上传成功,所以每次上传都要关注一下接线情况,以免误解。
7.png

到此为止stm32f103c8t6板已成功运行arduino程序,接下来上传小目标代码,参考:
我的Arduino之路-实现物联网应用(4)
https://www.arduino.cn/forum.php?mod=viewthread&tid=84326&fromuid=166011

先改缓存文件
D:\Program Files(x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src\ SoftwareSerial.h
修改内容:
8.png

经调试成功收到OneNet返回信息:
9.png

总结:
有些代码在stm32f103c8t6不能用,如:
resetFunc();函数会死机
while(Serial2.read()>= 0){};//缓存清零//也会引起死机
三个串口(Serial、Serial1、Serial2)只有二个串口有效(0和2)不知为什么
如:
接线(A9,A10):Serial.println("AT");有效
接线(A2,A3):Serial1.println("AT");无效,但是这样接线却对Serial2.println("AT");有效,真想不通
接线(B10,B11):Serial2.println("AT");有效

串口收到的缓存数据,不是超出丢弃式的,而是压入式的,后面的数据将前面的顶出去。这个对我有用,因为我要的数据在300多个字的最后几行

对中断不懂,STM32F103软复位没成功,只好用笨办法接个继电器做了个硬复位
接线图:
10.png


最后展示成果


参考文选(感谢作者的分享):
1)  【玩STM32】如何用arduino语法来玩STM32(一)
https://www.geek-workshop.com/thread-27452-1-1.html

2)    STM32F103 and Maple / Maple Mini with Arduino 1.5.x IDE
http://www.rogerclark.net/stm32f103-and-maple-maple-mini-with-arduino-1-5-x-ide/

15.JPG
发表于 2019-3-30 23:15 来自手机 | 显示全部楼层
太麻烦了,试试零知板,一键下载
发表于 2020-5-6 12:40 | 显示全部楼层
零知实验室-roc 发表于 2019-3-30 23:15
太麻烦了,试试零知板,一键下载

零和开发板 BOOT1引脚有一颗10K的下拉电阻 不能刷入Flash。。。。。
只能用零知官方的IDE  新人入门可以试试 不建议大家玩零知
发表于 2020-6-4 13:36 | 显示全部楼层
4760177 发表于 2020-5-6 12:40
零和开发板 BOOT1引脚有一颗10K的下拉电阻 不能刷入Flash。。。。。
只能用零知官方的IDE  新人入门可以 ...

非常赞成你的说法,不通用的东西资源不开源,用着很麻烦,我也买了,因为不兼容我的装2套编译器,麻烦死了
发表于 2020-7-16 20:23 | 显示全部楼层
按照您的说法试了一下F103C8T6, 结果得到"为开发板STM32F103C8T6编译出错".请问是什么原因?
发表于 2020-7-17 09:36 | 显示全部楼层
刚刚接触Arduino,学习了
发表于 2020-9-30 00:17 | 显示全部楼层
您好 ,看到您用STM32做的arduino产品。目前我有个产品需要用arduino来开发,遇到一些技术问题,希望请教您一下(如果可以希望支付您感谢费),如果您有兴趣,项目可以包给您。联系方式18508444808(微信同号)  急盼联系,感谢!
发表于 2020-10-7 16:05 | 显示全部楼层
还好吗你爸妈不会开口包括开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:42 , Processed in 0.083533 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表