实验3 使用互斥信号量访问共享资源.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验3 使用互斥信号量访问共享资源

嵌入式系统应用与实践 课程实验报告 实验名称 使用互斥信号量访问共享资源 系 别 电子工程学院 教师姓名 黄启宏 实验地点 B305 实验日期 10月20日 一、实验内容 在LPC2103专用工程模板中利用μC/OS-II操作系统编写一个实现使用互斥信号量访问共享资源的程序。 二、实验目的 1.理解互斥信号量、共享资源等操作系统概念; 2.学会使用互斥信号量访问共享资源。 三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况) 硬件:PC机 一台 EasyARM2103教学实验平台 一套 软件:Windows XP系统,ADS1.2集成开发环境 四、实验试做记录(含程序、数据记录及分析) 1、操作过程及现象 (1)打开ADS(ARM_Developer Suite v.12-CodeWarrior for ARM Developer Suite)开发环境,使用ARM Executable Image for lpc2103模板建立工程——Example。 (2)在user组中的main.c文件中添加代码。 (3)选用DebugInRAM生成目标,然后编译连接工程。 (4)将EasyARM2103教学实验开发平台上的JP4跳线短接。 (5)选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。 (6)脱机运行。 (7)全速运行程序。 2、实验代码 #include config.h //宏定义; #define BEEP (1ul11) #define BEEP_INIT() FIO0DIR |= BEEP #define BEEP_OFF() FIO0DIR = BEEP #define BEEP_ON() FIO0DIR = BEEP #define KEY1 (1ul10) #define KEY1_INIT() FIO2DIR = ~KEY1 #define UART_BPS 9600 char GcRcvBuf[10]; //定义全局变量 static OS_STK stkDispTask[100]; static OS_STK stkKeyTask[100]; static OS_STK stkSampTask[100]; OS_EVENT * Sem; INT8U ad[100]; void adcInit(void) { INT32U ulTemp; PCONP |= 1 12; ulTemp = ); ulTemp = (1 0) | ((ulTemp) 8) |(0 16) |(1 21) |(1 24) |(0 27); AD0CR = ulTemp; } void SampTask(void * pdata) { INT8U err , i; pdata = pdata; OSMutexPend(Sem, 0, err); BEEP_ON(); for (i = 0; i 100; i ++) { AD0CR |= 124; while((ADSTAT (10)) == 0); AD0CR |= (124); while((ADSTAT (10)) == 0); ad[i] = (ADDR0 10) 0x3f; OSTimeDly(OS_TICKS_PER_SEC/10); } BEEP_OFF(); OSMutexPost(Sem); OSTaskDel(OS_PRIO_SELF); } void DispTask(void * pvData) { INT8U err, i; pvData = pvData; SMutexPend(Sem,0,err); LcdClrRam(); for(i = 0;i 100;i++) { PutDot(i,63 - ad[i]); OSTimeDly(OS_TICKS_PER_SEC/10); } OSMutexPost(Sem); OSTaskDel(OS_PRIO_SELF); } void KeyTask(void * pdata) { INT8U err; pdata = pdata; KEY1_INIT(); BEEP_INIT(); BEEP_OFF; adcinit(); SPIInit(); FIO1DIR |= (LCD_BG | LCD_RESET | LCD_CS | LCD_A0 | LCD_WE | LCD_OE); FIO2DIR0 |

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档