打印
[开发工具]

st72324及其仿真器设置问题

[复制链接]
3482|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
windark|  楼主 | 2007-5-8 15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用cosmic编个基于st72324的程序,编译没问题,但是build始终无法通过。
前后试了Cosmic CxST7 16K 4.5.5这个版本,不知道是不是设置的原因,那个build-setuptools选项里的都要自己来填,如create command files来生成lkf文件,等等,但这么做之后还是有错,说无法生成可执行文件。
用st7 toolchain里的来做,连command files都不知道怎么生成了,始终提示
missing command files for linker。肯定是某些设置的问题。
其实我那个设置都是根据说明书来做的,不过他们不是用汇编就是用hiware来做,有些设置不一样。可能是这些地方没做好吧。
高手们帮帮忙啊!
能否给出用cosmic来build的具体步骤。
还有根据浪淘沙的说法,Project/Settings里面调出配制图完成代码段的定位,但我选setting后只出了一个界面,就是那个工作区项目设置的界面,即新建工作区后会选next后出现的那个界面。难道是版本问题?
maker文件是自动生成的还是完全自己写的?
沙发
windark|  楼主 | 2007-5-8 15:36 | 只看该作者

顺便说下,参考了st7通用单片机原理及应用这本书

所以这些问题是实在无法解决才来请教的,说得不是很清楚,辛苦大家看下

使用特权

评论回复
板凳
香水城| | 2007-5-8 16:09 | 只看该作者

你先试试一个配置好的项目,确保你的所有工具环境正确

请参考下面这个帖子中的例子做一下:

ST7 16位通用定时器中的输出比较功能(Output Compare)详解

使用特权

评论回复
地板
windark|  楼主 | 2007-5-8 16:48 | 只看该作者

代码段设置

#    LINK COMMAND FILE FOR TEST PROGRAM
#    Copyright (c) 1998 by COSMIC Software
#
+seg .text -b 0xf000 -n .text        # program start address
+seg .const -a .text            # constants follow code
+seg .bsct -b 0x80 -m 0x80        # data start address
+seg .ubsct -n iram            # uninitialized zero page
#
# define the .share segment when using compact or memory models only
#
#+seg .share -a iram -is        # shared segment

# Put you startup file here
"C:Program FilesCOSMICCXST7_16KLibcrtsi.st7"
# Put your files here
ht.o
#
# float and integer library names depend on the model used
#
"C:Program FilesCOSMICCXST7_16KLiblibisl.st7"
"C:Program FilesCOSMICCXST7_16KLiblibm.st7"

+seg .const -b 0xffce            # vectors start address
# Put your interrupt vectors file here if needed
vector.o

#
# define these symbols if crtsi or crtsx is used
#
+def __endzp=@.ubsct            # end of uninitialized zpage
+def __memory=@.bss            # end of bss segment
我用的是st62324,自己就编了ht.h,ht.c,vector.c,然后加上io72324.h就该完成所有功能了。从错误提示看,是代码段有问题,说什么共享代码段无法定位。

这个网站就那么几个帖子,我基本都是看过的,st官网的资料也去找了,不过我这些问题都没有说明,可能太浅了吧

使用特权

评论回复
5
windark|  楼主 | 2007-5-8 16:58 | 只看该作者

vector。c

extern void _stext();        /* startup routine */
extern void tmrint();        /* timer overflow interrupt */
//extern void it_tcmp();        /* timer compare interrupt */
//#pragma section const {vector}
void (* const _vectab[])() = {
    NULL,                   //AVD
    NULL,                   //SCI        
    tmrint,            /* TMRB                     */
    NULL,            /* TMRA                  */
    NULL,            /* SPI                  */
    NULL,            /* External Interrupt 3     */
    NULL,            /* External Interrupt 2     */
    NULL,            /* External Interrupt 1     */
    NULL,            /* External Interrupt 0     */
    NULL,                    //MCCRTC
    NULL,            /* unused                   */
    NULL,            /* TRAP                     */
    _stext,            /* RESET                    */
    };     
    //#pragma section ()
这个是vector.c,不知道这么写有没有问题。
#pragma section const {vector}
#pragma section ()
这两句不知道有没有必要加上,因为vector是从ffce开始的,而-stext在fffe-ffff位置上,那么是不是还得加上这两句,然后定义好vector起始地址?
浪淘沙在c语言定位里的那个界面我始终调不出,那么我怎么设置那个段地址?

使用特权

评论回复
6
香水城| | 2007-5-8 18:21 | 只看该作者

请问你是否运行了我在3楼让你测试的项目文件?

你是如何生成你的项目文件的?如果你用STVD7,你根本不用考虑如何写/修改lkf文件,这个文件对用户是透明的,不许用户手动修改。

用STVD7可以很方便地生成合适的项目文件,整个程序的框架已经建好了,你只需把你的程序写进去就行;请你试一试,很简单的。

使用特权

评论回复
7
grant_jx| | 2007-5-8 22:37 | 只看该作者

你这样测试

