当前位置: 首页 > news >正文

如何制作企业网站未备案的网站 访问 hots

如何制作企业网站,未备案的网站 访问 hots,wordpress反应,微商城开发发时间片轮转调度 时间片轮转法#xff1a;主要用于分时系统中的进程调度。为了实现轮转调度#xff0c;系统把所有就绪进程按照先入先出的原则排成一个队列的队首进程#xff0c;让CPU上运行一个时间片的时间。时间片是一个小小的时间单位,通常为5~10ms数量级。当进程用完分…时间片轮转调度 时间片轮转法主要用于分时系统中的进程调度。为了实现轮转调度系统把所有就绪进程按照先入先出的原则排成一个队列的队首进程让CPU上运行一个时间片的时间。时间片是一个小小的时间单位,通常为5~10ms数量级。当进程用完分给他的时间片后系统的计时器发出时钟中断调度程序便停止该进程的运行把它放在就绪列队的末尾把CPU分给就绪队列的队首进程同样也让它运行一个时间片如此往复。 如果想要使用UCOSIII的时间片轮调度的话不仅要将宏OS_CFG_SCHED_ROUND_ROBIN_EN置1还需要调用函数OSSchedRoundRobinCfg() 位置 函数原型如下 void OSSchedRoundRobinCfg (CPU_BOOLEAN en,OS_TICK dflt_time_quanta,OS_ERR *p_err) 当使用时间片轮转的时候使能时间片轮转调度功能,时间片长度为1个系统时钟节拍既1*55ms #if OS_CFG_SCHED_ROUND_ROBIN_EN //当使用时间片轮转的时候 //使能时间片轮转调度功能,时间片长度为1个系统时钟节拍既1*55ms OSSchedRoundRobinCfg(DEF_ENABLED,1,err); #endif 当任务想要放弃本次时间片的时候就可以调用OSSchedRoundRobinYield()函数函数原型如下 任务设置要点 在任务设计之初就应该考虑下面三个方面的的因素 中断服务函数普通任务空闲任务 中断服务函数 在中断服务函数中不能使用挂起当前任务的操作不允许调用任何会阻塞运行API函数接口延时。中断服务函数最好是精简短小快进快出。一般在中断服务函数中只做标记事件发生然后通知任务让对应的任务区处理因为中断服务函数的优先级高于任何优先级任务如果中断任务处理时间过长会导致系统整个任务无法正常运行。 普通任务 在任务中不允许出现死循环此处的死循环指的是没有阻塞机制的任务循环体如一个任务中只有就绪态而没有阻塞态势必会影响到其他低优先级的任务的执行所以在进行任务设计的时候就应该保证任务在不活跃的时候任务可以进入阻塞态以交出 CPU 使用权。OSTimeDlyHMSM()延时函数 空闲任务 用户可以通过空闲任务钩子方式在空闲任务上钩入自己的功能函数。通常这个空闲任务钩子能够完成一些额外的特殊功能例如系统运行状态的指示系统省电模式等。空闲任务是唯一一个不允许出现阻塞情况的任务因为 μC/OS 需要保证系统永远都有一个可运行的任务。 时间片轮转实验 实验要求 主函数创建任务1负责创建两个相同的优先级的任务2和任务3执行完任务函数后删除自身。任务2负责每隔1s打印一次abcde,任务3每隔1s打印一次fghij通过串口打印值来观察时间片轮转。 本实验继承前一篇博客http://t.csdnimg.cn/RRZqJ的工程在之前的工程上修改 任务1 在错误码变量声明完之后加入下边的代码当宏OS_CFG_SCHED_ROUND_ROBIN_EN置1的时候执行调用函数OSSchedRoundRobinCfg()实现时间片轮转调度。 #if OS_CFG_SCHED_ROUND_ROBIN_ENOSSchedRoundRobinCfg(DEF_ENABLED,1,err2_3); #endif 将创建任务的时间片长度修改为适当时间这是我修改为3时间片3*515ms 实验现象 实验源码 #include led.h #include delay.h #include sys.h #include usart.h #include includes.h//UCOSIII中以下优先级用户程序不能使用ALIENTEK //将这些优先级分配给了UCOSIII的5个系统内部任务 //优先级0中断服务服务管理任务 OS_IntQTask() //优先级1时钟节拍任务 OS_TickTask() //优先级2定时任务 OS_TmrTask() //优先级OS_CFG_PRIO_MAX-2统计任务 OS_StatTask() //优先级OS_CFG_PRIO_MAX-1空闲任务 OS_IdleTask()//创建任务1 //定义任务优先级 #define TASK_1_PRIO 3 //定义任务控制块 OS_TCB TASK_1_TCB; //定义任务堆栈大小 #define TASK_1_STK_SIZE 128 //定义任务堆栈 CPU_STK TASK_1_STK[TASK_1_STK_SIZE]; //定义任务函数 void TASK_1(void *arg);//创建任务2 //定义任务优先级 #define TASK_2_PRIO 4 //定义任务控制块 OS_TCB TASK_2_TCB; //定义任务堆栈大小 #define TASK_2_STK_SIZE 128 //定义任务堆栈 CPU_STK TASK_2_STK[TASK_2_STK_SIZE]; //定义任务函数 void TASK_2(void *arg);//创建任务3 //定义任务优先级 #define TASK_3_PRIO 4 //定义任务控制块 OS_TCB TASK_3_TCB; //定义任务堆栈大小 #define TASK_3_STK_SIZE 128 //定义任务堆栈 CPU_STK TASK_3_STK[TASK_3_STK_SIZE]; //定义任务函数 void TASK_3(void *arg);int main(void) {OS_ERR err1;//错误码变量CPU_SR_ALLOC();//定义临界区需要的变量//硬件初始化delay_init(); //延时初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置uart_init(115200); //串口波特率设置OSInit(err1);//初始化UCOSIIIOS_CRITICAL_ENTER();//进入临界区代码//创建开始任务1OSTaskCreate((OS_TCB * )TASK_1_TCB, //任务控制块(CPU_CHAR * )main TASK1, //任务名字(OS_TASK_PTR )TASK_1, //任务函数(void * )0, //传递给任务函数的参数(OS_PRIO )TASK_1_PRIO, //任务优先级(CPU_STK * )TASK_1_STK[0], //任务堆栈基地址(CPU_STK_SIZE)TASK_1_STK_SIZE/10, //任务堆栈深度限位(CPU_STK_SIZE)TASK_1_STK_SIZE, //任务堆栈大小(OS_MSG_QTY )0, //任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息(OS_TICK )0, //当使能时间片轮转时的时间片长度为0时为默认长度(void * )0, //用户补充的存储区(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项(OS_ERR * )err1); //存放该函数错误时的返回值OS_CRITICAL_EXIT();//退出临界区代码OSStart(err1);//开启UCOSIIIwhile(1); }void TASK_1(void *arg) {OS_ERR err2_3;//错误码变量CPU_SR_ALLOC();//定义临界区需要的变量 #if OS_CFG_SCHED_ROUND_ROBIN_ENOSSchedRoundRobinCfg(DEF_ENABLED,1,err2_3); #endifOS_CRITICAL_ENTER();//进入临界区代码//创建开始任务2OSTaskCreate((OS_TCB * )TASK_2_TCB, //任务控制块(CPU_CHAR * )main TASK2, //任务名字(OS_TASK_PTR )TASK_2, //任务函数(void * )0, //传递给任务函数的参数(OS_PRIO )TASK_2_PRIO, //任务优先级(CPU_STK * )TASK_2_STK[0], //任务堆栈基地址(CPU_STK_SIZE)TASK_2_STK_SIZE/10, //任务堆栈深度限位(CPU_STK_SIZE)TASK_2_STK_SIZE, //任务堆栈大小(OS_MSG_QTY )0, //任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息(OS_TICK )3, //当使能时间片轮转时的时间片长度为0时为默认长度(void * )0, //用户补充的存储区(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项(OS_ERR * )err2_3); //存放该函数错误时的返回值//创建开始任务3OSTaskCreate((OS_TCB * )TASK_3_TCB, //任务控制块(CPU_CHAR * )main TASK3, //任务名字(OS_TASK_PTR )TASK_3, //任务函数(void * )0, //传递给任务函数的参数(OS_PRIO )TASK_3_PRIO, //任务优先级(CPU_STK * )TASK_3_STK[0], //任务堆栈基地址(CPU_STK_SIZE)TASK_3_STK_SIZE/10, //任务堆栈深度限位(CPU_STK_SIZE)TASK_3_STK_SIZE, //任务堆栈大小(OS_MSG_QTY )0, //任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息(OS_TICK )3, //当使能时间片轮转时的时间片长度为0时为默认长度(void * )0, //用户补充的存储区(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //任务选项(OS_ERR * )err2_3); //存放该函数错误时的返回值 OS_CRITICAL_EXIT();//退出临界区代码//任务一执行完函数之后删掉自身OSTaskDel((OS_TCB *)0,err2_3); }//任务2主体 void TASK_2(void *arg) {int num 0;//任务2运行次数OS_ERR err2;while(1){num;printf(任务2运行次数%d\r\n,num);printf(abcde\r\n);OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,err2);//延时1S} }//任务3主体 void TASK_3(void *arg) {int num 0;//任务2运行次数OS_ERR err3;while(1){num;printf(任务3运行次数%d\r\n,num);printf(fghij\r\n);OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,err3);//延时500ms} }
http://www.w-s-a.com/news/107678/

