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