北京电子科技学院(BESTI)

             

课程:信息安全系统设计基础实验 班级:1353 姓名:魏昊卿 王亦可  学号:20135303 20135326

成绩:             指导教师:娄嘉鹏          实验日期:2015.11.24

实验密级:         预习程度:        实验时间:15:30-18:00

仪器组次:               必修/选修:必修            实验序号:三

实验名称:                画正弦余弦曲线

实验目的与要求:

1.通过ARM画出正弦余弦曲线。

2.读懂理解代码含义,能够修改代码,画出多条曲线。

实验仪器:

名称

型号

数量

计算机

1

实验内容、步骤与体会(附纸):

一、实验内容

在 PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。

二、实验步骤

1 基本开发环境

1.0  连接实验箱电源,用串口线、并口线、网线、连接实验箱和主机。

1.1  安装ADS(安装文件在00-ads1.2目录下,破解方法00-ads1.2\Crack目录下)

1.2  安装GIVEIO驱动(安装文件在01-GIVEIO目录下)

把整个GIVEIO目录拷贝到C:\WINDOWS下,并把该目录下的giveio.sys文件拷贝到c:/windows/system32/drivers下。

在控制面板里,选添加硬件>下一步>选-是我已经连接了此硬件>下一步>选中-添加新的硬件设备>下一步>选中安装我手动从列表选择的硬件>下一步>选择-显示所有设备>选择-从磁盘安装-浏览,指定驱动为C:\WINDOWS\GIVEIO\giveio.inf文件,点击确定,安装好驱动

1.3  安装JTAG驱动(安装文件在02-UArmJtag2.0目录下)

1.4  配置超级终端:波特率为 115200,数据位 8,无奇偶校验,停止位 1,无数据流控制。

2 测试安装

(1)       首先运行ADS1.2集成开发环境。

(2)       选择工程文件我们以光盘中的/ucos v6.0/Exp11 绘图的API函数为例选择Exp11.mcp后点击打开。

(3)       点击make进行编译链接。编译后出现编译结果,次图片表示没有错误,4个警告和15条其他信息。

(4)       在调试程序运行之前务必先开启Uarmjtag点击初始化配置选择ARM9点击确定。最小化到托盘即可,并且保证我们的平台停止在VIVI状态下。

(5)       点击Debug按钮进行仿真调试

(6)       在AXD下,点击Options->Configure Target->Configure。修改如下:Name:选择ARM Ethernet driver;Configuration:配置为:127.0.0.1。选择ADP点击确定。

(7)       点击run(运行)按钮。

注:之后正常状态下他会停止在main函数,这是系统自动的。

(8)       之后我们继续点击RUN按钮即可运行绘图实验。这是液晶屏上会出现我们绘制好的正弦图形。在结束前请先暂停再退出程序。

3 修改代码显示两条曲线

修改代码如下:

#include"../ucos-ii/includes.h"               /* uC/OS interface */

#include "../ucos-ii/add/osaddition.h"

#include "../inc/drivers.h"

#include "../inc/sys/lib.h"

#include "../src/gui/gui.h"

#include <string.h>

#include <stdio.h>

#pragma import(__use_no_semihosting_swi)  // ensure no functions that use semihosting

///******************任务定义***************///

OS_STK Main_Stack[STACKSIZE]={0, };   //Main_Test_Task堆栈

void Main_Task(void *Id);             //Main_Test_Task

#define Main_Task_Prio     12

OS_STK test_Stack[STACKSIZE]={0, };   //test_Test_Task堆栈

void test_Task(void *Id);             //test_Test_Task

#define test_Task_Prio     15

/**************已经定义的OS任务*************

#define SYS_Task_Prio                      1

#define Touch_Screen_Task_Prio         9

#define Main_Task_Prio     12

#define Key_Scan_Task_Prio      58

#define Lcd_Fresh_prio           59

#define Led_Flash_Prio           60

***************************************/////////

///*****************事件定义*****************///

/////////////////////////////////////////////////////

//                  Main function.                //

////////////////////////////////////////////////////

int main(void)

