QM UML状态机建模实例之移植 cortex-m0
---恢复内容开始---
在上一期“Blinky for cortex-m0”中我们介绍了如何在QM中建立一个工程和生成代码,如何使生成的代码在我们的工程师运行起来,为此这一期要介绍如何将QP-NANO(qpn5.4.2)移植到CORTEX-M0中。
移植前的准备工作:
1.StateMachines板一块,使用其中的Systick滴答定时器
2.下载工具一个(我们使用Jlink)
3.下载官方qpn5.4.2代码
下面简单介绍下如何下载官方qpn5.4.2代码
首先直接到QP官网http://www.state-machine.com/然后选择Products,接着在右侧找到QP-nano并点击,可以看到跳转到了QP-nano可选资源上,选择QP-nano Downloads会跳转到sourceforge网站上,上面有QP-nano发布的全部版本,
找到5.4.2点击进入,最后选择下载资源的格式(一种为.exe和.zip)等待下载即可,具体请看下图:
<ignore_js_op>
<ignore_js_op>
<ignore_js_op>
<ignore_js_op>
<ignore_js_op>
<ignore_js_op>![]()
下载后的.zip格式包解压后如下图所示:
<ignore_js_op>![]()
我们移植需要使用的文件有:
1.include
2.ports
3.source
4.examples
将前三个文件夹拷贝到我们的工程模板中,在System文件夹下建立Qpn文件夹,将以上三个文件夹放入到Qpn文件中按下图路径存放(或者你的工程目录中):
<ignore_js_op>![]()
注意ports下的文件是和硬件平台相关的,我们使用的硬件平台是stm32f030内核是cortex-m0系列的,所以只需要ports下的arm-cm,QP-nano因为我们使用的是合作式的内核,所以选择qv内核,编译器选择arm,具体路径请看下图:
<ignore_js_op>![]()
使用到examples是因为里面有cortex-m0+内核例程,已经有移植好了systick
corter-m0和cortex-m0+的区别主要是功耗和运算能力的区别,所以可以使用里面移植好的bsp。
将examples里面的dpp_nucleo-l053r8例程下的bsp.c和bsp.h拷贝到我们的工程模板Device下(或者你的工程中目录中),具体路径请看下图:
<ignore_js_op>
<ignore_js_op>
<ignore_js_op>![]()
注:我们已将bsp文件名改成QpnBsp文件名
移植前的准备工作已经完成了,接下来是在工程中添加QP-nano代码,使用KEIL MDK4.73以上的版本打开工程。在我们的工程中直接在System.Qpn.Core添加QP-nano代码(或者你的工程中目录中)
只需要添加:
1.qepn.c
2.qfn.c
3.qvn.c
在System.Device.Driver目录添加QpnBsp.c,添加好文件路径,并将QpnBsp中不需要使用到的变量和代码删除,具体请看Code.Qpn.QV.QM.Stm32f030Demo.Project V1.0工程
最后可以结合上一期的教程中生成的代码添加到工程中,运行一次验证移植是否成功。
这里简单介绍下QV内核和QK内核的特点
QV内核是带优先级的不可抢占的合作式内核,通俗的说就是使用CPU是合作式的不存在抢占CPU的情况,带优先级是对于所定义的活动对象在产生的事件队列分配运行次序中优先级高的先执行事件,低优先级的后执行事件。
QK内核是带优先级可抢占式的内核,意味着不同优先级的活动对象在任务级分发事件或者ISR分发事件都可能产生抢占,每一时刻都运行最高优先级的活动对象。更多QK,QV调度器资料请看PSiCC2-CN第二部分第6、7、8、10章节。
这样整个移植就介绍完成了,因为官方中已经有Cortex-m0的例程,所以省略了移植的细节部分,如果移植到不同的平台请参考官方的例程,具体的移植细节请参看PSiCC2-CN。
欢迎关注 燕雀窥鸿 的博客,后面会持续更新QM建模的应用。
如须了解更多关于StateMachines板信息X宝搜索QP学习板找到全然电子店铺,QM UML交流扣扣群搜索QM UML找到 QM UML状态机建模编程 群即可。
---恢复内容结束---
QM UML状态机建模实例之移植 cortex-m0的更多相关文章
- QM UML状态机建模实例之Blinky for cortex-m0
简介:QP由Quantum Leaps公司开发异于传统顺序式系统(前后台架构即main+ISR)和传统多任务系统(操作系统)的事件驱动型状态机框架,实现了在C语言下的面向对象编程,该框架支持有限状态机 ...
- UML标准建模语言与应用实例
一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...
- UML类建模(强烈推荐-思路很清晰)
UML类建模(强烈推荐-思路很清晰) 2016年10月23日 15:17:47 mbshqqb 阅读数:2315 标签: uml面向对象设计模式 更多 个人分类: 面向对象程序设计 UML的构造快 ...
- UML类图实例分析
登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是 ...
- 利用UML语言建模--以图书馆管理系统为例
一.基本信息 标题:利用UML语言建模--以图书馆管理系统为例 时间:2016 出版源:内蒙古科技与经济 领域分类:UML:RFID:图书馆:模型: 二.研究背景 问题定义:建立图书馆管理系统 难点: ...
- UML状态机图【图3】--☆
UML状态机图 基本概述 状态机图描述的是围绕某一事物状态变化的图.它也是三大流程分析利器之一.它和活动图的区别在于,活动图是描述事物发生的流程,是多个角色参与的,而状态机描述的是事物的状态变化 ...
- 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯
灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...
- 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据
灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...
- 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置
灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...
随机推荐
- [经验] 新版SkyIAR、Easy Image X在有些PE里不能运行的解决办法
[经验] 新版SkyIAR.Easy Image X在有些PE里不能运行的解决办法 xxwl2008 发表于 2013-1-26 11:58:38 https://www.itsk.com/threa ...
- django表单
一.主要内容 1.服务端获取HttpRequest信息 1)url相关信息 2)HttpRequest.META中包含的键值对 3)HttpRequest中用 ...
- 【javascript】作用域和闭包浅析
作用域 分全局作用域和局部作用域 全局作用域:函数外部定义的变量,可以被整个program的各成员参照利用. 局部作用域:函数内部定义的变量,仅供该函数的各成员参照利用. var val=1; //全 ...
- 【xsy1629】可持久化序列 - 可持久化平衡树
题意 你现在要用数据结构维护一个长度为n的序列. 这个序列支持三种操作: 1 l r:将序列中的第l项到第r项这一段翻转. 2 l r:查询序列中[l,r]这一段的和. 3 p:回到第p个历史版本. ...
- 1. AE二次开发——地图的基本操作(加载地图文档,加载shape,加载mdb,地图的保存,缩放,漫游)
1. 加载数据Icommand方法 ICommand Butdata = new ControlsAddDataCommandClass(); Butdata.OnCreate(axMapContro ...
- cookie的弊端
cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的. 第一:每个特定的域名下最多生成20个cookie 1.IE6或更低版本最多20个cookie 2.I ...
- 小小border用处多
1.实现梯形 利用边框我们可以得到梯形,首先我们给一个div添加边框,当给边框设置四个不同的颜色时,我们可以得到这样的样式,可以看到这里上边框是一个梯形,那么如果我们给其他边框设置颜色为透明(tran ...
- PE文件学习系列笔记四-C++实现PE文件的分析
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com 综述: 首 ...
- 让Git记住用户名和密码
user/username/.gitconfig [credential] helper = store
- canvas动画
1.动画主要是requestAnimationFrame方法,现在我们来一步步实现一个在画布内滚动的实例. html代码: <canvas id="canvas" width ...