历史上的今天
返回首页

历史上的今天

今天是:2025年04月14日(星期一)

正在发生

2020年04月14日 | STM8 开发环境、最小项目工程、最小系统

2020-04-14 来源:eefocus

一、STM8开发环境


使用STM8需下载下列工具:


1、ST 8bit MCU通用集成开发环境 - ST Visual Develop

http://www.st.com/stonline/products/support/micro/files/st7toolset.exe


IDE包含代码编辑、汇编编译器、代码调试功能,不含C编译器。同时IDE还自带ST Visual Programer编程软件,支持主流8bit


2、COSMIC C Compiler for STM8 16K Limited


http://www.cosmicsoftware.com/download_stm8_16k.php


免费下载,可申请16K代码限制版本的C 编译器。安装后,会要求注册。按照要求填写注册信息后COSMIC会提供回复,会收到一个16K License文件,将它copy到COSMIC安装路径下的License目录,默认的路径…


打开STVD,选择菜单栏Tools -Options对话框,找到Toolset标签,Toolset中选择“STM8S COSMIC”,Root path中选择COSMIC路径,默认是“CXSTM8_16K”路径。


运行ST Visual Develop(STVD) 集成开发环境,通过菜单栏Files -> New WorkSpace我们可以新建一个新的STM8工程。

1

在弹出的“New WorkSpace”对话框中,我们可以STVD支持的集中工程模版类型。这里我们选择使用“Create workspace and project” 。

2

WorkSpace是Project的管理平台,允许在一个WorkSpace中出现多个Project,通过设定我们可以选择当前的活动项目。

3

输入当前要建立的项目名称,并且可以根据应用的需要通过“Project location”来选择更改WorkSpace存放路径。因这里介绍的例程我们需要支持的MCU平台是STM8系列,C语言使用COSMIC,因此我们还需要对使用的Toolchain进行选择。

4

下一步我们要选择工程使用的MCU型号。

5

在对话框中我们可以看到当选中一个MCU型号,在右边的工具列表清单中会显示调试工具支持状态,绿色表示工具可以支持,灰色表示不支持。这里仅是提供调试或仿真支持,不表示编程支持,具体编程支持需要通过STVP编程软件确认。 


这样一个最小的应用工程模版STVD就帮我们自动产生了。

6

IDE界面右边的项目目录树中,我们可以看到STVD对工程自动增加了两个文件,一个是main.c文件,一个是stm8_interrupt_vector.c文件。后者提供了STM8所有的中断入口函数的地址表,以及用于各种不同类型外设中断函数名称申明。


在stm8_interrupt_vector.c文件中,我们可以看到除去Reset向量外其它中断向量的入口均是统一使用void NonHandledInterrupt (void)函数。对于正常的使用我们还是需要重新跟改中断函数入库函数名称。

7

对于中断函数的入口修改: 


1、struct interrupt_vector const _vectab[] 指明的中断向量表,每一个类似{0x82, NonHandledInterrupt},偏移量的申明表示的都是一个中断矢量对于的中断函数名称。


 

2、中断函数的申明 @far @interrupt void NonHandledInterrupt (void)


例当需要使用I2C中断的时候,可以这样做: 

1、申明I2C中断函数名称: 

在struct interrupt_vector const _vectab[]中找到I2C中断函数入口,加入I2C中断函数名称 

      {0x82, I2C_Server_Interrupt },   /* IRQ19 - I2C (I2C interrupt) */ 

2、在stm8_interrupt_vector.c文件中添加服务函数: 

      @far @interrupt void I2C_Server_Interrupt (void)


      { 

         ~~~~~加入中断服务代码~~~~~~

         return; 

      }


3、最好在文件头上方申明外部可调用:extern void I2C_Server_Interrupt (void) 


4、或者仅是申明函数,再定义STM8_IT.c、STM8_IT.h文件,将中断服务程序全部放置其中。


工程建立好以后,可以通过菜单栏“Project”->“Settings”来修改项目配置

8

在项目设定对话框中,我们可以对汇编编译器、C编译器、连接器的配置做修改。 


当写好一个程序需要进入调试时,我们可以通过STVD菜单栏的“Debug Instrument” 来选择使用何种调试工具。这里我们使用Rlink,SWIM接口。Simulator是指软仿真功能。

9

Tip:

1、项目编译默认存在Release、Debug两种选择。如需要自行添加其它类型,可通过菜单栏“Build->Configurations…”来配置。

10

11

配置好后可通过工具栏“Project”来直接选择。

12

2、WorkSpace管理多个Project

直接在WorkSpace栏中通过鼠标右键打开workspace的属性,通过“Insert Project int Workspace…”可以在添加多个项目。

13

二、STM8S的最小硬件系统

    STM8的最小硬件系统包含下列部分:

    1、电源

    2、时钟管理

    3、复位管理

    4、调试接口(SWIM)

    1、电源


STM8S系列MCU的工作在3.0V ~ 5.5V之间,芯片内部自带一个电源管理系统可以为自身核心工作提供1.8V电源。


点击下载STM8 for COSMIC 最小工程    :STM8 C Templet no reg.rar


工程含中断、入口函数、不含硬件寄存器描述文件。

需要特别注明:ADC1/ADC2、UART2/UART3。

