历史上的今天
返回首页

历史上的今天

今天是:2025年03月16日(星期日)

正在发生

2020年03月16日 | STM8入门以及程序编译、烧录、IAR使用方法(扫盲篇)

2020-03-16 来源:eefocus

1、硬件环境:STM8S003F3P6、ST-LINK stlink V2

2、软件环境:Embedded Workbench 6.5(IarIdePm)、ST Visual Programmer(STVP)


STM8以其超高的性价比,在低端单片机领域占领了很大的市场,市面上很多单片机产品都能够看到STM8的身影,下面对STM8和89C51来做简单的对比:


1、对“89C51”而言:

对“89C51”而言,其能满足大部分需求,但最初代的“89C51”不具有“ADC”、“PWM”等外设功能;而且单就“ADC芯片”而言,列举一下4点:

i)、“价格方面”:以“STC89C52”(DIP-40)为例,工作电压为“+5.0V”,其“某宝”价格多在“4.5RMB/PCS”以 上;以“ADC0804”(8bit-ADC)为例,其“某宝”价格多在“5.5RMB/PCS”以上, 过于便宜的芯片,无法保 证;

ii)、“应用方面”:以“ADC0804”(8bit-ADC)为例,即便是单片“贴片-SOP20封装”,其芯片在PCB板上所占面积亦不可忽略,由此带来的“电源”、“GND”、“通信线路布线难度”等问题,在后续开发中,会随着“开发规模增加”而越发困难;

iii)、“开发方面”:最新的“stc系列单片机”也引入了“ADC”、“PWM”等功能,“指令集”采用“CISC”,开发级别为“寄存器”;

iv)、“基本电路”:在“基本电路”的4部分中,其“晶振电路”不能省略,“外部晶振”多采用“11.0592MHz”; 其“下载方式”多采用“串口下载”,因此其“下载电路”与“串口电路”共用同一线路;“代码下载完成”后,需“热重启”方可运行代码;

 

2、对“STM8”而言:

对“STM8”而言,其具有“ADC”、“PWM”等外设功能;而且单就“STM8芯片”而言,列举一下4点:

i)、“价格方面”:以“STM8s003f3p6”(集成:10bit-ADC)为例,工作电压为“+5.0V”/“+3.3V”(推荐),其“某宝”价格多在“1.35RMB/PCS”以上,过于便宜的芯片,无法保证;

ii)、“应用方面”:以“STM8s003f3p6”,对“贴片-TSSOP20封装”,其芯片在PCB板上可省略“ADC芯片”所占面积,由此带来的“电源”、“GND”、“通信线路布线难度”等问题也将迎刃而解;

iii)、“开发方面”:以“STM8s003f3p6”,现已有“专用Lib库”,开发级别可为“寄存器”或“库开发”,可有效提高“开发效率”;

iv)、 “基本电路”:在“基本电路”的4部分中,其“晶振电路”而言,“STM8”默认使用“芯片内部”自带的“16MHz频率”,因此,若无特殊要求,“外部晶振”可省略,可进一步减小“PCB板面积”、“简化PCB布线”;其“下载方式”多采用“SWD下载”,因此其“下载电路”与“串口电路”不为同一线路,且“代码下载完成”后,无需“热重启”即可运行代码;


可见,STM8还是很有优势的,但是在稳定性方面STM8却比不上51单片机,原因很显然。

关于STM8程序的烧写、编译过程,网上很多资料有介绍,但是都比较乱,不成体系,对于刚刚接触STM8的读者来说可能比较费劲,会遇到很多坑,笔者亦是如此,故在此记录一下,供后来者学习借鉴。在进入正题之前,先来认识几个软件,这几个软件可能对于经常使用Keil来编译和ISP烧录的朋友来说可能就比较陌生,毕竟,STM8和STM32的开发环境区别还是蛮大的,Keil只能用来开发STM32/C51而无法开发STM8.


①Embedded Workbench 6.5(IarIdePm)

软件图标如下图

IAR的工程文件格式为*.eww,安装完IAR之后双击即可打开工程。这里点一下IAR的常用功能。


1)IDE主要设置(Tools->Options),在这里可以进行一些IDE系统设置,比如字体大小、配色、显示行号等

2)工程右键->Options,工程配置界面,

这里可以配置一些工程相关的设置,比如编译链接等选项。


3)编译按钮

工具栏中最常用的是两个按钮,第一个是编译(compile)、第二个是编译链接生成可执行文件(make),其中最常用的是第二个,毕竟一步到位嘛。总体来说IAR这个软件还是很友好的,Keil有的功能它可以做的更好,Keil没有的功能它也有,而且还能自定义注释模板(详见我的另外一篇文章https://blog.csdn.net/pang9998/article/details/90726280),可以自动插入漂亮的注释模板:

相信熟悉Keil IDE的朋友能够很快上手!好了开发环境介绍完了,下面来介绍一下烧录软件,STM8一般用STVP工具下载(笔者使用IAR自带的下载调试功能总是出错,不知如何配置,希望了解的朋友能够给些建议~)


②ST Visual Programmer(STVP)


1)软件图标为:主要界面如下图所示:

