内核实验六(时 钟 中 断)

内核实验六(时 钟 中 断)

ID:25186184

大小:234.00 KB

页数:16页

时间:2018-11-16

内核实验六(时 钟 中 断)_第1页
内核实验六(时 钟 中 断)_第2页
内核实验六(时 钟 中 断)_第3页
内核实验六(时 钟 中 断)_第4页
内核实验六(时 钟 中 断)_第5页
资源描述:

《内核实验六(时 钟 中 断)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、内核实验(六)时钟中断实验目的掌握嵌入式实时操作系统µC/OS中中断的使用情况。时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。时钟节拍原理Task1和Task2获得信号量InterruptSem后延时,Task1延时200Tick,Task2延时500Tick,利用Task3输出的次数来对Task1和Task2的延时计数,Task3每100Tick产生一次输出。实验设计#defineOS_LOWEST_PRIO16/*任务优先级不可以大于

2、16*/#defineOS_MAX_TASKS4/*最多可以创建4个任务*/#defineOS_TASK_STAT_EN0/*禁止统计任务*/#defineOS_TASK_SUSPEND_EN1/*是否允许使用OSTaskSuspend()andOSTaskResume()*/操作系统配置#defineOS_SEM_EN1/*是否允许使用信号量功能*/#defineOS_TICKS_PER_SEC200/*设置每秒之内的时钟节拍数目*/#defineOS_MAX_EVENTS1/*最多可以有1个事件*/操作系统配置OSTaskCreate():建立一个新任

3、务本实验中所用到的µC/OS-II相关函数OSTimeDly():将一个任务延时若干个时钟节拍OSSemCreate():建立并初始化一个信号量OSSemPend():申请信号量OSemPost():设置信号量1、创建起始任务TaskStartOSTaskCreate(TaskStart,(void*)0,&TaskStartStk[TASK_STK_SIZE-1],4);源程序说明TaskStart负责:安装时钟中断服务例程ucos_x86_idt_set_handler(0x20,(void*)OSTickISR,0x8e00);初始化操作系统时钟uc

4、os_timer_init();创建信号量InterruptSem=OSSemCreate(1);创建应用任务TaskStartCreateTasks();源程序说明2、创建应用任务Task3、应用任务OSTaskCreate(Task1,(void*)0,&Task1Stk[TASK_STK_SIZE-1],TASK_1_PRIO);OSTaskCreate(Task2,(void*)0,&Task2Stk[TASK_STK_SIZE-1],TASK_2_PRIO);OSTaskCreate(Task3,(void*)0,&Task3Stk[TASK_S

5、TK_SIZE-1],TASK_3_PRIO);源程序说明voidTask1(void*pdata){for(;;){/*无限循环*/……OSSemPend(InterruptSem,0,&err);……OSTimeDly(200);……OSSemPost(InterruptSem);……}}源程序说明voidTask2(void*pdata){for(;;){/*无限循环*/……OSSemPend(InterruptSem,0,&err);……OSTimeDly(500);……OSSemPost(InterruptSem);……}}源程序说明voidTa

6、sk3(void*pdata){for(;;){/*无限循环*/printk("Task3hasgottotheCPU:");OSTimeDly(100);}}源程序说明输出信息谢谢!

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。