ucos中什么情况下会执行arm pendsvV

2014年7月荣获微软MVP称号2013年7月 荣获微软MVP称号2012年7月 荣获微软MVP称号2011年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号
2016年8月 硬件/嵌入开发大版内专家分月排行榜第一2016年6月 硬件/嵌入开发大版内专家分月排行榜第一2015年12月 硬件/嵌入开发大版内专家分月排行榜第一2015年7月 硬件/嵌入开发大版内专家分月排行榜第一2015年6月 硬件/嵌入开发大版内专家分月排行榜第一2015年4月 硬件/嵌入开发大版内专家分月排行榜第一2014年12月 硬件/嵌入开发大版内专家分月排行榜第一2014年10月 硬件/嵌入开发大版内专家分月排行榜第一2014年9月 硬件/嵌入开发大版内专家分月排行榜第一2014年8月 硬件/嵌入开发大版内专家分月排行榜第一2014年7月 硬件/嵌入开发大版内专家分月排行榜第一2014年5月 硬件/嵌入开发大版内专家分月排行榜第一2014年4月 硬件/嵌入开发大版内专家分月排行榜第一2014年3月 硬件/嵌入开发大版内专家分月排行榜第一2014年1月 硬件/嵌入开发大版内专家分月排行榜第一2013年12月 硬件/嵌入开发大版内专家分月排行榜第一2013年10月 硬件/嵌入开发大版内专家分月排行榜第一2013年9月 硬件/嵌入开发大版内专家分月排行榜第一2013年8月 硬件/嵌入开发大版内专家分月排行榜第一2013年7月 硬件/嵌入开发大版内专家分月排行榜第一2013年5月 硬件/嵌入开发大版内专家分月排行榜第一2013年4月 硬件/嵌入开发大版内专家分月排行榜第一2013年3月 硬件/嵌入开发大版内专家分月排行榜第一2012年12月 硬件/嵌入开发大版内专家分月排行榜第一2012年11月 硬件/嵌入开发大版内专家分月排行榜第一2011年3月 硬件/嵌入开发大版内专家分月排行榜第一2011年2月 硬件/嵌入开发大版内专家分月排行榜第一2009年10月 硬件/嵌入开发大版内专家分月排行榜第一2009年7月 硬件/嵌入开发大版内专家分月排行榜第一2009年6月 硬件/嵌入开发大版内专家分月排行榜第一2007年12月 硬件/嵌入开发大版内专家分月排行榜第一2003年6月 硬件/嵌入开发大版内专家分月排行榜第一2002年9月 硬件/嵌入开发大版内专家分月排行榜第一2002年8月 硬件/嵌入开发大版内专家分月排行榜第一2002年7月 硬件/嵌入开发大版内专家分月排行榜第一2002年5月 硬件/嵌入开发大版内专家分月排行榜第一2002年4月 硬件/嵌入开发大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。查看: 144|回复: 6
stm32 多任务执行,不实用ucos的情况下,怎么做啊,求指教啊
主题帖子精华
中级会员, 积分 219, 距离下一级还需 281 积分
在线时间30 小时
stm32 多任务执行,不实用ucos的情况下,怎么做啊,求指教啊
主题帖子精华
中级会员, 积分 382, 距离下一级还需 118 积分
在线时间77 小时
主题帖子精华
高级会员, 积分 957, 距离下一级还需 43 积分
在线时间425 小时
最近这种问题挺多的,采用状态机可以解决,这个帖子的11楼是我的回答。
半导体-&模拟电路-&数字电路-&单片机-&汇编-&C-&操作系统-&java
主题帖子精华
中级会员, 积分 406, 距离下一级还需 94 积分
在线时间36 小时
主题帖子精华
新手上路, 积分 36, 距离下一级还需 14 积分
在线时间4 小时
用c语言简单来说就是switch case 语句。
[C] 纯文本查看 复制代码switch(state) {
case state1:
state = state2;
case state2:
state = state1;
主题帖子精华
高级会员, 积分 956, 距离下一级还需 44 积分
在线时间73 小时
定时器做节拍,写个小的调度函数即可
主题帖子精华
初级会员, 积分 107, 距离下一级还需 93 积分
在线时间17 小时
可以用freertos
Powered by移植UCOS遇到的问题及其解决方法
在Micrium官网上下载了USOS&2.86版本,将多余部分全部去掉,只留下了uCOS-II里面的内核文件与app_cfg.h文件,建立了两个任务,让两个点亮,下到开发板里面,却怎么也跑不起来,暂停一看,停在了&
OSStartHang&
&&&&B&&&&&&&OSStartHang&&
上怎么也跑不过去,到网上找下,乖乖,很多人都遇到了这个原因,但是都没有一个完整的解决方法,(有的说是版本问题,用2.88就可以,OK,我就下了个2.88,下面介绍),后来单步仿真,进入OSStart()函数,然后在进入OSStartHighRdy的时候,点击单步执行,它却停不下来,一暂停,就回到了之前说的问题,看来是由于地址的问题,于是查看到OSStartHighRdy函数在内存中的地址,执行进去一查看,程序停在CPSIE&&&I&就不动了,全速运行又回到了之前的问题,一下子就不知道哪儿动手了,没办法,只有继续求助于网络,一看ucosii是利用PendSV异常中断进行任务切换,堆栈处理的,于是在stm32f10x_it.c设置断点可以进去,说明中断向量表没问题,进入到OS_CPU_A.ASM文件,看到ucos也对PendSV中断进行了定义,只不过它的名字为OS_CPU_PendSVHandler,ok,现在就有种感觉知道问题出在可能出在哪个地方了,于是将此文件中的OS_CPU_PendSVHandler改成PendSV_Handler,并将stm32f10x_it.c中的PendSV_Handler函数屏蔽掉,一运行可以了,心里那个喜啊,这可是折磨了我一天啊。&
下面来说说移植2.88版本,那是在遇到上面的问题的时候的一个解决方法,按上面的步骤,将需要的文件加入到工程,直接运行,可以但是会出现运行一段时间进入硬件错误中断里面,查询了一下网络,找了这个一个帖子&
/bbs/bbs_content.jsp?bbs_sn=4042317&bbs_page_no=2&search_mode=4&search_text=cjr82123&bbs_id=9999&
按上面一改,嘿嘿,问题马上解决,在这里谢谢lengqing1309了。下面附上我移植的2.86与2.88版本,因刚使用ucos,还有许多问题需要解决,加油咯,慢慢来!&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。后使用快捷导航没有帐号?
查看: 2469|回复: 13
对UCOS可用性的疑问???
在线时间2213 小时
威望9986分
芯币1608枚
E金币350枚
TA的帖子TA的资源
最近看到网上又出一UCOSII的书,我想问的是,大家工作中都用么???我的结论是工作中根本用不到。。。
为什么呢?试想一下,一个前后台就能执行的东东,为什么总是把操作系统拉进去。都说好一起执行可是有几个能用到实际工作当中的呢????
下面我举个例子:
一个嵌入式系统有键盘输入,有读IC卡输入,有图形界面,有串口通讯,有无线传输,有IIC存贮,有SPI通讯。有时钟模块
其中都是互相惨杂,比如我在显示时可以显示时钟可以有光标移动,可以有按键输入,请问这些UCOS能搞定么,有成百个函数时,又怎么办呢????
我本身编了上百个模块。还得再想一遍哪个函数创建了哪个关了。还得把上百个都建一遍么????
我觉得UCOSII只是个实验室的东东,或在开发板移一下,当遇到工作中成百上千的函数。你还会用么?????
你还能用得起来么,若再加上USB CAN SD FATS 本身已经占空间,还会再加上UCOS么?????
第一,LZ对于写程序这件事来说,就只有code,debug和test(有test吗?),完全没有design。因为稍微花点功夫对工程进行一个简单的需求分析和模块划分的话,就不会分不清function和mission,更不用说function和threa&
那是因为楼主不理解UCOS的本质
1.函数是函数,函数不是任务,任务是一些处理的集合,任务可以调用函数
2.你的裸奔程序是中断服务程序和主程序循环的混合体,如果要避免大段的ISR代码,可以在ISR中设置变量,在主程&
对于楼主的应用,我觉得用操作系统比裸奔好得多。CPU的性能是有限的,即使PC应用也是如此,更别说单片机了。在一个有键盘输入、图形界面、串口通讯、无线传输等任务的应用中,串口通讯、无线传输以及键盘输入对实时&
在线时间2143 小时
威望6288分
芯币12255枚
E金币599枚
TA的帖子TA的资源
1、执行效率要比裸奔高很多。
2、任务可以分优先级。
3、flash和RAM小的MCU就不要用UCOS了。用的话就会头重脚轻的感觉。
大神还有一个问题木有答,成百上千个函数都一一设优先级么?还是用哪个建立哪个?&
在线时间2213 小时
威望9986分
芯币1608枚
E金币350枚
TA的帖子TA的资源
回复 沙发ltbytyn 的帖子
大神还有一个问题木有答,成百上千个函数都一一设优先级么?还是用哪个建立哪个?
并不是说成百上千个函数一一设置优先级,而是根据执行的任务进行优先级分级。例如你在吃饭的时候你们老板打电话过来说你做的东西太高级,他不会玩。马上习近平要过来看了,叫你立即赶过去。但饭也不能不吃,所以就把&
在线时间539 小时
芯币11747枚
TA的帖子TA的资源
一粒金砂(高级), 积分 252, 距离下一级还需 248 积分
一粒金砂(高级), 积分 252, 距离下一级还需 248 积分
回复 楼主ddllxxrr 的帖子
对于楼主的应用,我觉得用操作系统比裸奔好得多。CPU的性能是有限的,即使PC应用也是如此,更别说单片机了。在一个有键盘输入、图形界面、串口通讯、无线传输等任务的应用中,串口通讯、无线传输以及键盘输入对实时性的要求是比较高的。因为如果通讯任务得不到及时处理就有可能造成丢失数据,而键盘输入如果有延迟则会造成系统响应慢,从而降低了用户的体验。所以一般对通讯任务和键盘输入设置较高的优先级,而对于图形界面这类对实时性要求不高的或者比较占系统资源的任务则设置较低的优先级。如果使用操作系统就可以对这些任务的优先级进行分级,高优先级的任务可以得到更多的CPU资源,从而可以提高系统性能,改善用户的操作体验。
在线时间539 小时
芯币11747枚
TA的帖子TA的资源
一粒金砂(高级), 积分 252, 距离下一级还需 248 积分
一粒金砂(高级), 积分 252, 距离下一级还需 248 积分
回复 板凳ddllxxrr 的帖子
并不是说成百上千个函数一一设置优先级,而是根据执行的任务进行优先级分级。例如你在吃饭的时候你们老板打电话过来说你做的东西太高级,他不会玩。马上习近平要过来看了,叫你立即赶过去。但饭也不能不吃,所以就把饭菜都端过去。此时你就执行了2个任务,一个是把你的宝贝开起来,这个优先级就比较高,必须保证得到尽可能多的资源。吃饭任务就相对可以低些,在空下来的时候就拔两口,如果忙不过来就暂时不吃。在这里调试和吃饭是2个任务,但每个任务都是需要N个函数才能实现的。以吃饭为例,至少需要包括:拿筷子、张口、扒饭、夹菜等函数。
[ 本帖最后由 funnylogic 于
23:13 编辑 ]
谢谢回答,老板叫又领导叫,那就不愁没盘子吃了。:lol&
在线时间2213 小时
威望9986分
芯币1608枚
E金币350枚
TA的帖子TA的资源
回复 5楼funnylogic 的帖子
谢谢回答,老板叫又领导叫,那就不愁没盘子吃了。
在线时间126 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 173, 距离下一级还需 27 积分
一粒金砂(中级), 积分 173, 距离下一级还需 27 积分
会不会用UCOS,就体现在你会不会划分任务。每个函数一个任务,你的RAM容量得惊人。
在线时间459 小时
芯币1344枚
TA的帖子TA的资源
一粒金砂(中级), 积分 92, 距离下一级还需 108 积分
一粒金砂(中级), 积分 92, 距离下一级还需 108 积分
非常好的解答,正在学习中
在线时间97 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 74, 距离下一级还需 126 积分
一粒金砂(中级), 积分 74, 距离下一级还需 126 积分
解释的不错啊!
在线时间72 小时
芯币1076枚
TA的帖子TA的资源
一粒金砂(高级), 积分 482, 距离下一级还需 18 积分
一粒金砂(高级), 积分 482, 距离下一级还需 18 积分
回复 楼主ddllxxrr 的帖子
那是因为楼主不理解UCOS的本质
1.函数是函数,函数不是任务,任务是一些处理的集合,任务可以调用函数
2.你的裸奔程序是中断服务程序和主程序循环的混合体,如果要避免大段的ISR代码,可以在ISR中设置变量,在主程序中查询变量,但是这种方式实时性不好效率低,占用大量CPU资源。如果使用UCOS,可以将代码从中断中剥离开来,从系统态直接返回到用户态的处理程序中处理,解决了这个关键问题。
3.UCOS经过剪裁,代码极小,不占多少FLASH空间。如果任务划分合理,不是很多,不占用太多的SRAM空间。
4.STM32等单片机的SYSTICK、PENDSV、MSP和PSP都是为RTOS的使用做好了工作
[ 本帖最后由 llpanda 于
16:14 编辑 ]
淘宝小店:
在线时间283 小时
TA的帖子TA的资源
纯净的硅(初级), 积分 612, 距离下一级还需 188 积分
纯净的硅(初级), 积分 612, 距离下一级还需 188 积分
回复 楼主ddllxxrr 的帖子
第一,LZ对于写程序这件事来说,就只有code,debug和test(有test吗?),完全没有design。因为稍微花点功夫对工程进行一个简单的需求分析和模块划分的话,就不会分不清function和mission,更不用说function和thread(两个function是不一样的,一个是功能一个是函数)。我估计现在LZ写程序的话,还是huge function为主,有木有写过一个函数上千行的?至于看起来很麻烦的“相互参杂”,哦,天啊这不是OS最擅长的进程间通信么,就是前后台系统对于不同任务间的资源共享也是需要设计的好不好?实际上,OS确实不是必须的,OS能做的用轮询和前后台乃至分时系统都一样可以做,但是这里面需要用到的轮子一个都少不了,与其自己重新造一遍轮子还不如用别人写好的,经过验证的。(实际上我非常推荐新手们自己尝试造轮子,调度器和mailbox都是非常简单的,加上一个通用的queue struct就可以做很多事情了,内存管理什么的需要功底比较深厚,HAL也是必须的,这些都可以慢慢实现的,等于自己写一个OS)
第二,用裸机和OS写程序之间的不同,在我看来就想做菜一样,你可以把所有的东西都丢到水里去一锅煮了,这样可以做菜。但是OS可以给你一个框架帮助你在某一时间点在某个容器里用多大的火候加多少调料,这些功能裸机也能实现,但是就像我说的,轮子一个都少不了。与其在一锅煮的情况下纠结这个煮烂了那个没煮熟,不如学习一下OS按照菜谱来。实际上LZ自己举出的这个例子就是OS的最佳应用场景,多任务,频繁交互,还需要一定的实时性,不上OS可以,但是这需要更深厚的功力。但是LZ既然还在纠结函数过多什么的。。。把我写的第一条看懂并且实践一下再说吧。
第三,UCOS的应用非常多,但是在我大寨国,UCOS这种收费的商业软件,虽然你可以拿来闷声发大财,但是用了还要到处说,想收律师函吗?
在线时间29 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 38, 距离下一级还需 162 积分
一粒金砂(中级), 积分 38, 距离下一级还需 162 积分
哎,裸奔吧
在线时间347 小时
芯币2022枚
E金币405枚
TA的帖子TA的资源
一粒金砂(中级), 积分 154, 距离下一级还需 46 积分
一粒金砂(中级), 积分 154, 距离下一级还需 46 积分
我们公司就用了操作系统,不过是FREERTOS,比ucos还要小巧点。
在线时间50 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 18, 距离下一级还需 182 积分
一粒金砂(中级), 积分 18, 距离下一级还需 182 积分
大家的解释对我这个初学者来说很是受用,在此写过!
论坛测评队员
Powered by
逛了这许久,何不进去瞧瞧?}

我要回帖

更多关于 ucosiii 任务不执行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信