欢迎来到天天文库
浏览记录
ID:25186184
大小:234.00 KB
页数:16页
时间:2018-11-16
《内核实验六(时 钟 中 断)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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);}}源程序说明输出信息谢谢!
此文档下载收益归作者所有