搜索
bottom↓
回复: 9

【QP学习笔记二】QP状态机框架 main()函数流程

[复制链接]

出0入0汤圆

发表于 2014-10-24 17:25:28 | 显示全部楼层 |阅读模式
本帖最后由 BrightWang 于 2014-10-24 17:30 编辑

1.mai()函数的流程
主要可以参考《QP》一书P33
其过程总结如下:
1.头文件定义;
2.事件队列的声明;
3.事件池的声明;
4.发行-订阅事件存储空间的声明;

4.主动对象的初始化;
5.硬件初始化;
6.QF初始化;

7.事件池初始化;
8.发行-订阅机制的初始化;

9.启动活动对象线程;
10.将控制权交给QP,运行状态机;

2.QActive_postFIFO()与QActive_postLIFO()

前者是先进先出,后者是后进后出。
我们通常采用直接发送方式,就使用这两个函数,但一般使用前者。至于后者可以在什么时候使用,可以参考《QP》一书P173.

3.QF回调函数
回调函数,指的是需要被QF框架调用,但并不是在QF框架内部实现的函数。这些函数的实现与硬件相关性很大,需要在BSP中实现。
QF_onStartup()
这个函数是QF回调函数(见书P306)的一种,主要意图是初始化并启动中断。这个函数在QF_run()中被调用。
QF_onCleanup()

QF_onIdle()

Q_onAssert()

QF_onClockTick()

4.QF_TICK()与QF_TICK_X()
第一个函数的目的,是为了更新系统时间节拍事件。其用法是,在某个定时器中断函数中(最好但不必是最高优先级),以10-100Hz的频率调用这个函数。

第二个函数,必须周期性被时间节拍中断函数或者时间节拍任务调用,这样QF才能处理分配给系统时钟节拍的timeout事件。
QF_TICK_X()有两个参数,第一个参数的节拍频率,第二个是发送者。具体用法,尚不清楚。

5.QTimeEvt_ctor()
把时间事件实例化,这时它永久的和一个给定信号(这里是TIMEOUT_SIG)结合在一起。
每个时间事件,必须使用构造函数QTimeEvt_ctor()初始化。你应该在积分这个时间前,为这个时间事件的构造函数调用精确的一次。在这个函数中,执行的最重要的动作是,给这个事件分配一个信号。你可以任意次重用这个时间事件,但是你不应该改变这个信号。这是因为一个指向时间事件的指针也许还被某个事件列持有,改变这个信号将导致隐秘而难以发现的错误。\

6.QActive_ctor()
基础结构的构造函数QActive_ctor()把状态机放入初始伪状态 &xxxx_initial
这个构造函数也根据QF_active[]数组初始化活动对象的优先级

7.QTimeEvt_postEvery()
一个时间事件在每个nTicks时钟节拍后周期性的激发(周期性事件)。时间事件被直接发送(使用FIFO策略)给活动对象的事件队列。在发送后,周期性时间事件被自动重新设定,在特定的你Ticks时钟节拍再次激发。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-10-24 17:37:15 | 显示全部楼层
看着有点眼熟

出0入4汤圆

发表于 2014-10-27 09:42:22 | 显示全部楼层
桃园QP网站上的一句话:
Our open-source QP frameworks and the freeware QM modeling tool bring quantum leaps of innovation to embedded programming.
Welcome to the 21st century!

值得广大码农尝试和学习。

出0入0汤圆

 楼主| 发表于 2014-10-27 10:34:14 | 显示全部楼层
cnshibo 发表于 2014-10-27 09:42
桃园QP网站上的一句话:
Our open-source QP frameworks and the freeware QM modeling tool bring quantum ...

这个网站的网址是啥?

出0入4汤圆

发表于 2016-8-16 16:47:01 | 显示全部楼层
可以参考《QP》一书    楼主,这个书是哪本书?

出0入0汤圆

 楼主| 发表于 2016-8-16 18:47:42 | 显示全部楼层
yunqing_abc 发表于 2016-8-16 16:47
可以参考《QP》一书    楼主,这个书是哪本书?

https://yunpan.cn/c6Dy3iv97UX6L  访问密码 6747

出0入0汤圆

发表于 2016-8-16 22:29:58 | 显示全部楼层
可以普及下QP么

出0入0汤圆

发表于 2016-8-17 00:20:27 | 显示全部楼层
一个状态机的建模工具

出0入0汤圆

发表于 2018-4-8 22:29:44 来自手机 | 显示全部楼层
先进先出和后进后出有什么区别

出0入0汤圆

发表于 2019-6-23 08:20:03 | 显示全部楼层
BrightWang 发表于 2016-8-16 18:47
https://yunpan.cn/c6Dy3iv97UX6L  访问密码 6747

打不开了,哪位再分享一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 22:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表