体化模块程序设计样例V.ppt
《体化模块程序设计样例V.ppt》由会员分享,可在线阅读,更多相关《体化模块程序设计样例V.ppt(32页珍藏版)》请在三一办公上搜索。
1、一体化模块程序设计样例(V1.00),Page 2,工程创建,一体化程序代码主要包括两个部分,一个是用户程序代码,这部分代码在完成后可编译成m0烧入模块程序中,并且状态机的应用主要在这里;另一部分是模拟器代码,这部分代码作用是可以在windows平台下对用户程序代码进行调试并且提供一个简单友好的人机界面。以下是工程的创建步骤:1、运行VC6.0 2、新建工程,在Workspaces中选择Blank Workspace项,输入工程名称后,点击确定,Page 3,3、新建工程,在Project中选择MFC AppWizard(dll),并且选择Add to current workspace,点击
2、确定。此后可一直选择默认选项,直至工程建立完毕。以后用户程序的所有代码都会放在这个工程里进行调试,当然为了配合模拟器的使用,工程里还带有部分模拟器的代码段。,Page 4,4、新建工程,在Project中选择MFC AppWizard(exe),并且选择Add to current workspace,点击确定。该工程将来会作为模拟器来使用,我们这里选择比较简单的对话框工程,如果对VC比较熟悉的,可以选择其他的工程类型来作为模拟器的平台,Page 5,模拟器和用户代码之间的通信,用户代码是运行在嵌入式系统下的,为了让这些代码可以在windows下进行调试,我们可以把代码封装在动态链接库中,并在
3、模拟器中进行加载。同时创建一个线程,在线程开启后可通过statewizard提供的一些API函数完成模拟器和用户代码之间的通信。基本流程如图所示:,Page 6,样例,该样例的功能是实现模块开机后自动搜网的功能1、状态分析 下面我们先对模块的各个状态进行一个简要分析。开发板在按下复位键后,模块开始上电运行。模块此时的状态从下电状态切换到上电状态,同样的道理,关机的过程的状态切换则为上电状态到下电状态。除此之外,模块不会再有第三种状态存在。也许有人会说模块也有可能上电失败阿,没错,上电失败确实是第三种状态,不过,我们做的是用户程序,对于用户程序来说开始只有STOP和START,上电失败后用户程序
4、仍然是处于STOP。因此,我们可以设定,模块的初始状态由两种,这两种状态可互相进行切换。,Page 7,根据我们的最初目的,在模块开始后,需要其执行一段搜网的操作,也就是说模块不会立即进入IDLE状态。我们可定义搜网过程的状态为REGISTER。此时的模块状态关系可如图所示:进入IDLE状态后,模块的搜网算是结束,这个程序中我们只实现开机搜网的这一功能,至于后续由于键盘操作或是其他操作造成的一些状态。我们统统把其划分为IDLE范围内。在REGISTER中,我们需要执行多个AT命令已达到搜网的目的,也就是说我们可以根据这些AT命令来对REGISTER进行细分。以下是我们设定的搜网步骤:,Page
5、 8,把上面几幅图整合起来,就是模块搜网时的所有状态,Page 9,2、事件分析 从STOP状态切换到START状态,是由于收到了一个POWER_UP的事件;同样从START切换到STOP是由事件POWER_DOWN导致。在REGISTER中,我们一般是通过AT命令来进行判断下一步该做什么操作的,因此对外来说,状态间的切换是受到事件AT_CNF引起,至于切换到哪一个状态则要根据AT命令的回应内容进行判断,我们这里简单定义AT命令回应正常时为AT_CNF_OK,不正常时为AT_CNF_ERROR。列举的事件列表如下:EVENT_POWER_UPEVENT_POWER_DOWNEVENT_AT_C
6、NFEVENT_AT_CNF_OKEVENT_AT_CNF_ERROR,Page 10,3、编码刚才我们已经把模块开机搜网的状态分析完毕,接下来我们所要做的就是在代码中实现这些状态切换。在statewizard开发包(以下简称state)中,我们可以通过简单的一些菜单操作,即可方便的实现这些代码。State的安装步骤可参考UML StateWizard,这里不做详述。另外,在两个工程中都需要加入state提供的一个链接库,可以在vc中进行加载,链接库文件可在state的样例中找到。,Page 11,3.1 文件类型设计首先,需要更改state设定的插入的文件类型(默认是.cpp文件,我们用的是
7、.c文件)。在state工具栏中点击settings图标,弹出对话框,如下图进行设置。,Page 12,3.2 应用添加安装好state后,在workspace边框中会有statetree的页面选项,选择它。在页面框中我们可以看到之前我们创建的两个子项目的状态树,目前里面只有项目名称及挂在其下的几个初时文件名。,Page 13,选择app application(s),右键菜单中选择New Application。弹出如下对话框,在Application Name中输入名称后点击确定。Entry Function是指程序进入这个状态的入口函数,即进入该状态后第一个执行的函数就是它;同样道理,E
8、xit Function是程序退出该状态时执行的最后一个函数。我们可以利用这两个函数作一些变量初始化和内存释放的操作。在有些情况下我们可以不需要这些入口和出口函数,可以把前面的勾选去掉即可。,Page 14,应用创建后,可以看到APP工程里已经添加了两个名为POWERUPDOWN.c和POWERUPDOWN.h的文件。这里对里面的代码做一个简要解释,详细说明可在UML StateWizard中找到。,Page 15,FILE:POWERUPDOWN.c,Page 16,列举了在POWERUPDOWN状态中的事件函数列表SME_BEGIN_STATE_DEF(POWERUPDOWN,POWERU
9、PDOWN)/*SME_STATE_DEF(POWERUPDOWN,POWERUPDOWN)*/SME_STATE_ENTRY_FUNC(POWERUPDOWNEntry)SME_STATE_EXIT_FUNC(POWERUPDOWNExit)/*SME_STATE_DEF*/SME_END_STATE_DEF列举该应用下的状态之间的关系SME_BEGIN_STATE_TREE_DEF(POWERUPDOWN)/*SME_STATE_TREE_DEF(POWERUPDOWN)*/SME_STATE(POWERUPDOWN,POWERUPDOWN,SME_INVALID_STATE,-1)/*S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块 程序设计

链接地址:https://www.31ppt.com/p-5226462.html