{

ARMTargetInit();        // do target (uHAL based ARM system) initialisation //

OSInit();               // needed by uC/OS-II //

OSInitUart();

initOSFile();

#if USE_MINIGUI==0

initOSMessage();

initOSDC();

LoadFont();

#endif

loadsystemParam();

// create the tasks in uC/OS and assign increasing //

// priorities to them so that Task3 at the end of  //

// the pipeline has the highest priority.          //

LCD_printf("Create task on uCOS-II...\n");

OSTaskCreate(Main_Task,  (void *)0,  (OS_STK *)&Main_Stack[STACKSIZE-1],  Main_Task_Prio);

OSTaskCreate(test_Task,  (void *)0,  (OS_STK *)&test_Stack[STACKSIZE-1],  test_Task_Prio);//将本句代码注释除去即可在ARM机上显示两条曲线。

OSAddTask_Init(1);

LCD_printf("Starting uCOS-II...\n");

LCD_printf("Entering graph mode...\n");

LCD_ChangeMode(DspGraMode);

OSStart();              // start the OS //

// never reached //

return 0;

}//main

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void Main_Task(void *Id)             //Main_Test_Task

{

int oldx,oldy;//保存原来坐标系位置

PDC pdc;//定义绘图设备上下文结构

int x,y;//坐标

double offset=0;//x坐标偏移量

ClearScreen();//清屏

pdc=CreateDC();//创建绘图设备上下文

SetDrawOrg(pdc, LCDWIDTH/2,LCDHEIGHT/2, &oldx, & oldy); //设置绘图原点为屏幕中心

Circle(pdc,0, 0, 50);//画圆

MoveTo(pdc, -50, -50);//移动

LineTo(pdc, 50, -50);//画线

ArcTo(pdc, 80, -20, TRUE, 30);//画弧

LineTo(pdc, 80, 20);

ArcTo(pdc, 50, 50, TRUE, 30);

LineTo(pdc, -50, 50);

ArcTo(pdc, -80, 20, TRUE, 30);

LineTo(pdc, -80, -20);

ArcTo(pdc, -50, -50, TRUE, 30);

OSTimeDly(3000);//将任务挂起3秒

ClearScreen();

SetDrawOrg(pdc, 0, LCDHEIGHT/2, &oldx,&oldy);//设置绘图原点为屏幕左边中部

for(;;)

{

MoveTo(pdc, 0, 0);

for(x=0;x<LCDWIDTH;x++)

{//画正弦波

y=(int)(50*sin(((double)x)/20.0+offset));

LineTo(pdc, x, y);

}

offset+=1;

if(offset>=2*3.14)

offset=0;

OSTimeDly(1000);

ClearScreen();

}

DestoryDC(pdc);//删除绘图设备上下文

}

void test_Task(void *Id)             //添加一条曲线

{

int oldx,oldy;//保存原来坐标系位置

PDC pdc;//定义绘图设备上下文结构

int x,y;//坐标

double offset=0;//x坐标偏移量

ClearScreen();//清屏

pdc=CreateDC();//创建绘图设备上下文

SetDrawOrg(pdc, LCDWIDTH/4,LCDHEIGHT/4, &oldx, & oldy); //设置绘图原点为屏幕中心

Circle(pdc,0, 0, 50);//画圆

MoveTo(pdc, -50, -50);//移动

LineTo(pdc, 50, -50);//画线

ArcTo(pdc, 80, -20, TRUE, 30);//画弧

LineTo(pdc, 80, 20);

ArcTo(pdc, 50, 50, TRUE, 30);

LineTo(pdc, -50, 50);

ArcTo(pdc, -80, 20, TRUE, 30);

LineTo(pdc, -80, -20);

ArcTo(pdc, -50, -50, TRUE, 30);

OSTimeDly(3000);//将任务挂起3秒

ClearScreen();

SetDrawOrg(pdc, 0, LCDHEIGHT/4, &oldx,&oldy);//设置绘图原点为屏幕左边中部

for(;;)

{

MoveTo(pdc, 0, 0);

for(x=0;x<LCDWIDTH;x++)

{//画正弦波

y=(int)(50*cos(((double)x)/20.0+offset));

LineTo(pdc, x, y);

}

offset+=1;

if(offset>=2*3.14)

offset=0;

OSTimeDly(1000);

ClearScreen();

}

DestoryDC(pdc);//删除绘图设备上下文

}

Ps:代码中标红处为修改后代码。

三、实验体会