注:STM8的堆栈开始地址?

不同容量的Flash,堆栈起始地址是不相同的,具体可以看STM8S Microcontroller Family Reference Manual 的Memory and register map章节。


当中断发生时,MCU会自动压栈下列寄存器:CC, A, X, Y, PCE、PCH、PCL,9个字节,共耗用9个CPU周期。14

推荐阅读

史海拾趣

Acmelux Taiwan Inc公司的发展小趣事

面对日益激烈的国际竞争,Acmelux Taiwan Inc公司积极实施全球化战略布局。公司先后在欧美、亚洲等地设立了研发中心和生产基地,以充分利用全球资源,提升公司的整体竞争力。通过与当地企业的合作与交流,Acmelux不仅拓展了国际市场,还吸收了大量先进的技术和管理经验,为公司的持续发展注入了新的活力。

Chenmoun Enterprise Ltd公司的发展小趣事

随着公司业务的不断扩张,Chenmoun Enterprise Ltd开始实施全球化战略布局。公司在全球范围内设立了研发中心和生产基地,充分利用各地的资源优势和人才优势,提升产品的竞争力。同时,公司积极开拓国际市场,与多家国际知名企业建立了紧密的合作关系,实现了业务的快速增长。

Helicomm公司的发展小趣事

Chenmoun Enterprise Ltd成立之初,专注于研发和生产电子产品的基础元件。随着技术的不断发展,公司敏锐地把握了市场趋势,开始研发具有创新性的芯片技术。通过不懈的努力,Chenmoun成功推出了性能卓越、成本更低的芯片产品,迅速占据了市场份额,并逐渐在电子行业内崭露头角。

ESPROS [Espros Photonics corp]公司的发展小趣事

ESPROS的ToF传感器技术已成功应用于多个领域,包括无人机飞行避障及定高、人机交互和手势识别、机器人定位和智能导航、人体检测和物体探测、工业自动化以及汽车自动驾驶等。这些应用不仅展示了ESPROS技术的广泛适用性,也证明了其在光电传感器领域的强大实力。

HTSEMI( Jin Yu Semiconductor )公司的发展小趣事

随着技术实力的不断提升,金宇半导体开始积极拓展国内外市场。公司制定了详细的市场拓展计划,通过参加国际电子展、举办技术研讨会等方式,加强与客户的沟通和交流。同时,金宇半导体还加大了品牌建设的力度,通过广告宣传、媒体合作等多种方式提升品牌知名度和美誉度。这些努力使得金宇半导体的市场份额逐年攀升,品牌影响力也日益增强。

CalAmp公司的发展小趣事

在某年第一季度,CalAmp公司发布了其财报数据。根据财报,该季度公司实现营收7089.1万美元,虽然比市场预期的7566万美元略低6.30%,但仍然展现了稳健的增长态势。同时,公司的每股收益为-0.11美元,低于预期的0.04美元,这可能与公司在研发和市场拓展方面的持续投入有关。尽管如此,CalAmp公司在无线通信解决方案应用领域的广泛布局和深厚的客户基础,使得其整体业绩依然保持稳健。

问答坊 | AI 解惑

CN3063-专为太阳能供电方案

概述:             CN3063是可以用太阳能电池供电的单节锂电池充电管理芯片.该器件 内部包括功率晶体管,应用时不需要外部的电流检测电阻和阻流二极管.         内 ...…

查看全部问答>

cofdm 无线应急指挥调度系统

cofdm产品   无线应急指挥调度系统…

查看全部问答>

仪表放大器设计指南

本帖最后由 paulhyde 于 2014-9-15 03:59 编辑 仪表放大器设计指南,希望对做仪器仪表的同学有所帮助!  …

查看全部问答>

CAN总线概况与原理

一、概述       对于一般控制,设备间连锁可以通过串行网络完成。因此,BOSCH公司开发了CAN总线(Controller Area Network),并已取得国际标准化组织认证(ISO11898),其总线结构可参照I SO/OSI参考模型。同时,国际上一些大的半导体 ...…

查看全部问答>

网络收音机有人做不?

网络收音机有人做不? 我想玩玩…

查看全部问答>

WinCE 文件夹属性

Directory(\"\\123\"):-Directory(\"war3 \") 可以在mycomputer目录下创建一个文件夹,请问这个文件夹的属性要怎么设置 ?…

查看全部问答>

我在fedora9上的交叉编译

编译embedded flash出现了impossible constraint in `asm\'错误,不知道怎么解决,是修改makefile文件么?…

查看全部问答>

求助t-DMB的音频AAC++负载

本人最近在做T-DMB项目,想问问AAC++方面的!   我现在把SL包解析后获得SL包负载数据是如何组织的?我要对AAC++解码,该如何处理SL包的负载? 有搞过这方面的大侠吗?给点提示,定重谢! 我最想知道到底解析音频SL包后的数据是啥格 ...…

查看全部问答>

Wince 下访问IO端口

项目要通过IO端口通讯数据,本人不会汇编,在网上看到可以嵌入汇编,我的代码如下,每次读上来数据都是0xFF,是哪里有问题吗?第一次用evc通过模拟器显示,也不知如何单步执行,比较痛苦。高手指点。 unsigned char pio_inbyte( WORD addr ) { u ...…

查看全部问答>