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高级 ...
随机推荐
- 还有 3 天,苹果就要关上 HTTP 大门了
版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/274113001482113656 来源:腾云阁 h ...
- SQLServer字符操作
1.CHARINDEX('A',‘VALUE’) result:2 style:PATINDEX(varchar,varchar) 解释:A在字符串VALUE的位置次序. 2.PATINDEX( ...
- [mysql] 记osx 10.10系统修改mysql root 密码
http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html亲测方法3,已成功重置密码.(感谢@非常,告诉我官网就有重置方法,网上 ...
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- JS数组方法汇总 array数组元素的添加和删除
js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[ ...
- 大家把做的公祭日的ps上传哦
上传时图片保存为JPG,写上自己的学号,说说自己的创作构思
- 判断整数是否能被n整除
(1)1与0的特性: 1是任何整数的约数,即对于任何整数a,总有1|a. 0是任何非零整数的倍数,a≠0,a为整数,则a|0. (2)若一个整数的末位是0.2.4.6或 ...
- LookUpEdit手动编辑怎么设置呢?
近来遇到一问题,用LookUpEdit控件时,无法进行手动删除上面的数据,为此查找资料进行修改: 解决方法如下:LookUpEdit的属性-->Properties->TextEditSt ...
- 置信度&置信水平&置信区间
置信水平是指总体参数值落在样本统计值某一区内的概率:而置信区间是指在某一置信水平下,样本统计值与总体参数值间误差范围.置信区间越大,置信水平越高. 例如:估计某件事件完成会在10~12日之间,但这个估 ...
- ASCII表
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...