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

zhuhai 发表于 2019-3-13 15:09

基于stm32f103c8t6的Arduino系统

本帖最后由 zhuhai 于 2019-3-15 13:56 编辑

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


第一步、软件准备:下面地址下载开发板软件:https://github.com/rogerclarkmelbourne/Arduino_STM32得压缩包Arduino_STM32-master.zap解压后保存到Arduino安装目录下D:\ProgramFiles (x86)\Arduino\hardware
打开工具\开发板管理器,然后再安装开发板包 以上是二套软件安装。
重启Arduino后可以看到多了主板选项
第二步、硬件连接下图接TTL stm32f103c8t6三个串口如下表,都可以接TTL,其它脚位分布参考百度文库https://wenku.baidu.com/view/8412fbc0dd88d0d232d46a48.html

第三步、上传代码测试
开发板选项参考下图 收到板子后,通电,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 forevervoid 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
}
打开串口监视器,接收
Hello world收到了
关于编译器提示的问题,串口工具没有断开时上传,也是上传成功,但是实际是没有成功。这个上传成功不能代表一定成功,即使你板子没有通电也是上传成功,所以每次上传都要关注一下接线情况,以免误解。
到此为止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修改内容:
经调试成功收到OneNet返回信息:
总结:有些代码在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软复位没成功,只好用笨办法接个继电器做了个硬复位接线图:

最后展示成果

参考文选(感谢作者的分享):
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/

王柳 发表于 2019-3-29 17:57

不错,玩玩!

零知实验室-roc 发表于 2019-3-30 23:15

太麻烦了,试试零知板,一键下载

4760177 发表于 2020-5-6 12:40

零知实验室-roc 发表于 2019-3-30 23:15
太麻烦了,试试零知板,一键下载

零和开发板 BOOT1引脚有一颗10K的下拉电阻 不能刷入Flash。。。。。
只能用零知官方的IDE新人入门可以试试 不建议大家玩零知

zxy2266 发表于 2020-6-4 13:36

4760177 发表于 2020-5-6 12:40
零和开发板 BOOT1引脚有一颗10K的下拉电阻 不能刷入Flash。。。。。
只能用零知官方的IDE新人入门可以 ...

非常赞成你的说法,不通用的东西资源不开源,用着很麻烦,我也买了,因为不兼容我的装2套编译器,麻烦死了

progesterone 发表于 2020-7-16 20:23

按照您的说法试了一下F103C8T6, 结果得到"为开发板STM32F103C8T6编译出错".请问是什么原因?

well_kim 发表于 2020-7-17 09:36

刚刚接触Arduino,学习了

YX大湿 发表于 2020-9-30 00:17

您好 ,看到您用STM32做的arduino产品。目前我有个产品需要用arduino来开发,遇到一些技术问题,希望请教您一下(如果可以希望支付您感谢费),如果您有兴趣,项目可以包给您。联系方式18508444808(微信同号)急盼联系,感谢!

naja 发表于 2020-10-7 16:05

还好吗你爸妈不会开口包括开发
页: [1]
查看完整版本: 基于stm32f103c8t6的Arduino系统