前言

文章核心

STM32的性能比Arduino的Atmel好得多,并且具有相当数量的优秀特性,这一篇中就点一下,关于如何使用Arduino IDE来编写并烧录STM32程序。

Arduino生态和STM32生态的区别?

Arduino IDE相比较Keil来说,使用更为友好并且不用考虑授权问题当然它并不适合大型工程,多数时候适合去制作拥有一两个单一功能的装置,还有就是一些创意和想法的实现,因为金字塔层级关系,使用Arduino以及Arduino IDE的人数会远远的大于STM32 和Keil/IAR,当然它从专业角度来说,并不适合商用。不过在投资人那边炫一下还是可以的,只要你是报芯片型号的话。

操作步骤

首先启动Arduino IDE,需要增加两个地址,他们都是让Arduino IDE的开发板中出现STM32型号的途径只是一个是官方维护一个算第三方吧

http://dan.drown.org/stm32duino/package_STM32duino_index.json
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json

如果你要使用STM8,就用这个,其他步骤是类似的,STM8的github项目网址:https://github.com/tenbaht/sduino

https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json

然后,我们需要去下载板子的模版,打开后会自动刷新,然后选择stm32,一共有四个项目,选择包含有自己的STM32芯片型号的下载即可,

官方的多只有一些官方开发板,比如说NUCLEO系列,我手头这一个就是比较新的STM32G0

对现有的下载选项进行配置,这里提供一个参考,型号依据你的板子的型号来

在,下载之前需要先安装STM32Programmer,国内下载站地址如下

http://www.downza.cn/soft/274655.html

下载上传成功与否,必须要按照调用的烧写器程序提示来确定,下图最下一行是Error,意思是模式不对,烧写的模式有SWD,Serial和DFU,如果你有STLINK就选择SWD,如果没有识别出来,更换USB接口再次尝试。另外就是检查烧写模式是否是SWD

上图中我使用的测试代码如下,通过STM32上面的UNO接口连接的是一个LCD Keypad Shield

#include <LiquidCrystal.h>LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);char msgs[5][16] = {"Right Key OK ","Up Key OK    ",               "Down Key OK  ","Left Key OK  ","Select Key OK" };int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;void setup()
{lcd.clear(); lcd.begin(16, 2);lcd.setCursor(0,0); lcd.print("ADC key testing");
}void loop()
{adc_key_in = analogRead(0);    // read the value from the sensor key = get_key(adc_key_in);  // convert into key pressif (key != oldkey)   // if keypress is detected{delay(50);  // wait for debounce timeadc_key_in = analogRead(0);    // read the value from the sensor key = get_key(adc_key_in);    // convert into key pressif (key != oldkey)    {   lcd.setCursor(0, 1);oldkey = key;if (key >=0){lcd.print(msgs[key]);              }}}delay(100);
}// Convert ADC value to key number
int get_key(unsigned int input)
{int k;for (k = 0; k < NUM_KEYS; k++){if (input < adc_key_val[k]){return k;}}if (k >= NUM_KEYS)k = -1;  // No valid key pressedreturn k;
}

有时候还会出现 ST-LINK error (DEV_CONNECT_ERR) 这个问题,遇到这个问题需要排除下是否被占用比如后台开着STM32Programmer,最简单的方法是重新拔插USB接口

下载成功后的提示如下

最终,可以直接的进行显示,使用起来和Arduino一样

关于STM8的补充说明

多数操作中,STM8都是和STM32类似的,但是在烧写这一块有一些区别。首先STM8是使用STLINK来连接的,目前没有找到用BootLoader的方式进行烧写

其次,使用STLINK会没有端口这是正常的,点击烧写按钮,依然可以按计划运行

只要出现这一段话就是正常下载到STM8里面了

附带STM8S103F的Arduino引脚对应图, 如果说要调用Pin,直接写PA2,PD1也是可以的~

