QP NANO状态机问题
QP NANO状态机问题1.想请问一下 最后一定会跑到QF_onIdle 所以中断必须先__low_power_mode_off_on_exit();
如果不想进QF_onIdle 应当如何修改
2. Send_DATA(B1_ad,B2_ad,B3_ad);
占用时间过久
会进入Q_onAssert
多中断源 无嵌套 只能减少Send_DATA(B1_ad,B2_ad,B3_ad)占用时间吗
3.因为2种产品需要
菜单
分别是段式LCD 和12864LCD
有看过傻孩子的菜单代码
有推荐比较可移植的架构吗
目前打算用QP来做
ISR POST ACTIVE OBJECT
#pragma vector=ADC_VECTOR
__interrupt void ADCISR(void)
{
//static unsigned int index = 0;
__low_power_mode_off_on_exit();
switch (SD12IV)
{
case 2: // SD16MEM Overflow
break;
case 4: // SD16MEM0 IFG
break;
case 6: // SD16MEM1 IFG
break;
case 8:
B1_ad=SD12MEM0;
B2_ad=SD12MEM1;
B3_ad=SD126MEM2;
QActive_postISR((QActive *)&AO_comp, ARM_SIG, 0);
break;
}
}
void QF_onIdle(void) {
__low_power_mode_1();
}
主程序
QState XXX_initial(XXX_t *me) {
switch (Q_SIG(me)) {
case Q_INIT_SIG:
{
Set_XXX(23,0);
return Q_HANDLED();
}
case Q_ENTRY_SIG: {
QActive_arm((QActive *)me, 5);
QActive_post((QActive *)&AO_comp, ARM_SIG, me->timeout);
me->timeout=10;
Set_XXX(me->xyz,0);
return Q_HANDLED();
}
case Q_EXIT_SIG: {
Set_XXX(99,0);
return Q_TRAN(&Measure_state);
}
case Q_TIMEOUT_SIG:
QActive_arm((QActive *)me, 1000);
QActive_post((QActive *)&AO_ comp, ARM_SIG, me->timeout--);
//Set_Dia(me->xyz++,0);
return Q_HANDLED();
case ARM_SIG:
Set_Dia(me->timeout++,0);
Send_DATA(B1_ad,B2_ad,B3_ad);
return Q_HANDLED();
}
return Q_TRAN(&XXX_initial);
}
看来这好像比较少人用... 我来试着回答一下楼主的问题:
1.想请问一下 最后一定会跑到QF_onIdle 所以中断必须先__low_power_mode_off_on_exit(); 如果不想进QF_onIdle 应当如何修改
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
有事件触发时,状态机就会执行相应的事件处理,处理完后进入QF_onIdle,继续等待有新的事件(外部)或信号(内部)到来,QF_onIdle用在低功耗方面
楼主为何不想进QF_onIdle,实在是不理解,没有事件触发,你让程序干啥呢?那样的话岂不是失去了QP的意义
2. Send_DATA(B1_ad,B2_ad,B3_ad);
占用时间过久,会进入Q_onAssert
多中断源 无嵌套 只能减少Send_DATA(B1_ad,B2_ad,B3_ad)占用时间吗
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
奇怪了,程序没有出错的情况下,不会跑到Q_onAssert呀,楼主程序有问题
占用时间过久:那就进行状态分解呀,这正是状态机的强处呢
3.因为2种产品需要
菜单
分别是段式LCD 和12864LCD
有看过傻孩子的菜单代码
有推荐比较可移植的架构吗
目前打算用QP来做
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
菜单,用状态机做,岂不是更直观和明了,画几个状态图就行了,谁用谁知道呀 mdcao 发表于 2014-1-7 09:53
我来试着回答一下楼主的问题:
1.想请问一下 最后一定会跑到QF_onIdle 所以中断必须先__low_power_mode_off ...
谢谢回答
1.
因为进入QF_onIdle 会进入省电模式 有些操作在省电模式下会异常
只能利用中断唤醒
2.
程序在裸机下是没错的 裸机下最多loss操作当然最后状态是要分割的
3.
因为版权问题 只好先放弃QP~~~
blueice1108 发表于 2014-1-7 13:04
谢谢回答
1.
因为进入QF_onIdle 会进入省电模式 有些操作在省电模式下会异常
如果有兴趣,可以用我的状态机调度器,我提供技术支持。 Gorgon_Meducer 发表于 2014-1-7 14:05
如果有兴趣,可以用我的状态机调度器,我提供技术支持。
在哪个帖子? Gorgon_Meducer 发表于 2014-1-7 14:05
如果有兴趣,可以用我的状态机调度器,我提供技术支持。
有参考过傻孩子的大作
不过目前使用MSP430 傻孩子我看之前都使用AVR系列的吧
比较期待傻孩子的新书~~~
blueice1108 发表于 2014-1-7 17:49
有参考过傻孩子的大作
不过目前使用MSP430 傻孩子我看之前都使用AVR系列的吧
比较期待傻孩子的新书~~~
不用AVR好多年。现在的东西都是硬件无关的。 Gorgon_Meducer 发表于 2014-1-7 21:45
不用AVR好多年。现在的东西都是硬件无关的。
现在的东西 有参考的帖子吗?
谢谢
blueice1108 发表于 2014-1-8 10:41
现在的东西 有参考的帖子吗?
谢谢
http://www.amobbs.com/thread-4319119-1-1.html
你先看看这个帖子,如果感兴趣的话,可以联系我,我提供最新的版本给你。 这帖子 我很早以前就看过了
大概是我水平不够
有些东西看不明白 就不太敢贸然使用在项目上
不过
对傻孩子的东西 也还是很感兴趣
希望能得到最新的版本
慢慢提升自己的水平 Gorgon_Meducer 发表于 2014-1-8 12:36
http://www.amobbs.com/thread-4319119-1-1.html
你先看看这个帖子,如果感兴趣的话,可以联系我,我提供 ...
傻孩子大侠
有新版的可供参考吗
谢谢~!
页:
[1]