当前位置:首页 > 公众号精选 > 技术让梦想更伟大
[导读]关注、星标公众号,直达精彩内容来源:全然电子整理:李肖遥  QP事件状态机框架论坛已经有很多教程了,加上已经有中文版本的书籍学习QP相对来说多花一些时间就能入门,有经验的攻城狮们可能忙于工作无法学习更多的技术,使用QP框架的好处可能仍不会让您动心,但是如果现在有一款能自动生成代码...

关注、星标公众号,直达精彩内容

来源:全然电子

整理:李肖遥


    QP事件状态机框架论坛已经有很多教程了,加上已经有中文版本的书籍学习QP相对来说多花一些时间就能入门,有经验的攻城狮们可能忙于工作无法学习更多的技术,使用QP框架的好处可能仍不会让您动心,但是如果现在有一款能自动生成代码的图形编辑软件呢?是不是会有那么点心动,虽然不能完全脱离代码,但是至少应用层可以完全使用使用该软件来完成,我要推荐就是QM软件,一个基于QP框架UML语言的状态机图形编程软件,下面是我使用QM开发官方Blingy闪灯的基本教程。

简介

QP由Quantum Leaps公司开发异于传统顺序式系统(前后台架构即main ISR)和传统多任务系统(操作系统)的事件驱动型状态机框架,实现了在C语言下的面向对象编程,该框架支持有限状态机FSM和层次式状态机HSM。


QP大体的框架如下图
 
对于开发者使用该框架的开发步骤如下:

  1. 理解整个项目需求
  2. 顺序图,划分出具有行为的活动对象并且将系统的资源分配到各个活动对象中,降低对象间的耦合,整理出各个活动对象间的事件交换
  3. 信号和事件的枚举,各个活动对象间的事件交换和自身对象下的触发信号事件。信号是只有触发信号而事件是带有参数的信号触发例如串口接收不仅有串口接收这一触发事件并且还有与之一起的数据
  4. 各个活动对象下的具体状态机实现
  5. 初始化并启动应用程序 给事件列队分配内存,初始化活动对象分配优先级最后启动QP将系统控制权交给QP管理,QP则根据你的事件触发来执行各个活动对象下的状态机
  6. 调试

如下图所示
 
更多关于QP的资料请看点击
http://www.state-machine.com/psicc2/index.html,里面有电子版本的PSiCC2-CN文档详细介绍了整个QP框架

QpNano

接下来简单介绍下QpNano,因为我的建模是使用QpNano,它是由事件驱动型框架下的裁剪版本,顾名思义,是针对资源有限的单片机。如低端的8位和16位单片机8051,PIC,AVR,MSP,STM8等当然也适应于32位处理器。


下面介绍如何在StateMachines板上运用QP官网上Blinky(闪灯)的例程之前简单介绍下StateMachines板的资源:

  1. 使用STM32F030C8T6 Cortex-m0处理器
  2. 板载按键、12864液晶屏、字库、数码管、串口转USB,LED灯
    简单介绍完QP和QpNano后,下面才是我要重点推荐使用QP框架的原因。QP框架允许完全手工编程和使用自动生成代码工具QM。QM(QP™ Modeler)建模是基于QP框架和层次式状态机UML语言图形自动代码生成工具,可以在该软件下实现各个对象的状态机和事件交换,而状态机实现方式是使用UML图形,真正做到应用层使用图形编程,更适合我们的编程思维。


Blinky例程是一个LED闪灯程序,是学习QP、QM最基本的例程,以下是使用qm_3.3.0-win64下建立Blinky模型:

第一步在QM中新建工程

如下图所示在File菜单下点击New Modle新建一个QM工程,然后在弹出的页面Frameworks下选择使用qpn即qp-nano框架,Templates模板选择None,Name我暂且命名为Project,Location选择工程保存位置


点击OK后可以看到已经生成了Project的项目如下图所示


第二步:建立对象

在上一步骤中生成的工程左上角Mode Explorer下Project处鼠标右键选择Add Package建立一个包,在Property Editor处nane命名为AOs, stereotype选择components如下图所示

然后在AOs处鼠标右键选择Add Class建立一个类,在Property Editor处nane命名为Blinky, superclass 处选择qpn::QActive,如下图所示

接着在AOs处鼠标右键选择Add Attribute增加属性,在Property Editor处nane处命名为AO_ Blinky,type为struct Blinky,即使Blinky类的具体实例对象
如下图所示

接着在AOs处鼠标右键选择Add Operation增加类构造,在Property Editor处
nane处命名为Blinky_Ctor
teturn type 选择void
在下方Code处具体添加代码构造

Blinky * const me =
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

机器学习是人工智能的一个分支,它通过揭示数据模式(即特征和目标变量之间的关系)来模拟人类的学习能力。特征是表示给定观察点或数据点的属性的独立变量。另一方面,目标变量是一个因变量,我们感兴趣的建模作出预测。

关键字: 机器学习 独立变量 建模

(全球TMT2023年7月20日讯)7月19日,第二十届中国制造业数字化转型高峰论坛在西安举行。中之杰智能与现场嘉宾共同分享企业转型方法,探索数智化最佳实践,为制造业高质量发展集势聚能。中之杰智能打造了颠覆性创新产品...

关键字: 建模 双模 中国制造业 指令

MATLAB是一款主要用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境的软件。

关键字: matlab 设计 建模

质子交换膜或聚合物电解质膜 (PEM) 燃料电池是将氢和氧转化为水和电的装置。它是氢经济的一项非常重要的技术。它在低工作温度下运行,可用于能源生产。这种电池构成了一个电化学系统,由于其反应物而产生电力。虽然 PEM 燃料...

关键字: PEM 燃料电池 建模

(全球TMT2022年10月25日讯)为了帮助客户应对数据安全与合规挑战,解决数据利用与保护之间的矛盾,最大化数据价值,2022年可利邦基于多方安全计算、隐私保护、联邦学习等技术,推出了大数据隐私计算平台,解决了数据协...

关键字: 大数据 建模 数据安全 数据源

摘要:农业的发展离不开排水灌溉,因此机电排水灌溉技术得到了迅速发展。如何在排水灌溉中节约电能对建设节约型社会有着重要的意义,鉴于此,对农业电排灌节能降耗进行了有益的思考,重点研究了农业排水灌溉的特点及优化农业排水灌溉的策...

关键字: 负荷特性 建模 优化

显著提升半导体器件建模工程师的团队效率,提高整个设计和开发工作流程的自动化程度

关键字: 是德科技 建模

(全球TMT2022年8月22日讯)2022中国国际智能产业博览会(简称"智博会")开幕。浪潮围绕以数字技术深度赋能实体经济,带来了三大创新产品。 一是浪潮数字政府基础支撑平台,该平台包括天工开务、格物致...

关键字: 智能化 3D模型 建模 控制

(全球TMT2022年8月18日讯)为加速发展"智慧医疗",台北荣民总医院(以下称台北荣总)引入 IBM Cloud Pak for Data 平台,运用云原生架构,打破医疗数据孤岛、保护数据隐私及安全、降低使用者门坎...

关键字: FOR IBM AI 建模

上海2022年7月6日 /美通社/ -- 近日,德国莱茵TUV大中华区(以下简称"TUV莱茵")作为主要参编单位出席了在上海举办的"零碳冷链园区...

关键字: 供应链 定时 建模 操作系统
关闭
关闭