本次实验是在ARM机上显示正弦余弦曲线,由于不需要配置虚拟机,整体过程比较简洁,因此按照指导书的介绍,安装程序,配置以及运行都实现得比较顺利。然而在编译代码的时候,代码总是编译出错,在删除原来的编译结果后重新编译,重复几次后错误消失,原因可能是先前的编译结果没有被覆盖。最终在ARM机上出现了正弦曲线。

通过本次实验,了解了ADS1.2集成开发环境,学习了使用ARM机编译的新知识。并阅读理解了c++代码,对编程知识的学习有一定帮助。

20135326、20135303-linux实验三实验报告的更多相关文章

  1. 20145206《Java程序设计》实验三实验报告

    20145206<Java程序设计>实验三实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运 ...

  2. 20145337实验三实验报告——敏捷开发与XP实践

    20145337实验三实验报告--敏捷开发与XP实践 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 ** 实验步骤**### 敏捷开发与XP 软件工程包括下列领域:软件需求 ...

  3. 20145236 《Java程序设计》实验三实验报告

    实验三实验报告 和张亚军同学一组: 实验三实验报告

  4. 20145120 《Java程序设计》实验三实验报告

    20145120 <Java程序设计>实验三实验报告 实验名称:敏捷开发与XP实践 实验目的与要求: XP基础 XP核心实践 相关工具 (一)敏捷开发与XP 极限编程(eXtreme Pr ...

  5. 20155206 《Java程序设计》实验三实验报告

    20155206 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 提交一: 提交二: 提交三: 提交四:

  6. 20155232 《Java程序设计》实验三实验报告

    20155232 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile ...

  7. 20145303《Java程序设计》实验三实验报告

    20145303<Java程序设计>实验三实验报告 ssh公钥配置及git安装: eclipse中git配置: 队友链接: http://www.cnblogs.com/5321z/p/5 ...

  8. 20145328 《Java程序设计》实验三实验报告

    20145328 <Java程序设计>实验三实验报告 实验名称 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发是一种以人为 ...

  9. 20145229实验三实验报告——敏捷开发与XP实践

    20145229实验三实验报告--敏捷开发与XP实践 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 ** 实验步骤**### 敏捷开发与XP 软件工程包括下列领域:软件需求 ...

随机推荐

  1. 烂泥:LVM学习之逻辑卷及卷组缩小空间

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章,我们学习了如何给LVM的逻辑卷及卷组扩容.这篇文章我们来学习,如何给LVM的逻辑卷及卷组缩小空间. 注意逻辑卷的缩小一定要离线操作,不能是在 ...

  2. IE6/7/8不支持jQuery创建非闭合格式的链接A

    代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <scri ...

  3. hdu 2196 Computer 树形dp模板题

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. Python基础之函数等等

    三元运算 三元运算(三目运算),是对简单的条件语句的缩写. 1 2 3 4 5 # 书写格式   result = 值1 if 条件 else 值2   # 如果条件成立,那么将 "值1&q ...

  5. Mathout 安装部署

    安装Mahout,并运行测试样例,抓图测试实验过程 证明已部署成功 Mahout 下载地址:http://apache.dataguru.cn/mahout/0.9/mahout-distributi ...

  6. runv containerd 流程分析

    当runv需要启动一个容器的时候,首先需要启动containrd,作为该容器的daemon.因此,启动containerd的相关代码也是从runv/start.go开始.最终,启动containerd ...

  7. 翻译《Writing Idiomatic Python》(二):函数、异常

    原书参考:http://www.jeffknupp.com/blog/2012/10/04/writing-idiomatic-python/ 上一篇:翻译<Writing Idiomatic ...

  8. UESTC 913 握手 Havel定理+优先队列

    给定一个非负整数序列{dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化.进一步,若图为简单图,则称此序列可简单图化. 此题因为是无自环无重边,所以是简单图.用判定简单图可图化 ...

  9. UVA 11573 Ocean Currents --BFS+优先队列

    采用优先队列做BFS搜索,d[][]数组记录当前点到源点的距离,每次出队时选此时eng最小的出队,能保证最先到达的是eng最小的.而且后来用普通队列试了一下,超时..所以,能用优先队列的,就要用优先队 ...

  10. 第8课 goto 和 void 分析

    1. 遭人遗弃的goto (1)高手潜规则:禁用goto (2)项目经验:程序质量与goto出现的次数成反比 (3)最后的判决:将goto打入冷宫(1)循环语句的基本工作方式 [实例分析]goto副作 ...