嵌入式操作系统实验报告华中科技大学_第1页
嵌入式操作系统实验报告华中科技大学_第2页
嵌入式操作系统实验报告华中科技大学_第3页
嵌入式操作系统实验报告华中科技大学_第4页
嵌入式操作系统实验报告华中科技大学_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科实验报告课程名称:嵌入式操作系统实验报告姓 名:学 院:计算机科学与技术专 业:计算机科学与技术年 级:学 号:指导教师:2007年 12月2日试验 一 ADS、中断、串口通讯一 实验目的1、熟悉ADS 1.2开发工具-创建、编译、下载、调试工程2、中断-中断响应、分发、处理3、串口通讯-串口控制器初始化、收/发数据二实验内容1 修改uC/OS-II的main函数2编写串口消息接受任务函数3编写串口中断处理函数三 参考代码int main(void)ARMTargetInit(); /硬件初始化OSInit(); /操作系统初始化LCD_Init(); /LCD初始化LCD_Refresh

2、();clearscreen(); /清屏OSTaskCreate(Task1, (void *)0, (OS_STK *)&task1_StackSTACKSIZE-1, Task1_Prio); /创建串口数据接收进程message=OSMboxCreate(void*)NULL); /创建消息队列OSAddTask_Init(0); /创建idle进程,设置时钟中断OSStart(); /操作系统开始运行,开始调度 return 0;/mainvoid Task1(void *Id) U8 *c1, err; U16 timeout=0; InitUart(); /串口初始化;

3、while(1)/循环接收串口数据并打印到LCD c1 = OSMboxPend(message, timeout,&err); /等待串口数据,进入等待状态 if(*c1='r') WrUTXH0(r); WrUTXH0(n);/如果是换行符,打印换行给串口 else /否则回传数据给串口并在LCD上显示数据 WrUTXH0(*c1); WrUTXH0('r'); WrUTXH0('n'); drawchar(*c1,0x7e0); drawstring("n",0xffe0); /if /while /Task1v

4、oid irq_RevUart(int vector, int ndev) *c=RdURXH0(); / 从串口读数据 OSMboxPost(message,&c); / 发消息给接收进程四. 附件说明 关于ADS工具的使用,每次必须关闭再重新开,这个软件bug应该说相当严重,希望以后的版本中可以修正.试验 二 进程通讯一 实验目的1、中断处理与进程之间的同步-消息、信号灯、共享内存2、进程通讯-消息,信号灯二 实验内容1 修改uC/OS-II的main函数2 创建两个任务函数3 创建消息队列和信号灯4 实现两个任务的同步三 参考代码 int main(void) ARMTarget

5、Init(); /硬件初始化 OSInit(); /操作系统初始化 LCD_Init(); LCD_Refresh(); clearscreen(); /清屏 OSTaskCreate(Task1, (void *)0, /创建串口数据接收进程 (OS_STK *)&task1_StackSTACKSIZE-1, Task1_Prio); OSTaskCreate(Task2, (void *)0, /创建串口数据显示进程 (OS_STK *)&task2_StackSTACKSIZE-1, Task2_Prio); message=OSMboxCreate(void*)NUL

6、L); /创建消息队列 point=OSSemCreate(0); /创建信号灯,初值为0 OSAddTask_Init(0); /创建idle进程,设置时钟中断 OSStart(); /操作系统开始运行,开始调度 return 0;/mainvoid Task1(void *Id) U8 *c1, err; U16 timeout=0; InitUart(); /串口初始化; while(1)/循环接收串口数据并打印到LCD printf(“run task1”); drawStrong(waiting message from task2); OSMboxPend(message, tim

7、eout,&err); /等待串口数据,进入等待状态 c1 = message->OSEventPtr; /串口收到数据,被唤醒,取得数据的指针 if(*c1='r') WrUTXH0(r); WrUTXH0(n);/如果是换行符,打印换行给串口 else /否则回传数据给串口并在LCD上显示数据 WrUTXH0(*c1); WrUTXH0('r'); WrUTXH0('n'); UartChar = *c1;/将全局量UartChar赋值 OSSemPost(point);/信号灯V()操作,通知显示进程 /if /while /

