加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计

(2013-03-05 10:07:02)
标签:

stm8

bldc

直流无刷电机

杂谈

分类: STM8S电机书详列

(图太多了,编辑起来太痛苦。先传2.3.1吧)

STVD开发环境提供了一个免费的汇编编译器,用户可直接使用汇编语言在STVD中编写汇编程序。如果使用C语言编写程序,可COSMIC C编译器外挂于ST TOOLSET中,使用STVD进行产品的开发

2.3.1 STVD汇编语言程序设计  

程序设计主要包括包括工程的建立、工程的编译和调试几个阶段。

1.工程创建

从开始菜单启动ST Visual DevelopSTVD)。从菜单中选择“File->New Workspace…”,如图2-10所示。

http://s13/mw690/be5f3f60gd724864abebc&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

2-10 STVD创建Workspace

在出现如图2-11所示的对话框中,选择“Create workspace and project”,点击“确定”。

 http://s13/mw690/be5f3f60gd72486ff841c&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-11 选择Create workspace and project

在新出现的对话框中,“Workspace filename”编辑框中输入workspace名字,如:demo,选择“workspace”保存的路径,如c:\stm8asm,如图2-12所示。点击“OK”。

 http://s1/mw690/be5f3f60gd72487b8ac00&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-12 输入Workspace名称

在新出现的对话框中,“project filename”中输入project名字,如:demo。在“Project location”中选择project保存的路径,一般与“workspace”保存在同一个目录下。选择工具链“Toolchain”,如: ST Assembler LinkerST AssemblerST提供的免费的汇编编译器。“Toolchain Root”一般是默认安装的。如果在ST TOOLSET安装过程中改变了安装目录,需要确认安装路径。相关设置如图2-13所示:

 http://s11/mw690/be5f3f60gd7248851a50a&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-13 设置编译器安装路径

点击“OK”,在新出现的“MCU Selection”对话框中,选择MCU型号。可以在空白框中输入型号中的部分字符可快速筛选目标型号。点击“Select”按钮,再点击“OK”,即设置完成。如图2-14所示。

 http://s16/mw690/be5f3f60gd7248a0181ff&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-14 选择芯片型号

至此,workspaceproject 创建完成。

用户需要修改并添加自己的汇编代码。完成后界面如图2-15所示。

http://s11/mw690/be5f3f60g7bea0e2516ca&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-15 STVD创建工程界面图

STVD在项目中自动添加了main.asm, mapping.asmmapping.inc 文件。其说明如表2-4

2-4 main.asm, mapping.asmmapping.inc 文件说明

文件

说明

main.asm

-          基本的程序架构

-          文件中包含了中断向量和中断函数(NonHandledInterrupt),用户可根据此进行参考修改

-          RAM0,RAM1和清堆栈程序。用户可删除此部分程序,自己进行变量的初始化。建议在程序开始时对自己定义的变量初始化。

mapping.asm

定义了段的名字和地址(ram0, ram1, stack, eeprom, rom, vectit)

mapping.inc

定义了段(ram0,ram1,stack)的起始和结束地址

 

从安装目录下,如默认安装目录“C:\Program Files\STMicroelectronics\st_toolset\asm\include 找到相关MCU型号的寄存器定义文件拷贝到当前工程目录下(本例中用到STM8S207C_S.ASM STM8S207C_S.INC),并添加到工程项目中。添加后的workspace如图2-16所示:

http://s5/mw690/be5f3f60gd7248e7c8454&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-16 Workspace 信息

用户可以根据自己的要求,修改main.asm

在修改中断时,先在中断向量表中找到对应的中断地址,把NonHandledInterrupt中断名字修改成自定义的中断名字,其他部分不需要修改。然后定义一个中断函数。如表2-5所示和表2-6所示。

2-5 中断定义说明

 

;自定义中断函数

interrupt My_Interrupt_Name

My_Interrupt_Name.l

;

;…中断处理代码

;

Iret

 

;中断向量表

segment 'vectit'

    dc.l {$82000000+main}               ; reset

    dc.l {$82000000+ My_Interrupt_Name}    ; trap

    ;…

    ;其他中断

    ;…

