ora 20000 upgrade not:STM32下Uc/os-II多任务编写方法
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 20:44:57
任务调用了OSSchedLock()函数后,决不能再调用可能导致当前任务挂起的系统函数:OSTimeDly(),OSTimeDlyHMSM(),OSSemPend(),OSMboxPend(),OSQPend()。因为任务调度已经被禁止,其他任务不能运行,这会导致系统死锁。
一、os的时钟节拍可用定时器来产生 如 system_tick定时器,一般频率设为10-100Hz,频率过高会加重cpu的负担时钟节拍的实际频率取决于用户应用程序的精度。时钟节拍源可以是任何的硬件定时器,如果没定时器,可以考虑采50/60Hz交流电源的同步信号根据system_tick定时器频率修改:os_cfg.h中#define OS_TICKS_PER_SEC 100二、任务的执行代码通常写成一个超循环结构(对于一次性任务不这样) void mytask(void *pdata) { 变量、常量定义 for (;;) { 可以被中断的用户代码 OS_ENTER_CRITICAL(); 不可以被中断的用户代码 OS_EXIT_CRITICAL(); 可以被中断的用户代码 } }三、主函数一般格式: int mian(void) { 初始化系统硬件 OSInit(); //os初始化 …………………… 建立任务 ,消息机制的建立 OSStart();//启动os …………………… } 注意:一定不要在 OSStart();之前 开中断(包括系统节拍中断 ).这里潜在地危险是,时钟节拍中断有可能在μC/OS-Ⅱ启动第一个任务之前发生,此时μC/OS-Ⅱ是处在一种不确定的状态之中,用户应用程序有可能会崩溃。 一般的做法是 :在最高优先级任务的开始 打开中断(for(;;)之前)或 专门建一个最高优先级的任务任务来打开 所有中断,然后挂起这个任务或删除它使之永远不再运行四、进入中断服务程序后要调用 OSIntEnter() and OSIntExit() 告诉os我们在做中断服务 eg: void TIM2_IRQHandler(void) { //通知uC/OS-II我们要做中断服务了 OSIntEnter(); if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET) { TIM_ClearITPendingBit(TIM2,TIM_IT_Update); } //通知uC/OS-II 我们要离开中断服务了 OSIntExit(); }本文来自: 高校自动化网(Www.zdh1909.com) 详细出处参考(转载请保留本链接):http://www.zdh1909.com/html/stm32/10910_2.html
asix os下的串口驱动如何编写?
哪里有uC/OS的免费下载?
OS.....................................
暗黑破坏神II有哪些隐藏任务?
请问下:如何用ping看os?
UC~~~~~~~~~~~~~~~~
我想用vb编写任务管理器
我想用vb编写任务管理器
UC自定义头像在哪下?
天骄II》五行任务中,水钥匙开什么箱子?
天堂II中屠龙任务的第二环,怎么做?
暗黑II 所有任务都完成了还压干什麽?
天堂II白精灵的某任务怪在哪里?
大话西游II 超度鬼魂任务需要的药物
任务管理器为什么那么占地方?
求mac os 9.2 系统下的软件
请问下怎么删掉OS自带的DX9啊?
请问下怎么删掉OS自带的DX9啊?~~
WMWare 下安装Mac OS Tiger 后的网络问题
关于XP SP2 OS windows下的几个东西是什么
请问哪儿能下mac os 8.6 中文版啊?
PC版MAC OS下的驱动去哪里找?
如何格式化GPT保护的硬盘(OS系统下的)
佳能600打印机在2000OS下不能用