登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

st72324及其仿真器设置问题

作者:windark 栏目:MCU技术
st72324及其仿真器设置问题
我用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文件是自动生成的还是完全自己写的?

2楼: >>参与讨论
windark
顺便说下,参考了st7通用单片机原理及应用这本书
所以这些问题是实在无法解决才来请教的,说得不是很清楚,辛苦大家看下

3楼: >>参与讨论
香水城
你先试试一个配置好的项目,确保你的所有工具环境正确
请参考下面这个帖子中的例子做一下:

st7 16位通用定时器中的输出比较功能(OUTPUT compare)详解

4楼: >>参与讨论
windark
代码段设置
#    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 Files\COSMIC\CXST7_16K\Lib\crtsi.st7"
# Put your files here
ht.o
#
# float and integer library names depend on the MODEL used
#
"C:\Program Files\COSMIC\CXST7_16K\Lib\libisl.st7"
"C:\Program Files\COSMIC\CXST7_16K\Lib\libm.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
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楼: >>参与讨论
windark
错误提示
ht.lkf can't locate shared segment,
这个忘了发了,那些设置我都是几乎一样的,和例程没什么区别。
例程是vumeter这个程序

7楼: >>参与讨论
香水城
请问你是否运行了我在3楼让你测试的项目文件?
你是如何生成你的项目文件的?如果你用STVD7,你根本不用考虑如何写/修改lkf文件,这个文件对用户是透明的,不许用户手动修改。

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


8楼: >>参与讨论
grant_jx
你这样测试
现下载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改成你的中断服务函数名称即可。我想一定是你更改了什么设置才会这样。



9楼: >>参与讨论
windark
回香水城和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 Files\COSMIC\CXST7_16K\Hst7"  -clDebug\ -coDebug\ interrupt_vector.c
interrupt_vector.c:

Running ST7 linker
clnk -m Debug\yefeng.map -l"C:\Program Files\COSMIC\CXST7_16K\Lib"  -o Debug\yefeng.st7 Debug\yefeng.lkf
#error clnk Debug\yefeng.lkf:1 symbol _main not defined (C:\Program Files\COSMIC\CXST7_16K\Lib\crtsx.st7 )
The command: "clnk -m Debug\yefeng.map -l"C:\Program Files\COSMIC\CXST7_16K\Lib"  -o Debug\yefeng.st7 Debug\yefeng.lkf " has failed, the returned VALUE is: 1
exit code=1.

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

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





10楼: >>参与讨论
windark
回复8楼
用你推荐的那个版本安装后可以通过,
原来那个版本不生成main文件,faint!

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

11楼: >>参与讨论
windark
谢谢大家帮助
终于build成功,虽然还是不太明白怎么回事,
比如那个16k版本正常情况下也该很方便的通过LINK和build,但就是不通过,希望高手们能整理下这些版本是怎么回事。
我被困在这个地方好几天。

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

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

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

12楼: >>参与讨论
浪淘沙
请不要同时安装多个版本,否则很可能会互相干扰
同时安装不同的版本,有可能造成一套软件中不同文件之间的不匹配,这种情况下产生的问题往往谁也说不清楚。

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

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

16楼: >>参与讨论
windark
那个电压的问题已经自己解决,将电路改造了下
改完后设为上拉输出时确实是1;
不过蜂鸣器的问题还是得问有经验的人士啦。


参与讨论
昵称:
讨论内容:
 
 
相关帖子
碰到710的一个奇怪的问题
突然发现一个问题
STR710执行这段代码后会死机
74系列集成电路的分类及区别
请问ST_ARM关于Lwip!
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号