8、Task1void Task2(void *Id) U8 err; for(;)printf(“run task2”); drawStrong(waiting message from task1); OSSemPend(point,timeouts,&error);/信号灯P() drawstring("the char from uart is:n",0x7ff); if(c1=r)/显示串口数据 drawchar(UartChar,0xffff); drawstring("n",0xffe0); else drawstring("

9、n",0xffe0); /for /Task2 试验 三 LCD驱动、图形系统入门一 实验目的1、LCD驱动-LCD初始化,FrameBuffer显示控制2、图形系统入门-点、线,简单几何形状二 实验内容1 .初始化GPIO(通用输入/输出):rGPCUP=0xffffffff; rGPCCON=0xaaaaaaaa;rGPDUP=0xffffffff; rGPDCON=0xaaaaaaaa2.初始化LCD控制寄存器: rLCDCON1=0x00000178; /配置成为16位颜色,TFT(真彩)模式; rLCDCON2= 0x2077c241; /行数为480; rLCDCON3=

10、0x017A7F0F; /行宽为640;3.设置 LCD在内存中的起始地址: rLCDADDR1=0x1904b000; /FrameBuffer的首地址; rLCDADDR2=0x00096000; / FrameBuffer的尾地址; rLCDADDR3= 0x00000300; /虚屏行宽为640; rLCDCON1 += 1; /使能LCD,开始显示;4.绘画函数a. 画像素函数void drawpixel(int x, int y, unsigned short color_mask)unsigned int bits =(SCREEN_WIDTH*y+x)*BITS_PER_PIX

11、EL;unsigned short *tmp;tmp = (unsigned short *)LCD_MEM_BASE+bits/16; /计算像素在内存中的地址;*tmp = color_mask; /给象素填充颜色;return ;b.画线函数void drawline(int x, int y, int length, int flag, unsigned short color_mask)int i;if (flag=0)/画横线;for (i=0;i<length;i+)drawpixel(x+i,y,color_mask);if (flag=1)/画竖线;for (i=0;i

12、<length;i+)drawpixel(x,y+i,color_mask);c.画字符函数void draw_char(int x,int y, /字符在屏幕上的坐标unsigned char c, /字符值unsigned short color_mask) /字符的颜色 5.绘制的效果图 试验 四 触摸屏驱动一 实验目的1、触摸屏驱动-初始化,坐标值的生成2、触摸屏、图形系统协调工作-触摸屏校准,拨号键盘二 实验内容int main(void)drawgra(); ARMTargetInit(); OSInit(); LCD_Init(); clearscreen(); draw_

13、keyboard(); TchScr_init1(); /初始化触摸屏,非中断模式; ; /校准触摸屏,在每次启动触摸屏时都运行该程序; OSTaskCreate(Task1,(void *)0,(OS_STK *)&task1_StackSTACKSIZE-1,Task1_Prio); pevent=OSMboxCreate(void*)NULL); OSAddTask_Init(1); OSStart(); return 0;/main三. 附加说明 可能是实验仪器的原因,屏幕矫正这一块总是很难做到,哪怕是你很仔细地去按键,两次得到的结果可能差别很大.这给后来的按键带来不少麻烦.我

14、们按照说明做了,但是还是无法矫正,不知道这个该怎么处理. 试验 五、六 GPRS综合试验一 实验目的1、GPRS模块控制试验-串口控制GPRS模块,AT命令集2、综合试验-电话拨号,短消息发送二 实验内容寄存器定义:#define OSULCON2 (*(volatile unsigned char *)0x50008000)#define OSUCON2 (*(volatile unsigned char *)0x50008004)#define OSUFCON2 (*(volatile unsigned char *)0x50008008)#define OSUMCON2 (*(volat

15、ile unsigned char *)0x5000800C)#define OSUBRDIV2 (*(volatile unsigned short *)0x50008028)初始化:OSULCON0=0x03; /设置串口数据长度、停止位、奇偶校验OSUCON0=0x85;/设置串口时钟频率、中断类型等OSUFCON0=0x01;/设置串口FIFO工作模式OSUMCON0=0x00;/设置流量控制等OSUBRDIV0=0x149;/设置串口波特率为9600bps寄存器定义:#define RdURXH2()(*(volatile unsigned char *)0x50008024)#define RdUTRSTAT2() (*(volatile unsigned char *)0x50008010)void irq_RevUart2(int vector, int ndev)int flag;flag = RdUTRSTAT2(); /读状态寄存器的值;while (flag&0x1)/判断FIFO里是否有接收到的数据;/有数据;c=RdURXH2(); / read the char from Uart2; flag = RdUTRSTAT2(); /读状态寄存器的值;draw_charline(c,0x7e0);/将读到的字符在LCD上最后一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论