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

标签:
stm8bldc书直流无刷电机杂谈 |
分类: STM8S电机书详列 |
(图太多了,编辑起来太痛苦。先传2.3.1吧)
STVD开发环境提供了一个免费的汇编编译器,用户可直接使用汇编语言在STVD中编写汇编程序。如果使用C语言编写程序,可将COSMIC C编译器外挂于ST TOOLSET中,使用STVD进行产品的开发
2.3.1 STVD汇编语言程序设计
程序设计主要包括包括工程的建立、工程的编译和调试几个阶段。
1.工程创建
从开始菜单启动ST Visual Develop(STVD)。从菜单中选择“File->New Workspace…”,如图2-10所示。
http://s13/mw690/be5f3f60gd724864abebc&6902.3STM8程序设计
图2-10 STVD创建Workspace
在出现如图2-11所示的对话框中,选择“Create workspace and project”,点击“确定”。
图2-11 选择Create workspace and project
在新出现的对话框中,“Workspace filename”编辑框中输入workspace名字,如:demo,选择“workspace”保存的路径,如c:\stm8asm,如图2-12所示。点击“OK”。
图2-12 输入Workspace名称
在新出现的对话框中,“project filename”中输入project名字,如:demo。在“Project location”中选择project保存的路径,一般与“workspace”保存在同一个目录下。选择工具链“Toolchain”,如: ST Assembler Linker,ST Assembler是ST提供的免费的汇编编译器。“Toolchain Root”一般是默认安装的。如果在ST TOOLSET安装过程中改变了安装目录,需要确认安装路径。相关设置如图2-13所示:
图2-13 设置编译器安装路径
点击“OK”,在新出现的“MCU Selection”对话框中,选择MCU型号。可以在空白框中输入型号中的部分字符可快速筛选目标型号。点击“Select”按钮,再点击“OK”,即设置完成。如图2-14所示。
图2-14 选择芯片型号
至此,workspace和project 创建完成。
用户需要修改并添加自己的汇编代码。完成后界面如图2-15所示。
http://s11/mw690/be5f3f60g7bea0e2516ca&6902.3STM8程序设计
图2-15 STVD创建工程界面图
STVD在项目中自动添加了main.asm, mapping.asm和mapping.inc 文件。其说明如表2-4。
表2-4 main.asm, mapping.asm和mapping.inc 文件说明
文件 |
说明 |
main.asm |
- - |
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-16 Workspace 信息
用户可以根据自己的要求,修改main.asm。
在修改中断时,先在中断向量表中找到对应的中断地址,把NonHandledInterrupt中断名字修改成自定义的中断名字,其他部分不需要修改。然后定义一个中断函数。如表2-5所示和表2-6所示。
表2-5 中断定义说明
;自定义中断函数 interrupt My_Interrupt_Name My_Interrupt_Name.l ; ;…中断处理代码 ; Iret ;中断向量表 segment 'vectit' end |
说明:
dc.l {$82000000+main},复位向量在复位后直接跳转到main处执行。
表2-6 源文件main.asm
stm8/ ;* 包含文件 #include "mapping.inc" #include "stm8s207c_s.inc" |
Include区 |
;* 常量定义 MYCNT1 |
常量区 |
;/* ram0区变量定义 segment 'ram0' MY_RAM0_VAR1 |
RAM0变量区 |
;/* ram1区变量定义 segment 'ram1' MY_RAM1_VAR1 |
RAM1 变量区 |
;* 主程序(ROM) segment 'rom' main.l ; 初始化 main_loop.l JRA main_loop |
主程序区 |
Subroutine.l |
子程序区 |
;* 中断程序 interrupt NonHandledInterrupt |
中断程序区 |
;*中断向量映射 dc.l {$82000000+main} dc.l {$82000000+NonHandledInterrupt} dc.l
{$82000000+NonHandledInterrupt} ;…… dc.l
{$82000000+NonHandledInterrupt} dc.l
{$82000000+NonHandledInterrupt} end |
中断向量映射 |
2.工程编译
源程序编辑完成后,可选择菜单栏“Build->Rebuild All”,编译工程。如图2-17所示。
图2-17 工程编译选择
若源程序正确无误,会显示如图2-18所示内容:
http://s15/mw690/be5f3f60gd72491b8d1fe&6902.3STM8程序设计
图2-18 工程编译结果
若要查看编译后的程序代码的大小,可找到工程目录下的Debug文件夹,在Debug目录下有个.map文件。本例是stm8asm.map,如图2-19和图2-10所示。
图2-19 stm8asm.map文件路径
图2-20 stm8asm.map文件信息
在stm8asm.map文件里,记录了ram0、ram1、rom、stack、eeprom、rom等的使用情况。本例的代码地址范围是:’rom'
3.工程调试
首先,选择调试与仿真的工具。可通过菜单栏“Debug instrument->Target Settings”来设置,如图2-21所示。
http://s10/mw690/be5f3f60gd724954bcac9&6902.3STM8程序设计
图2-21调试工具菜单选择
在弹出的对话框中,列表中列出了此开发环境支持的所有工具。常用的在线调试工具是Swim Rlink和Swim ST-LINK。其中Simulator是软件仿真。如图2-22所示,选择需要的仿真工具,并确定。
http://s5/mw690/be5f3f60gd7249605a474&6902.3STM8程序设计
图2-22调试工具配置
可从菜单栏选择”Debug-> Start Debugging”,进入调试状态,如图2-23所示。
http://s6/mw690/be5f3f60gd72496c88725&6902.3STM8程序设计
图2-23
可通过View下拉菜单的菜单项进行不同的参数观测,如图2-24所示。
http://s14/mw690/be5f3f60gd724974ed1dd&6902.3STM8程序设计
图2-24 观察参数选择
进入调试状态后,界面如图2-25所示。之后,就可以单步仿真调试了
http://s1/mw690/be5f3f60gd72498c88a00&6902.3STM8程序设计
图2-25 单步调试界面图