使用Arduino IDE来编写上传STM32以及STM8代码,STM32Duino教程相关推荐

  1. 淘宝商品详情采集上架京东店铺(无货源商品数据采集接口,京东商品详情接口,淘宝商品详情接口,整店商品采集上传接口)接口代码对接教程

    淘宝商品详情采集上架京东店铺(无货源商品数据采集接口,京东商品详情接口,淘宝商品详情接口,整店商品采集上传接口)接口代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970 ...

  2. php限制文件类型,限制上传文件类型程序代码_PHP教程

    我们一般不会在前段限制用户上传文件时的文件类,因为也没什么好的办法来限制只能使用像php,asp这类来操作,下面我来介绍利用js来定义type=file浏览上传时的文件类型与php中限制上传文件类型代 ...

  3. C#高性能大容量SOCKET并发(十一):编写上传客户端

    原文:C#高性能大容量SOCKET并发(十一):编写上传客户端 客户端封装整体框架 客户端编程基于阻塞同步模式,只有数据正常发送或接收才返回,如果发生错误则抛出异常,基于TcpClient进行封装,主 ...

  4. CH55X 基于Arduino框架开发程序上传相关注意事项

    CH55X 基于Arduino框架开发程序上传相关注意事项

  5. Arduino温湿度烟雾监测上传ThingSpeak_Esp8266

    Arduino温湿度烟雾监测上传ThingSpeak_Esp8266 一.项目介绍 二.准备工作 1.硬件部分 1.2 ESP8266-01配置(重点) 1.3 接线 3.软件部分 三.代码 代码分析 ...

  6. 强强联合!Papers with Code 携手 arXiv,上传论文、提交代码一步到位

    转自 | 机器之心 作者 | 魔王 刚刚,机器学习资源网站 Papers with Code 宣布与论文预印本平台 arXiv 进行合作,论文作者在 arXiv 上上传论文时可以同步上传官方和社区代码 ...

  7. 强强联合!Papers with Code携手arXiv,上传论文、提交代码一步到位

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 刚刚,机器学习资源网站 Papers with Code 宣布与论文预印本平台 arXiv 进 ...

  8. SAE上传web应用(包括使用数据库)教程详解及问题解惑

    2019独角兽企业重金招聘Python工程师标准>>> 转自:http://blog.csdn.net/baiyuliang2013/article/details/24725995 ...

  9. php上传头像的代码,php头像上传预览实例代码

    说道上传图片,大家并不陌生,不过,在以后开发的项目中,可能并不会让你使用提交刷新页面式的上传图片,比如上传头像,按照常理,肯定是在相册选择照片之后,确认上传,而肯定不会通过form表单,点击submi ...

  10. phpcms调用后台上传的img图片 - 代码篇

    phpcms调用后台上传的img图片{$r[thumb]} 代码示下: //未裁剪图片 <img src="{thumb($r[thumb])}" alt="{$r ...

最新文章

  1. JS小数点加减乘除运算后位数增加的解决方案
  2. 1085 PAT单位排行 (25 分
  3. PHPMailer 报错:SMTP ERROR: Failed to connect to server: (0)
  4. 微信头像制作小程序源码
  5. 面试官问你如何进行程序设计?——设计模式之七大原则——单一职责、里氏代换、开闭原则、依赖倒转以及C++简单实现
  6. python告诉你ti8 dota2英雄bp
  7. 魅族人看魅族:我亲历的魅族发布会
  8. git push失败,报错fatal: does not appear to a git repository Could not read from remote repository
  9. oracle锁矩阵,你有多了解Oracle Enqueue lock队列锁机制?
  10. AtomicBoolean意义何在
  11. Lucene.net(4.8.0)+PanGu分词器 问题记录一 分词器Analyzer的构造和内部成员ReuseStategy
  12. 为何我国这么大力推进5G发展?
  13. 统计学中的均值、方差、协方差
  14. 北京交通大学计算机学院 于剑,北京交通大学计算机与信息技术学院博导介绍:于剑...
  15. 5G基础课程 第2节 5G的关键技术
  16. Vue2.0 $set() v-model.trim
  17. CRM定制要注意哪些
  18. VSCode工具 - C/C++
  19. 1 个月崩 3 次! 2021 年的 10 个宕机名场面
  20. php5.6使用mysql_php5.6+MySQL5.6+Apache2.4环境搭建安装图文教程

热门文章

  1. 监督和无监督、分类和回归算法总结
  2. 逻辑漏洞——忘记密码、重置密码(案例分析、原理)
  3. 使用Intellij来实践测试驱动开发 TDD Kata
  4. 2.字节跳动2019雀魂启动
  5. 固态硬盘是什么接口_了解移动固态硬盘接口知识,告诉你PSSD到底能多快
  6. 白杨SEO:QQ群SEO是什么?QQ群排名如何做引流与营销?【举例】
  7. HarmonyOS resources目录中“限定词目录”命名要求
  8. [源码和文档分享]基于JAVA的葫芦娃救爷爷游戏
  9. Extraneous children found when component already has explicitly named default slot. These children
  10. 基于MATLAB的R方计算