STM8 开发环境

一、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工程。

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

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

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

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

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

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

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

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

 

 

      对于中断函数的入口修改: 
      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”来修改项目配置(Category选择)

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

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

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

                                                                        

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

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

二、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周期。

以上仅为参考,实际可能会复杂一点,总之,安装之后随着过程走一编,即可知道正确或者错误。可以参考《STM8单片机入门》王志杰

1.下载STVD 工具,如果不能创建工程项目,则在ST公司下载最新版本的。

     例如:   http://www.st.com/internet/com/SOFTWARE_RESOURCES/TOOL/TOOLSET/sttoolset.zip

2.COSMIC C Compiler for STM8 16K/32K Limited ; STM8的C编译器

     A. 在ST网站上,注册下载, 安装C编译器时,要会根据要求填写下面的注册信息,要用英文填写完整。选择”Register by Email”,此时会启动计算机系统默认的邮件软件,发送申请协议的邮件。用户会受到一个协议文件。将其拷 贝 到 安 装 目 录 下 的 license 目 录 下 即 可 , 默 认 目 录 为 C:\Program Files\COSMIC\CXSTM8_16K\license。另外,一个更简单的方式就是直接书写并发送一个e-mail。不同的用户、不同的计算机“Registration Information for:”和“Product Information”是不同的。一个license文件只允许一台计算机使用。

3.STVD创建新文件,设置好路径,即可。

<><>下载破解版的编译器也不错 4.3.4版本网上就可以找到。

打开相关调试文件
1. 打开测试文件test.stw(本教程是用test.stw的工程文件)

STM8 开发环境_第1张图片

STM8 开发环境_第2张图片

2. 载入后进入了编程画面,进入仿真界面,只要按菜单栏上的"Debug -> Start Debugging",或者按菜单栏上的蓝色按钮,就进入了仿真界面进行仿真。

STM8 开发环境_第3张图片
(红色框框就是仿真按钮)

3. 软件仿真需要设置相应的寄存器的,在" Debug instrument"菜单下,可以设置相应的MCU设置。

----使用STLink III仿真器,硬件仿真
  要进行硬件仿真,也要进行软件设置,选择菜单" Debug instrument -> Target Settings",进入了设置界面。在" Debug session"里面选择您所使用的仿真器,本例子是用的STLink,所以选择"Swim ST-Link",然后在"Target Port Selection"里面选择USB,接着按OK,这样就完成了硬件仿真设置。

打开相关调试文件
1. 打开测试文件test.stw(本教程是用test.stw的工程文件)

STM8 开发环境_第4张图片

STM8 开发环境_第5张图片

2. 硬件仿真需要设置相应的MCU型号的,如果MCU型号设置与实际不相符则无法进行仿真。载入了源文件之后,在" Project -> Settings -> MCU Selection"设置MUC型号。(修改过MCU型号后需要编译多一次)

STM8 开发环境_第6张图片

3. 设置完MCU型号后,要进入仿真界面,只要按菜单栏上的"Debug -> Start Debugging",或者按菜单栏上的蓝色按钮,就进入了仿真界面进行仿真。

STM8 开发环境_第7张图片
(红色框框就是仿真按钮)

● STM8之调试程序

下面简单介绍使用ST Visual Develop进行仿真调试
调试控制栏
调试控制栏可以控制程序的执行状态,所有的调试控制都可以由菜单,快捷键和调试工具栏实现。

1.开始调试(Start Debugging)
此命令将启动调试模式,并使所有的调试控制命令处于有效。此命令将连接调试平台,装载目标文件并执行复位操作。

2.停止调试(Stop Debugging)
此命令将停止调试过程,并断开与调试平台的连接,进入编辑模式。

3.光标跳转到当前程序处(Go To PC) 
让光标跳转到当前运行的程序语句行处。

4.全速运行(Run)(Ctrl+F5) 
调试菜单中的运行命令将启动(重启动)程序。程序将一直运行直到被用户停止或遇到一个断点。只有当程序处于停止运行状态时才能执行此命令。

5.复位(Reset)( Ctrl+ SHIFT+F5 ) 
此命令可以让目标程序复位。当程序正在运行时,无法执行此命令。如果用户是在源级模式中,程序会在复位完成后,跳回到第一条用户的源代码语句处。复位命令执行后,所有窗口中的信息都将更新。

6.重新开始应用程序(Restart Application)
此命令可以让目标程序复位并且条状到主函数。当程序正在运行时,无法执行此命令。此复位命令执行后,所有窗口中的信息都将更新。

7.继续运行(continue)
调试菜单中的暂停命令让暂停或者停留在断点的程序继续运行下去。

8.暂停(stop)(SHIFT+F5) 
调试菜单中的暂停命令将停止程序运行。当程序停止时,所有窗口中的信息都将更新。只有当程序处在运行状态时才能执行此命令。

9.逐过程(Step Into)(F11) 
调试菜单中的逐过程命令只执行一条指令。如果此条指令包含一个函数调用/子程序调用,该函数/子程序也会同时执行。如果在逐过程命令中遇到用户设置的断点,程序运行将被挂起。在逐过程命令执行完毕后,所有窗口中的信息才会被更新。

a.跳跃(Step Over)(F10) 
调试菜单中的跳跃命令会使程序不进入子程序运行,直到当前函数结束。如果遇到用户设置的断点,程序运行将被挂起。当程序处在最外层(如主函数)时,此时执行跳出命令,程序将继续运行,直到遇到一个断点或被用户停止。在该命令执行完成后,所有窗口中的信息都将更新。

b.汇编语言逐过程(Step Into ASM)(Alt+F11) 
调试菜单中的逐过程命令只执行一条指令。如果此条指令包含一个函数调用/子程序调用,该函数/子程序也会同时执行。如果在逐过程命令中遇到用户设置的断点,程序运行将被挂起。在逐过程命令执行完毕后,所有窗口中的信息才会被更新。

c. 汇编语言跳出(Step Over ASM)(Alt+F10) 
调试菜单中的跳出命令会使子函数程序一直运行,直到当前函数的汇编语言结束。如果遇到用户设置的断点,程序运行将被挂起。当程序处在最外层(如主函数)时,此时执行跳出命令,程序将继续运行,直到遇到一个断点或被用户停止。在该命令执行完成后,所有窗口中的信息都将更新。

d.跳出(Step Out)(Ctrl+F11) 
调试菜单中的跳出命令会使在子函数程序一直运行,直到当前函数的结束。如果遇到用户设置的断点,程序运行将被挂起。当程序处在最外层(如主函数)时,此时执行跳出命令,程序将继续运行,直到遇到一个断点或被用户停止。在该命令执行完成后,所有窗口中的信息都将更新。

e.运行到断点处(Run To Cursor)
调试菜单中的运行到断点处命令,将使程序运行到源代码的断点处停止。

f.运行到光标处(Run To Cursor)
调试菜单中的运行到光标处命令,将使程序运行到源代码窗口中光标指示的语句处停止。此时如果遇到用户的断点,程序的运行将不会被挂起。如果程序运行永远达不到光标指示处的语句,程序将一直继续运行,直到被用户停止。当此命令结束后,所有窗口中的信息都将更新。由于此命令是与光标位置有关,所以只有当源代码窗口激活时才有效。

你可能感兴趣的:(ARM)