end

 

说明:

dc.l {$82000000+main},复位向量在复位后直接跳转到main处执行。

 

2-6 源文件main.asm

stm8/   ; 第一行必须保留而且要顶格写.指定目标单片机的指令集

;* 包含文件

#include "mapping.inc"

#include "stm8s207c_s.inc"

 

Include

 

;* 常量定义

     #define MYDF1  3

MYCNT1  EQU 2

 

常量区

 

;/* ram0区变量定义

segment 'ram0'   ;从此行以后是 ram0变量

MY_RAM0_VAR1         DS.B 1   ;保留1个字节的变量空间

 

RAM0变量区

 

;/* ram1区变量定义

segment 'ram1'   ;从此行以后是 ram1变量区

MY_RAM1_VAR1       DS.B 128  ;定义128个字节的一组变量空间

 

RAM1 变量区

 

;* 主程序(ROM)

segment 'rom'  ;从此行以后是 rom代码区

main.l        

; 初始化

main_loop.l

     ;……

JRA main_loop

 

 

 

主程序区

 

 

 

Subroutine.l

     Ret

 

子程序区

;* 中断程序

interrupt NonHandledInterrupt

NonHandledInterrupt.l

Iret

 

中断程序区

 

 

;*中断向量映射

segment 'vectit'

dc.l {$82000000+main}              ; reset

dc.l {$82000000+NonHandledInterrupt}   ; trap

dc.l {$82000000+NonHandledInterrupt}   ; irq0

;……

dc.l {$82000000+NonHandledInterrupt}   ; irq28

dc.l {$82000000+NonHandledInterrupt}   ; irq29

end

 

 

 

 

 

中断向量映射

 

 

 

2.工程编译

源程序编辑完成后,可选择菜单栏“Build->Rebuild All”,编译工程。如图2-17所示。

 http://s4/mw690/be5f3f60gd7248fa36073&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-17 工程编译选择

若源程序正确无误,会显示如图2-18所示内容:

http://s15/mw690/be5f3f60gd72491b8d1fe&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-18 工程编译结果

若要查看编译后的程序代码的大小,可找到工程目录下的Debug文件夹,在Debug目录下有个.map文件。本例是stm8asm.map,如图2-19和图2-10所示。

 http://s5/mw690/be5f3f60gd72493a25244&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-19 stm8asm.map文件路径

 http://s1/mw690/be5f3f60gd724945b93d0&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-20 stm8asm.map文件信息

stm8asm.map文件里,记录了ram0ram1romstackeepromrom等的使用情况。本例的代码地址范围是:rom'   byte from     8080 to     81F5程序代码大小是:81F5 – 8080 = 175(HEX) = 373个字节

3.工程调试

首先,选择调试与仿真的工具。可通过菜单栏“Debug instrument->Target Settings”来设置,如图2-21所示。

http://s10/mw690/be5f3f60gd724954bcac9&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-21调试工具菜单选择

在弹出的对话框中,列表中列出了此开发环境支持的所有工具。常用的在线调试工具是Swim RlinkSwim ST-LINK。其中Simulator是软件仿真。如图2-22所示,选择需要的仿真工具,并确定。

http://s5/mw690/be5f3f60gd7249605a474&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-22调试工具配置

可从菜单栏选择”Debug-> Start Debugging”,进入调试状态,如图2-23所示。

http://s6/mw690/be5f3f60gd72496c88725&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-23  调试菜单选择

可通过View下拉菜单的菜单项进行不同的参数观测,如图2-24所示。

http://s14/mw690/be5f3f60gd724974ed1dd&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-24 观察参数选择

进入调试状态后,界面如图2-25所示。之后,就可以单步仿真调试了

http://s1/mw690/be5f3f60gd72498c88a00&6902.3STM8程序设计 2.3.1 STVD汇编语言程序设计" TITLE="第二章 2.3STM8程序设计 2.3.1 STVD汇编语言程序设计" />

 

2-25 单步调试界面图

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有