嵌入式+QT实验.docx
《嵌入式+QT实验.docx》由会员分享,可在线阅读,更多相关《嵌入式+QT实验.docx(21页珍藏版)》请在冰豆网上搜索。
嵌入式+QT实验
实验一嵌入式微处理器的开发环境
实验过程
按指导书安装ADS1.2后,创建工程文件,设置ARMLinker并输入实验代码,按“F5”运行,出现错误如下:
仔细检查后发现,代码行“AREAExample1,CODE,READONLY”没有缩进,系统无法识别指令,缩进后运行结果如下:
设置断点
查看寄存器对应结果,运行结果正确
思考
1、工程模板的作用在于方便程序的编译、链接与调试
2、选择【Project】中的【Removeobjectcode】删除工程中的*obj文件可以强行重新编译工程的所有文件
实验二汇编指令实验
实验过程
按实验指导书步骤,创建工程文件并输入代码,按“F7”调试代码无报错,按“F5”运行代码,结果如下:
设置断点所得结果均正确:
循环入口设置断点后,地址寄存器数据变化正确:
跳转断点运行正确:
思考
1、LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。
在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。
若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。
LDR伪指令和LDR指令不是一个同东西。
指令LDR应用举例:
uLDRR0,[R1,#4];将内存单元R1+4中的字读取到R0寄存器
其中,R1为基址,#4为偏移地址,R0为目标地址。
注意,此时不更新R1。
伪指令LDR应用举例:
将0xFF0读取到R1中
LDRR1,=0xFF0
汇编后得到:
MOVR1,0xFF0
2、LDR/STR的前索引偏移是指在数据传送之前,将偏移量加到Rn(第一个操作数的寄存器)中,其结果作为传送数据的存储地址。
若使用后缀"!
",则结果写回到Rn中,且Rn的值不允许为R15。
例如:
LDRRd,[Rn,#0x04]
LDRR1,[R0,-R2,LSL#2]
写前索引偏移指令,要把第一个操作数寄存器和偏移量用"[]"括起来,第一个操作数作为基址,后面的作为偏移量,将两者相加后得到的地址中的内容加载到目的寄存器中去。
因此,常用来处理数组等结构,如:
LDRR1,[R0,-R2,LSL#2]。
3、选择【File】中的【ReloadCurrentImage】重新加载映象文件实现复位程序
实验三基于ADS的C语言程序实验
实验过程
按实验指导书步骤,创建工程文件并输入代码,按“F7”调试代码无报错,按“F5”运行代码,结果如下:
运行至“BMAIN”处的断点,成功跳转到C语言程序:
全速运行程序,得到参数sum的结果正确:
思考
1、Startup.s是C程序的启动引导文件,没有Startup.S文件,C程序会跑飞
2、实验程序中的MAIN()函数名可以更改,MAIN只是一个标记
实验四C语言调用汇编语言程序
实验过程
按实验指导书步骤,创建工程文件并输入代码,按“F7”调试代码无报错,按“F5”运行代码,结果如下:
设置断点后成功跳转:
全速运行,sum结果正确:
思考
1、一开始由于Imageentrypoint入口忘记设置,导致程序无法正确调试,后添加入口0x40000000后,程序得以顺利编译
2、在程序中以指针形式传递参数的方法如下:
char c_data = 55; char c_data = 66;
void funtion( void *para1, void *para2) {
/* 函数定义*/ return; }
funtion( &c_data, &c_data);
QT实验
试验一:
Helloworld程序的编写
实验二:
用纯代码编写Helloworld
关于实验二,直接按教程做是不可以的。
打开实验一的.pro文件,发现里面比实验二的.pro文件多了一件QT+=widgets,因此要在新建的helloWorld_src.pro添加了这一句之后,才能在main函数中加入#include,这样才能成功构建程序,余下的过程都需要添加相应的头文件才能正确运行。
如下图所示。
完成效果:
实验三:
编写多窗口程序
实现效果:
1.
2.
3.
4.
试验四、编写登录对话框
建立好工程:
实验结果:
点击退出按钮:
添加用户名密码判断功能。
实验结果:
密码正确
密码错误
在logindlg.cpp的loginDlg类构造函数里,设置LineEdit的回显模式,使输入密码时显示为小黑点。
实验结果:
如果输入如下图中的用户名,在用户名前不小心加上了一些空格,导致程序按照错误的用户名对待。
可以添加trimmed()函数,其作用就是移除字符串开头和结尾的空白字符。
实验结果:
最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和密码框清空并且光标自动跳转到用户名输入框:
试验五、添加菜单图标
1.
2.
实验六、布局管理器的使用
1
试验完成。