jj.deng
发表于 2010-3-26 17:51:43
学习了!
feiyangbc
发表于 2010-3-29 17:29:26
强!
smartzou
发表于 2010-3-29 19:40:36
mark
lsw0136
发表于 2010-3-29 19:57:58
mark
zhoudandandan
发表于 2010-4-5 11:01:49
菜鸟学习中...
ddaitt999
发表于 2010-4-10 16:27:28
浏览全贴~~
iisi
发表于 2010-4-10 16:39:11
mark
chrise
发表于 2010-4-12 11:57:05
great
yusufu
发表于 2010-4-12 12:44:35
好贴,mark 了
xuetingxun2010
发表于 2010-4-17 18:35:37
学习了,正要到
xrwf_2009
发表于 2010-4-17 19:18:19
好东西就是不怕分享!
renjun861214
发表于 2010-5-19 16:23:31
好东西就是不怕分享!
weilan2200
发表于 2010-5-26 19:44:50
我也学习学习!
xrwf_2009
发表于 2010-5-28 20:24:04
值得顶
mcu_lover
发表于 2010-6-21 00:03:51
界面就是难。
mcu_lover
发表于 2010-6-21 00:41:43
看了很多天了,实在是看不出楼主的这个东西 设计简单,思路清晰。
wxx116zh
发表于 2010-6-21 07:49:58
mark
YL_L
发表于 2010-6-21 07:56:17
学习!
xinyou
发表于 2010-6-21 08:54:21
mark
zxq200211
发表于 2010-6-21 09:22:06
学习下
wukaka
发表于 2010-7-15 10:35:43
Gorgon Meducer 傻孩子
都赞了,一定要仔细精读
rfour
发表于 2010-7-15 11:24:40
mark 一下
super373
发表于 2010-7-15 11:40:14
mark 一下
yjtawfg
发表于 2010-7-15 11:42:28
mark
wuxi_stl
发表于 2010-7-15 11:44:51
mark
cjc2010
发表于 2010-7-15 13:08:31
mark
antonine
发表于 2010-7-15 14:58:22
mark
mountaintop
发表于 2010-7-15 17:46:28
回复【187楼】Gorgon Meducer 傻孩子
希望大家能接着就此问题讨论,我觉得有些东西还是写通用的驱动比较好,但菜单之类的东西,似乎花太多精力做个通用的结构性价比太低,而且每个项目选用的MCU又不同导致可用资源也不相同,因此未必能方便地移植。
yanxiao1227
发表于 2010-7-15 19:58:22
不错。我们一直在用,单片机太慢,搞gui有点吃力,以后考虑换ARM吧
esdart
发表于 2010-7-15 20:47:39
标记一下。
liujing0146
发表于 2010-7-15 20:57:49
mark
smset
发表于 2010-7-16 11:29:12
呵呵,这种模式,就是protothread的原型。
smset
发表于 2010-7-16 12:08:47
//注: __LINE__ ,是代码行号
unsigned char ThreadExample()
{
//--------一些准备工作,把这个简记为 __BEGINJOB宏
static unsigned short lineno=0;
char YIELD_FLAG = 1;
switch(lineno) {
case 0:
//---------------------------------_BEGINJOB--------
//-----------记录这里的位置,并退出,把这块简记为__YIELDCPU宏,表示释放CPU-------
YIELD_FLAG = 0;
lineno = __LINE__; case __LINE__:
if (YIELD_FLAG ==0) return RUNNING;
//----------------------------------------------
dosomethingA();
//-----------记录这里的位置,并退出,把这块简记为__YIELDCPU宏,表示释放CPU-------
YIELD_FLAG = 0;
lineno = __LINE__; case __LINE__:
if (YIELD_FLAG ==0) return RUNNING;
//----------------------------------------------
dosomethingB();
//-----------记录这里的位置,并退出,把这块简记为__YIELDCPU宏,表示释放CPU-------
YIELD_FLAG = 0;
lineno = __LINE__; case __LINE__:
if (YIELD_FLAG ==0) return RUNNING;
//----------------------------------------------
dosomethingC();
//------------------结束工作,把这块简记为__ENDJOB-----------
YIELD_FLAG = 0;
lineno=0;
return ENDED;
}
//------------------__ENDJOB-----------
}
//经过简化后的形态:
unsigned char ThreadExampleA()
{
_BEGINJOB;
__YIELDCPU;
dosomethingA();
__YIELDCPU;
dosomethingB();
__YIELDCPU;
dosomethingC();
__ENDJOB;
}
void main(){
while(1){
ThreadExampleA();
ThreadExampleB();
ThreadExampleC();
ThreadExampleD();
}
}
这样,在任务函数里,只要想主动释放CPU控制,就 __YIELDCPU一下即可。实际上延时函数可以基于__YIELDCPU之上构建,就是增加一些定时器计数的条件而已。
smset
发表于 2010-7-16 12:21:47
而且主动释放CPU控制的时候,实际上又记忆了释放时所在行,下次进入函数体,又可以从上次释放的地方继续运行。
等于是用行号__LINE__,代替了自己去定义状态机的状态。
__LINE__行号,就是一种状态。
myworkmail
发表于 2010-7-16 15:12:43
mark
xueyingmixin
发表于 2010-7-16 15:50:16
mark
hpdell
发表于 2010-7-17 17:45:31
复杂!!!!!!!!!!
5w1h
发表于 2010-7-17 19:04:47
mark
huilai
发表于 2010-7-17 19:38:14
学习!
tangwei039
发表于 2010-7-17 20:02:49
好。记下
lovecsu
发表于 2010-7-19 17:40:42
先mark再说
dianqing
发表于 2010-7-19 17:55:25
哈哈。。。好强大!
tingfenghu
发表于 2010-7-21 13:20:59
mark
waking
发表于 2010-7-22 16:56:40
mark
wangff2531
发表于 2010-7-22 21:28:38
MARK
wxx116zh
发表于 2010-7-23 08:25:11
mark
kenluo
发表于 2010-8-3 17:22:50
不错
cargle
发表于 2010-8-3 18:13:51
mark
zachary0101
发表于 2010-8-4 20:49:44
mark GUI
rayingpx
发表于 2010-8-4 21:26:05
mark
chenxikeng
发表于 2010-8-5 16:25:54
顶顶~~!
bluelool
发表于 2010-8-5 17:57:07
mark
zhuhong
发表于 2010-8-5 18:59:46
顶
whhityang
发表于 2010-8-23 14:34:58
正好用到,标记
guxingganyue
发表于 2010-9-4 08:45:29
mark
eastbest
发表于 2010-9-4 09:05:31
mark
weiwdr05
发表于 2010-9-4 09:17:42
mark
peavey
发表于 2010-11-22 08:39:23
记认
ndust
发表于 2010-11-22 10:27:56
jh
mrcontrol
发表于 2010-11-22 11:03:56
mark
wenfeiexe
发表于 2010-11-22 11:13:46
cool
MA_J
发表于 2010-11-23 15:06:45
MARK
andrew_dj
发表于 2010-11-23 20:43:03
学习啦
gc56198
发表于 2010-11-23 21:33:04
mark!!!!!
Think_lx
发表于 2010-11-23 22:01:23
标记
myqiang1990
发表于 2010-11-23 22:58:42
楼主的编程风格和我差不多啊。。我也是这样写程序的。。。你和我一样喜欢用switch。。。哈哈。。。
zhujlong
发表于 2010-11-23 23:22:30
貌似写过~~~
ndt2000
发表于 2010-11-23 23:22:38
标记
edaworld
发表于 2010-12-11 17:10:11
mARK
Elderfox
发表于 2010-12-11 20:16:37
回复【楼主位】xpstudio2003 山东人在深圳
-----------------------------------------------------------------------
MARK
AG17
发表于 2010-12-11 20:18:07
mark
bj-stm8
发表于 2010-12-11 21:11:56
good
ndt2000
发表于 2010-12-11 23:24:51
mark
wpnx
发表于 2010-12-14 16:33:07
mark
xuejianhua1986
发表于 2010-12-14 20:48:07
mark
sponge
发表于 2010-12-16 10:37:21
mark
stm8s
发表于 2010-12-16 12:34:31
mark
Shi_Tou
发表于 2010-12-16 12:50:48
回复【楼主位】xpstudio2003 山东人在深圳
-----------------------------------------------------------------------
有空得看看!
Shi_Tou
发表于 2010-12-16 12:53:48
回复【4楼】Gorgon Meducer 傻孩子
-----------------------------------------------------------------------
高手啊!值得学习啊!
AilesArgentees
发表于 2010-12-16 12:59:35
mark
updown
发表于 2010-12-17 13:43:18
MARK
zhanghzhan
发表于 2010-12-17 14:12:52
吗日寇
ctunan
发表于 2010-12-17 14:21:19
装泰鸡,马克思~~~
dory
发表于 2010-12-17 15:47:12
不错,学习!!!
chengpiaopiao
发表于 2010-12-17 21:03:40
mark
stely
发表于 2010-12-17 21:32:54
mark
8s209
发表于 2010-12-18 10:43:36
mark
du722
发表于 2011-1-8 14:02:40
mark
Tomas_Yung
发表于 2011-1-9 10:57:39
mark
MeSleve
发表于 2011-1-9 12:43:17
mark。学习了
416446891
发表于 2011-1-9 21:08:30
mark
JnzGoto
发表于 2011-1-9 22:25:52
mark
pengliang983
发表于 2011-1-9 22:34:57
mark学习
yuzr
发表于 2011-1-10 16:29:39
这个要仔细研究一下
zuceyige
发表于 2011-1-10 17:21:31
mark一下!
anning
发表于 2011-1-10 18:10:32
Mark
Ticl4
发表于 2011-1-10 20:19:27
学习了
dalchemist
发表于 2011-1-10 20:36:11
mark(状态机)
xixiangfeng
发表于 2011-1-10 20:48:57
好贴!!
myljd01
发表于 2011-1-10 21:13:29
状态机