相关文章:

  • 咸阳鑫承网站建设软件开发公司网站模板
  • 百度怎么免费做网站网站建设大作业有代码
  • 小说素材网站设计素材网站特点
  • 如何建设一个好的网站WordPress主题设置数据库
  • 网站被模仿十堰网站制作公司
  • 怎么样做免费网站个人网站备案幕布
  • 做ppt的动图下载哪些网站制作一个网站需要多少时间
  • 公司网站开发制作备案中的网站
  • 怎么看网站的收录网站开发先前台和后台
  • 合肥市做网站多少钱wordpress网站布置视频
  • 中国建设人才网信息网站软件外包公司好不好
  • 网站建设与管理 市场分析上海网站建设公司排名
  • 怎么将公司网站设成首页网址关键词查询网站
  • 怎么用ps做网站ui邱县专业做网站
  • 国开行网站毕业申请怎么做大连旅顺口旅游攻略
  • 鲜花店网站源码成都专做婚介网站的公司
  • 合肥企业网站建设工哈尔滨公告
  • 华强北 做网站互联网服务平台入口
  • vi设计案例网站微信导航网站 dedecms
  • 青浦区做网站设计图片手绘图片
  • 做网站的基本功制作网站公司推荐
  • 阿里云快速建站教程个人网站 费用
  • 广东购物网站建设微信公众号制作模板免费
  • 阿里国际站韩语网站怎么做让移动网站
  • 北京外包做网站如何报价中国几大网络推广公司
  • 中国建设部网站关于资质wordpress 建app
  • 程序员找工作的网站哈尔滨建设信息网站
  • 公司 网站 方案高考写作网站
  • 网站后台如何登陆网站开发需求逻辑图
  • 市级档案网站建设情况分析server2008做DNS与网站