STVD的ST7配置指南
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STVD的ST7芯片配置指南
目前用ST7芯片的新人很多,他们可能不清楚用STVD怎么配置ST7芯片,自己随意配置可能会出各种奇怪的问题。
因此这里给出一份指导性的配置说明。
这份说明适合于我们大多数用ST7芯片的主板产品,在不清楚怎么配置的情况下建议按此文件进行配置。
如果有特殊阅读编辑环境STVD和编译器ST7 Cosmic的用户手册。
下面的具体的配置方法及说明。
1、没有标注的地方不应随意改动,选择默认配置就可以了。
2、红线标识的内容分别用于选择编译器以及编译器的路径。
3、在”Show MCUs”那里自己填型号,或者在”MCUs”中点击所用MCU型号,然后
点”Select”,所选中的MCU型号将在”Selected MCU”中显示出来。
4、“Memory Models”选择”Small Memory”。
”Optimizations”选择为”Default”。
如果程序空间
不够可以在”User Defined Options”中填上”+compact”,代码会短些;如果程序空间足够,则没必要加了。
5、“Start-up file”选择”crtsx.st7”,这个选项是将所有使用而未初始化的数据在主程序运行前
初始化为0。
如果选做其他选项,则需在程序中自己初始化每一个使用的变量,否则在程序运行前这些变量的值不确定是多少。
6、“Linker”的“Category”选择”Input”,将出现如下窗口。
增加”Segment””Ram0”,范围
从”0x100”到’0x1cf’。
把.bss拖到Ram0中。
7、配置完毕,下面做一些说明。
ST7的Ram分为近端数据(分配在Zero Page)和远端数据(分配在Zero Page之后)。
近端数据的地址在0x80~0xff之间,地址为8位,寻址比较快,一些指令可以直接操作这些地址,同时位操作指令也只能操作这个范围的地址。
也就是说,分配在近端的数据执行效率要高一些。
一般尽可能将位变量和常用变量分配在这里。
前面“Memory Models”选择”Small Memory”就是将模拟堆栈(即局部变量和函数参数)分配在近端,而全局变量默认在远端。
当需要将全局变量定义在近端时,如一些全局位标志,则需要使用@tiny。
ST7的物理堆栈在0x100~0x1ff,从0x1ff开始倒着用过来。
“Memory Models”选择”Small Memory”时,物理堆栈就只用于中断堆栈以及返回地址等。
主板程序中全局变量比较多,所以需要借用这个区域。
在第六项中增加Ram0并把.bss类型数据放在这里面。
这样,0x100~0x1cf就用于.bss类型数据,0x1d0~0x1ff才用于物理堆栈。
需要特别注意的是,如果物理堆栈数据太多超出了0x1d0~0x1ff范围,则会与.bss重叠,可能会发生一些数据异常的情况。
我们的应用一般不会有这么多物理堆栈数据,不过需要注意这个问题。
关于数据类型。
.bsct:定义时指定了初值的近端数据。
如@tiny unsigned char g_ucxxx=1;
.ubsct:定义时未指定初值的近端数据。
如@tiny unsigned char g_ucxxx;
.bit:位变量,一般不建议使用。
.share:模拟堆栈,用于分配函数内局部变量和函数参数。
.bss:定义时未指定初值的远端数据。
如@near unsigned char g_ucxxx;
.data:定义时指定了初值的远端数据。
如@near unsigned char g_ucxxx=1;
“Start-up file”选择”crtsx.st7”:所有.ubsct和.bss的数据初始化为0。
“Start-up file”选择”crtsi.st7”:所有.ubsct的数据初始化为0,.bss的数据不初始化。
“Start-up file”选择”crts.st7”:所有.ubsct和.bss的数据都不初始化。