scanStr[i]=0/*deliberatesyntaxerror*/
fileStr[i]=0;
}
/*readastringfromstdin*/
scanf("%s",scanStr);
/*openafileonthehostandwritechararray*/
fptr=fopen("file.txt","w");
fprintf(fptr,"%s",scanStr);
fclose(fptr);
/*openafileonthehostandreadchararray*/
fptr=fopen("file.txt","r");
fseek(fptr,0L,SEEK_SET);
readSize=fread(fileStr,sizeof(char),BUFSIZE,fptr);
printf("Reada%dbytechararray:
%s\n",readSize,fileStr);
fclose(fptr);
#endif
}
当没有定义FILEIO时,采用标准puts()函数显示一条helloworld消息,它只是一个简单程序。
当定义了FILEIO后(见1.5节),该程序给出一个输入提示,并将输入字符串存放到一个文件中,然后从文件中读出该字符串,并把它输出到标准输出设备上。
1.4编译和运行程序
CCS会自动将你所作的改变保存到工程设置中。
在完成上节之后,如果你退出了CCS,则通过重新启动CCS和点击Project→Open,即可返回到你刚才停止工作处。
注:
重新设置目标系统DSP
如果第一次能够启动CCS,但接下来得到CCS不能初始化目标系统DSP的出错信息则可选择Debug→ResetDSP菜单项。
若还不能解决上述问题,你可能需要运行你的目标板所提供的复位程序。
为了编译和运行程序,要按照以下步骤进行操作:
1.
点击工具栏按钮或选择Project→RebuildAll,CCS重新编译、汇编和连接工程中的所有文件,有关此过程的信息显示在窗口底部的信息框中。
2.选择File→LoadProgram,选择刚重新编译过的程序myhello.out(它应该在D:
\ti\myprojects\hello1文件夹中,除非你把CCS安装在别的地方)并点击Open。
CCS把程序加载到目标系统DSP上,并打开Dis_Assembly窗口,该窗口显示反汇编指令。
(注意,CCS还会自动打开窗口底部一个标有Stdout的区域,该区域用以显示程序送往Stdout的输出。
)
3.点击Dis_Assembly窗口中一条汇编指令(点击指令,而不是点击指令的地址或空白区域)。
按F1键。
CCS将搜索有关那条指令的帮助信息。
这是一种获得关于不熟悉的汇编指令的帮助信息的好方法。
4.
点击工具栏按钮或选择Debug→Run。
注:
屏幕尺寸和设置
工具栏有些部分可能被Build窗口隐藏起来,这取决于屏幕尺寸和设置。
为了看到整个工具栏,请在Build窗口中点击右键并取消AllowDocking选择。
当运行程序时,可在Stdout窗口中看到helloworld消息。
1.5修改程序选项和纠正语法错误
在前一节中,由于没有定义FILEIO,预处理器命令(#ifdef和#endif)之间的程序没有运行。
在本节中,使用CCS设置一个预处理器选项,并找出和纠正语法错误。
1.选择Project→Options。
2.从BuildOption窗口的Compiler栏的Category列表中选择Symbles。
在DefineSymbles框中键入FILEIO并按Tab键。
注意,现在窗口顶部的编译命令包含-d选项,当你重新编译该程序时,程序中#ifdefFILEIO语句后的源代码就包含在内了。
(其它选项可以是变化的,这取决于正在使用的DSP板。
)
3.点击OK保存新的选项设置。
4.
点击(RebuildAll)工具栏按钮或选择Project→RebuildAll。
无论何时,只要工程选项改变,就必须重新编译所有文件。
5.出现一条说明程序含有编译错误的消息,点击Cancel。
在Buildtab区
域移动滚动条,就可看到一条语法出错信息。
6.双击描述语法错误位置的红色文字。
注意到hello.c源文件是打开的,光标会落在该行上:
fileStr[i]=0
7.修改语法错误(缺少分号)。
注意,紧挨着编辑窗口题目栏的文件名旁出现一个星号(*),表明源代码已被修改过。
当文件被保存时,星号随之消失。
8.选择File→Save或按Ctrl+S可将所作的改变存入hello.c。
9.
点击(IncrementalBuild)工具栏按钮或选择Project→Build,CCS重新编译已被更新的文件。
1.6使用断点和观察窗口
当开发和测试程序时,常常需要在程序执行过程中检查变量的值。
在本节中,可用断点和观察窗口来观察这些值。
程序执行到断点后,还可以使用单步执行命令。
1.选择File→ReloadProgram.
2.双击ProjectView中的文件hello.c。
可以加大窗口,以便能看到更多的源代码。
3.把光标放到以下行上:
fprintf(fptr,“%S”,scacStr);
4.
点击工具栏按钮或按F9,该行显示为高亮紫红色。
(如果愿意的话,可通过Option→Color改变颜色。
)
5.选择View→WatchWindow。
CCS窗口的右下角会出现一个独立区域,在程序运行时,该区域将显示被观察变量的值。
6.
在WatchWindow区域中点击鼠标右键,从弹出的表中选择InsertNewExpression。
7.键入表达式*scanStr并点击OK。
8.
注意局部变量*scanStr被列在Watchwindow中,但由于程序当前并未执行到该变量的main()函数,因此没有定义。
9.选择Debug→Run或按F5。
10.
在相应提示下,键入goodbye并点击OK。
注意,Stdout框以蓝色显示输入的文字。
还应注意,WatchWindow中显示出*scanStr的值。
在键入一个输入字符串之后,程序运行并在断点处停止。
程序中将要执行的下一行以黄色加亮。
11.
点击(StepOver)工具栏按钮或按F10以便执行到所调用的函数fprintf()之后。
12.
用CCS提供的step命令试验:
■StepInto(F2)
■
Stepover(F10)
■
StepOut(ShiftF7)
■
RuntoCursor(CtrlF10)
13.
点击工具栏按钮或按F5运行程序到结束。
1.7使用观察窗口观察structure变量
观察窗除了观察简单变量的值以外,还可观察结构中各元素元素的值。
1.在watchWindow区域中点击鼠标右键,并从弹出表中选择InsertNewExpression。
2.键入str作为表达式并点击OK。
显示着+str={…}的一行出现在WatchWindow中。
+符号表示这是一个结构。
回顾1.3,类型为PARMS的结构被声明为全局变量,并在hello.c中初始化。
结构类型在hello.h中定义。
3.
点击符号+。
CCS展开这一行,列出该结构的所有元素以及它们的值。
4.双击结构中的任意元素就可打开该元素的EditVariable窗口。
5.改变变量的值并点击OK。
注意WatchWindow中的值改变了,而且其颜色也相应变化,表明已经该值已经人工修改了。
6.在WatchWindow中选择str变量并点击右键,从弹出表中选择RemoveCuurentExpression。
在WatchWindow中重复上述步骤。
7.在WatchWindow中点击右键,从弹出表中选择Hide可以隐藏观察窗口。
8.选择Debug→Breakpoits。
在Breakpointstab中点击DeleteAll,然后点击OK,全部断点都被清除。
4实验报告
实验做完,请让实验老师检查,并且随机提两个问题,综合结果作为实验成绩。