其中程序下载步骤分为三步:①打开可执行文件,②选择单片机型号,③下载程序 (Program->All tabs),打开可执行文件*hex/*.s19的时候STVP会进行校验,如果校验成功则会提示 File successfully loaded. File Checksum 0xAF11A。


②烧录器,STM8S003资源有限,因超低的成本不可能有太多冗余的资源,故芯片本身不带ISP BootLoader的(有几款同系列高级一点的可能带BootLoader,但是在产品中就没必要带BootLoader了,完全没有必要!),因而无法通过TTL串口下载程序,而需要专门硬件来烧录,这个硬件就是ST-LINK stlink V2,好用不贵,十几元一个!

③接线方式(四根线)


ST-LINK stlink V2              STM8


3.3V                                     VCC

RST                                     NRST

SWIM                                  SWIM

GND                                    GND


注意程序烧录之后,需要拔掉RST连接线,这时候,程序才能开始运行。

推荐阅读

史海拾趣

Gould Ami公司的发展小趣事
检查传感器是否损坏或污垢阻塞,必要时进行清洗或更换。同时确保传感器安装位置正确,能够准确反映水位变化。
Cypress Industries公司的发展小趣事

为了更好地服务全球客户,Cypress积极实施海外扩张和本土化战略。公司在菲律宾、印尼等地设立了组装和检测工厂,同时在美国、欧洲和亚洲等多个国家和地区设立了设计中心。这种本土化战略使Cypress能够更好地了解当地市场需求,提供定制化的产品和解决方案。

Green Power Solutions公司的发展小趣事
安装完毕后,仔细检查电路连接是否正确,然后通电测试稳压器的输出电压和稳压精度是否正常。
FILTRONIC公司的发展小趣事

随着全球对可持续发展的重视日益增强,FILTRONIC也开始关注自身的环保和社会责任问题。公司积极采取措施减少生产过程中的环境污染和资源浪费,推广绿色生产和循环经济理念。同时,FILTRONIC还积极参与社会公益事业和慈善活动,为社区的发展和进步贡献自己的力量。这些努力不仅展现了FILTRONIC作为一家负责任企业的形象,也为公司的长远发展奠定了坚实的基础。

胜利(VICTOR)公司的发展小趣事

为了进一步拓展市场,胜利公司开始与其他品牌进行跨界合作。例如,公司与知名运动品牌合作推出联名款羽毛球鞋和服装,吸引了更多消费者的关注。此外,公司还与电商平台合作,开展线上销售业务,为消费者提供更加便捷的购物体验。

光磊(GL)公司的发展小趣事

1968年,胜利公司(VICTOR)在台湾创立,创始人李明怀揣着对羽毛球运动的热爱和对品质的执着,决定进入羽毛球用品制造行业。他带领团队克服技术难关,不断研发新产品,逐渐在市场上崭露头角。

问答坊 | AI 解惑

降低FPGA功耗的设计技巧

使用这些设计技巧和ISE功能分析工具来控制功耗    新一代 FPGA的速度变得越来越快,密度变得越来越高,逻辑资源也越来越多。那么如何才能确保功耗不随这些一起增加呢?很多设计抉择可以影响系统的功耗,这些抉择包括从显见的器件选择到细小的基 ...…

查看全部问答>

IC测试原理解析

      芯片测试原理讨论在芯片开发和生产过程中芯片测试的基本原理,本文将讨论怎么把这些原理应用到存储器和逻辑芯片的测试上。       存储器芯片测试介绍          &n ...…

查看全部问答>

兼职pcb设计

本人在一家研发公司担任Pcb layout工程师。 具有多年的电路设计和PCB设计经验,能独立处理工作,有多层板和高密度板的设计经验,有着电子专业水平和硬件设计能力,设计过单面,双面,4层,6层.8层和多层板。 熟悉PCB生产加工工艺和PCB装配精度要求 ...…

查看全部问答>

单片机keil c语言入门

本帖最后由 paulhyde 于 2014-9-15 09:10 编辑 RT  …

查看全部问答>

用MOC3041后还需过零检测吗?

整个电路时单片机温控系统,想用MOC3041+BT136去控制加热棒的启停,不是说MOC3041就有过零检测的功能吗,那整个电路里是不是不需要再额外使用过零检测电路了?…

查看全部问答>

CSocket断言错误

我用CSocket传输文件,接收时会出现断言错误:socketcore.cpp,line: 1466,我看了一下这个文件,断言是OnSocketDead函数里的assert(hEvent!=Null)这句,请问各位大侠这是什么问题呢?…

查看全部问答>

电源设计技巧有没有比较实用的公式?

在书本上有许多电源设计公式,有点糊涂,请各位指教。…

查看全部问答>

请教各位一个signed int相加的问题

例如有8个signed int相加,因为结果不会大于0xfff但可能大于0xff所以用三个字节来存放计算结果, 现在就有一个麻烦了,三个字节的结果我怎么知道它是正的还是负的?…

查看全部问答>