现下载ST最新的STVD7软件(URL http://www.stmcu.com/mdtfiles/1177338473.exe),安装后新建一个空的项目,选择新建“Create workspace and project”,编译器选择COSMIC,芯片选择ST72F324,建好以后项目自带中断的C文件和Main文件,你什么都不要更改,直接F7,看看还会不会linker Error?请不要更改默认的任何设置,也不要急着现加入任何其它文件。


对于COSMIC,你更本就不能更改lkf文件,还有#pragma section const {vector},#pragma section ()这些代码根本就不需要加多此一举,中断部分的服务函数STVD7在新建的时候已经给出了,都是空函数,除了main外,你在这一部分什么都不需要更改!如果需要加入自己的中断服务程序,只需要将对应中断向量前面的NULL改成你的中断服务函数名称即可。我想一定是你更改了什么设置才会这样。

使用特权

评论回复
8
windark|  楼主 | 2007-5-9 08:10 | 只看该作者

回香水城和grant_jx

答复7楼:试过了,例程可以用;后来我是根据例程里的设置改的,但还是需要自己创建command file。用的是那个16k的版本。

答复8楼:按你说的做了下

----------- Project yefeng - ST7 Cosmic - Configuration Debug -------------

Compiling interrupt_vector.c...
cxst7 +debug -pxp -no -l +modm -pp -i"C:Program FilesCOSMICCXST7_16KHst7"  -clDebug -coDebug interrupt_vector.c
interrupt_vector.c:

Running ST7 linker
clnk -m Debugyefeng.map -l"C:Program FilesCOSMICCXST7_16KLib"  -o Debugyefeng.st7 Debugyefeng.lkf 
#error clnk Debugyefeng.lkf:1 symbol _main not defined (C:Program FilesCOSMICCXST7_16KLibcrtsx.st7 )
 The command: "clnk -m Debugyefeng.map -l"C:Program FilesCOSMICCXST7_16KLib"  -o Debugyefeng.st7 Debugyefeng.lkf " has failed, the returned value is: 1
exit code=1.

yefeng.elf - 2 error(s), 0 warning(s)
出了这个错,不会是那个16k的cosmic有问题吧?

我换成st7mc带的那个cosmic版本试后还是这个错误。。。。。。



使用特权

评论回复
9
windark|  楼主 | 2007-5-9 08:33 | 只看该作者

回复8楼

用你推荐的那个版本安装后可以通过,
原来那个版本不生成main文件,faint!

我电脑上一共装了好几个版本的编译器,包括光盘安装的,st官网下载的,不清楚这些版本是怎么回事!

使用特权

评论回复
10
windark|  楼主 | 2007-5-9 08:47 | 只看该作者

谢谢大家帮助

终于build成功,虽然还是不太明白怎么回事,
比如那个16k版本正常情况下也该很方便的通过link和build,但就是不通过,希望高手们能整理下这些版本是怎么回事。
我被困在这个地方好几天。

前不久用renesas的仿真器也是这么回事,用高版本编译器载入workspace后那个workspace再用低版本载入就不能用了,后来还是技术支持来解决的。

用的最顺的还是codewarrior,基本没遇到什么困难。

目前st的第一步算是小小的解决了,看看仿真情况怎么样,有问题再来问大家。

使用特权

评论回复
11
浪淘沙| | 2007-5-9 12:15 | 只看该作者

请不要同时安装多个版本,否则很可能会互相干扰

同时安装不同的版本,有可能造成一套软件中不同文件之间的不匹配,这种情况下产生的问题往往谁也说不清楚。

使用特权

评论回复
12
windark|  楼主 | 2007-5-10 08:25 | 只看该作者

关于评分

使用特权

评论回复
13
windark|  楼主 | 2007-5-10 08:28 | 只看该作者

关于PF1蜂鸣器输出的设置

上一贴不小心发错了。
我想问的是蜂鸣器输出怎么设置,
现在只看到mccbcr里能设置蜂鸣器输出频率,但我在哪个寄存器里设置可以使pf1端口只用做蜂鸣器复用输出而不是普通io输出?
像别的定时器输出比较输出等等都有对应的寄存器,但蜂鸣器的在哪里?
单片机st72f324k2

使用特权

评论回复
14
windark|  楼主 | 2007-5-10 14:53 | 只看该作者

被广告帖压到底下去了,往上浮一下等待回答

同时问:
st单片机输入输出状态切换时pcdr寄存器的变化情况。
我用st72f324,我将pc口的or设为0xff,ddr设为输入,那么正常情况下这个是上拉输入,是否输入口该为1?
但是我测试时外面什么都不接端电压是0,接上一个按键与led并联的电路,然后串联一个1k电阻,再接到那个io口上后,输出端电压是1.7v,led并不亮。
这个电路我还得改,因为是做按键和led分时复用的,所以led电路不该这么接,只是目前的现象有点困惑。
那个上拉输入不就应该是不用用户外接上拉电阻,方便按键输入的么?那么这么选择的话就应该是高电位啊!

使用特权

评论回复
15
windark|  楼主 | 2007-5-10 17:26 | 只看该作者

那个电压的问题已经自己解决,将电路改造了下

改完后设为上拉输出时确实是1;
不过蜂鸣器的问题还是得问有经验的人士啦。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

49

帖子

0

粉丝