正文内容

visualstate第八章-wenkub

2023-05-27 13:59:05 本页面
 

【正文】 ,则变成有效状态,并产生一个有效信号;有效信号一触发,有效性状态立即回到无效状态。 • 当接收到退出的触发时,系统将卡弹出,服务界面回到欢迎状态,插卡区变成无卡状态。 • 在取款界面,当接收到取款金额的触发时,判断是否透支。 状态机的建模分析 第三步:选择服务。 第二步:检验。在设计过程中,我们要考虑 ATM系统正常运行时需要的并发状态数。 状态机的建模分析 整体构思 由于本案例是模拟实现具有简易功能的 ATM取款机,所以输入密码和输入取款金额等操作我们可以通过超级终端来模拟实现(超级终端通过串口线和 STM32的串口 USART2连接起来,与其进行通信);输入密码、取款金额等操作我们可以通过STM32上的各个开关来模拟实现;而 ATM所处的各种状态,我们则可以通过 STM32的灯和 LCD显示器来模拟实现( STM32通过 USB接口线和 PC机连接起来)。 软、硬件环境 案例:具有简易功能的 ATM取款机的模拟实现 设计任务说明 • 设计一个具有简易功能的 ATM取款机,可一次输入密码、取款(不可透支)以及余额查询。本章我们将结合设计实例,具体讲述将 visualSTATE生成的代码集成到没有移植嵌入式操作系统的 STM32中的具体的应用方法。 • 简易 ATM取款机 • 使用 visualSTATE工具链设计、 验证状态机 • visualSTATE系统在 STM32上的 模拟实现方案 • 集成应用程序代码到 STM32 第八章 目录 软、硬件环境 (1) IAR visualSTATE (2) IAR Embeded Workbench for ARM (3) ARM微处理器 EKSTM32F (4) PC机 (5) 超级终端( hypertrm) • 超级终端是一个通用的串行交互软件,很多嵌入式应用的系统有与之交换的相应程序。 系统功能要求 • 插卡后, ATM检查用户输入的密码正确与否。所以本案例的实现需要两台PC机,一台(为方便叙述,称为 PC1)用来通过超级终端和STM32来通信,另一台 PC机( PC2)用来设计状态机并运行应用程序,其中一台 PC机应该具有串口。系统由服务界面、插卡区、出钞口三个部分组成,故而我们需要 3个并发状态: 服务界面状态 插卡区状态 出钞口状态 状态机的建模分析 按流程设计状态机 第一步:插卡。 • 服务界面进入输入密码状态。 • 在服务主界面,当接收到某服务的触发时,进入相应服务的界面,此处假设进入取款服务。若不可进行交易,则回到取款界面;若可进行交易,则进入取款状态,出钞口进入打开状态。 • 需要注意的是:在输入密码与取款状态时,退出触发需无效。经过前面几个的设计,我们最终得到状态机系统: • 上图 所示的 ATM取款机状态机中,前三个域rATMOperationStatus域、 rCardStatus域、 rCashDoorStatus域所对应的分别为 ATM服务界面的状态图、 ATM插卡区的状态图、 ATM出钞口的状态图;而第四个域 rCheckStatus域中的状态机正是我们在优化设计之后所对应的状态机。信号的发生用来触发其他转换的发生,这也是其在同步中的应用的具体表现。 状态机验证、仿真 • visualSTATE Validator中模拟仿真状态机 • 在 Validator中结合 Graphical Animation交互的模拟仿真状态机,是一种很直观的验证状态机的方法。下面我们按照和前面的章节所类似的操作来开始模拟仿真系统。反过来,如果我们在对话框的 “Return value for CheckPassword()”一栏中,写入 “1”,说明密码输入正确,单击 “OK”,则系统进入服务主界面,这样我们就可以在服务主界面中进行取款、查询余额等操作了。 visualSTATE Coder中生成代码 值得注意的代码有: visualSTATE Coder中生成代码 我们应该特别注意 • void ATM_easySEM_InitAll (void):功能:初始化 visualSTATE系统的一个函数,我们必须在调用 visualSTATE的其他函数之前调用它。若再次调用 ATM_easySEM_Deduct,则必须之前先调用函数 SEM_NextState或 SEM_NextStateChg,来使系统进入一个新的状态。 (2) STM32上的按键 Up被按下,用来模拟“已取款”事件evCashTaken()的发生。 (6) 当信用卡插入取款机之后我们遇到事件 evKeyEnter()时,通过超级终端输入密码,并通过 USART2发送到 STM32,来模拟“输入密码”事件的发生;当我们在 evGetCash()事件之后遇到evKeyEnter()事件时,通过超级终端输入取款金额,并通过USART2发送到 STM32,来模拟“输入取款金额”事件的发生。 (3) “ 结算余额” DeductAccount(),通过 USART2将最终的余额显示在超级终端上。 visualSTATE系统在 STM32上的模拟实现方案 (7) InputPasswordInterface(),在输入密码界面 LCD上将显示字符串 “INPW”。 (11) CheckAccount(),当输入取款金额之后,用来核对账户中的金额是否够用(本案例中设置的用户初始账户金额为100000)。接着我们将存放 STM32库文件的文件夹 library复制到工程目录下。 在 IAR Embedded Workbench中建立工程 • 在 Workspace中新建组 • 我们在 Workspace中右键单击我们的工程,选择 “AddAdd
点击复制文档内容
环评公示相关推荐
文库吧 www.wenkub.com
备案图片鄂ICP备17016276号-1