visualSTATE第八章.ppt

上传人:牧羊曲112 文档编号:5452440 上传时间:2023-07-08 格式:PPT 页数:56 大小:1.24MB
返回 下载 相关 举报
visualSTATE第八章.ppt_第1页
第1页 / 共56页
visualSTATE第八章.ppt_第2页
第2页 / 共56页
visualSTATE第八章.ppt_第3页
第3页 / 共56页
visualSTATE第八章.ppt_第4页
第4页 / 共56页
visualSTATE第八章.ppt_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《visualSTATE第八章.ppt》由会员分享,可在线阅读,更多相关《visualSTATE第八章.ppt(56页珍藏版)》请在三一办公上搜索。

1、,第八章基于STM32的状态机建模,第八章目录,8.1简易ATM取款机8.2使用visualSTATE工具链设计、验证状态机8.3 visualSTATE系统在STM32上的模拟实现方案8.4 集成应用程序代码到STM32,概述,在前面的章节中,我们已经讲述了用visualSTATE工具链把一个模型翻译成能集成到目标应用中的代码的方法。本章我们将结合设计实例,具体讲述将visualSTATE生成的代码集成到没有移植嵌入式操作系统的STM32中的具体的应用方法。,8.1简易ATM取款机8.2使用visualSTATE工具链设计、验证状态机8.3 visualSTATE系统在STM32上的模拟实现

2、方案8.4 集成应用程序代码到STM32,第八章目录,8.1.1 软、硬件环境,(1)IAR visualSTATE 6.2(2)IAR Embeded Workbench for ARM 5.4集成开发环境(3)ARM微处理器EK-STM32F(4)PC机(5)超级终端(hypertrm)超级终端是一个通用的串行交互软件,很多嵌入式应用的系统有与之交换的相应程序。通过这些程序,我们可以通过超级终端与嵌入式系统交互,使超级终端成为嵌入式系统的“显示器”。,8.1.2 案例分析,由于消费的需要,我们会经常使用取款机取款,对ATM取款机的功能也有所了解,它包括:账户查询、取款、转账、改密本章中的案

3、例为了方便介绍,只涉及了简易的取款功能,其他功能可以通过在服务主界面状态内增加新的功能状态得以实现。,8.1.1 软、硬件环境,案例:具有简易功能的ATM取款机的模拟实现设计任务说明设计一个具有简易功能的ATM取款机,可一次输入密码、取款(不可透支)以及余额查询。系统功能要求插卡后,ATM检查用户输入的密码正确与否。若输入密码正确,ATM转向服务界面,用户此时可以取款;否则,ATM返回欢迎界面;只有在取款金额不大于账户金额时,用户方可取款。用户输入取款金额,当没有选择确定时,用户可以按操作返回;一旦输入取款金额并且确定,则出钞门打开,此时用户不可进行返回操作。,8.1.3 状态机的建模分析,整

4、体构思由于本案例是模拟实现具有简易功能的ATM取款机,所以输入密码和输入取款金额等操作我们可以通过超级终端来模拟实现(超级终端通过串口线和STM32的串口USART2连接起来,与其进行通信);输入密码、取款金额等操作我们可以通过STM32上的各个开关来模拟实现;而ATM所处的各种状态,我们则可以通过STM32的灯和LCD显示器来模拟实现(STM32通过USB接口线和PC机连接起来)。所以本案例的实现需要两台PC机,一台(为方便叙述,称为PC1)用来通过超级终端和STM32来通信,另一台PC机(PC2)用来设计状态机并运行应用程序,其中一台PC机应该具有串口。,8.1.3 状态机的建模分析,我们

5、可以按照第5章所讲的设计状态机的六个步骤,来一步一步地设计状态机。此处,我们就不再详细讲述,只给出总的分析结果。在设计过程中,我们要考虑ATM系统正常运行时需要的并发状态数。系统由服务界面、插卡区、出钞口三个部分组成,故而我们需要3个并发状态:服务界面状态插卡区状态出钞口状态,8.1.3 状态机的建模分析,按流程设计状态机第一步:插卡。系统的初始状态为:服务界面处于欢迎状态,插卡区处于无卡状态,出钞口处于关闭状态。当接收到插卡的触发时,服务界面进入输入密码状态,插卡区处于有卡状态。第二步:检验。服务界面进入输入密码状态。当接收到KeyEnter的触发时,系统对输入密码进行判断,并对其做出响应。

6、若输入密码正确,则进入服务主界面;若输入密码错误,则回到欢迎状态,插卡区回到无卡状态。,8.1.3 状态机的建模分析,第三步:选择服务。在服务主界面,当接收到某服务的触发时,进入相应服务的界面,此处假设进入取款服务。本系统为方便设计,只设计了一种服务;其他服务可在服务主界面状态进行扩充。第四步:取款。在取款界面,当接收到取款金额的触发时,判断是否透支。若不可进行交易,则回到取款界面;若可进行交易,则进入取款状态,出钞口进入打开状态。若用户将钱取走,则关闭出钞口,扣除取款金额,并回到服务主界面。第五步:退卡。当接收到退出的触发时,系统将卡弹出,服务界面回到欢迎状态,插卡区变成无卡状态。需要注意的

7、是:在输入密码与取款状态时,退出触发需无效。,8.1.3 状态机的建模分析,优化设计为了简化密码输入正误与透支判断的设计,我们可以增加一个有效性状态。正常状态时,有效性状态始终处于无效。当有判断的触发时,若判断为真,则变成有效状态,并产生一个有效信号;有效信号一触发,有效性状态立即回到无效状态。经过前面几个的设计,我们最终得到状态机系统:上图所示的ATM取款机状态机中,前三个域rATMOperationStatus域、rCardStatus域、rCashDoorStatus域所对应的分别为ATM服务界面的状态图、ATM插卡区的状态图、ATM出钞口的状态图;而第四个域rCheckStatus域中

8、的状态机正是我们在优化设计之后所对应的状态机。,8.1简易ATM取款机8.2使用visualSTATE工具链设计、验证状态机8.3 visualSTATE系统在STM32上的模拟实现方案8.4 集成应用程序代码到STM32,第八章目录,8.2.1 visualSTATE Designer设计状态图,在上面的分析中,我们将状态机分为四个并行域来设计,每个域最后设计所得的结果如下:ATM服务界面的状态图:其所包含的状态有:Welcominterface状态(处于欢迎界面状态);CheckUser状态(处于检查用户密码正确与否的状态);Service状态(处于服务状态);而Service状态又包含:

9、Main状态(处于服务主界面状态)GetCash状态(取款状态);GetCash状态作为一个超状态,它包括:Editing状态(检查取款金额的有效性状态)和Cashing状态(正在取款状态)。,8.2.1 visualSTATE Designer设计状态图,b其包含的事件有:evKeyEnter()(“确认”操作);evKeyExit()(“退出”操作);evGetCash()(“取款”操作);evKeyBack()(“返回”操作);c其所包含的动作有:VS_VOID WelcomeInterface()(显示主界面信息);VS_BOOL CheckPassword()(检查用户密码的正确性,

10、此处函数定义为布尔类型,所以在后面对应地定义了一个内部变量作为该函数的返回值,如果密码正确,则取值为1,否则为0);,8.2.1 visualSTATE Designer设计状态图,VS_VOID InputPasswordInterface()(输入密码界面);VS_VOID MainServiceInterface()(服务主界面);VS_VOID GetCashRequire()(选择取款金额界面);VS_BOOL CheckAccount()(检查用户取款金额的有效性);VS_VOID CashDoorOpen()(出钞口开);当密码输入正确时,发出信号sChecked,用来触发状态转

11、向有效状态当输入取款信息有效时,发出信号sChecked,用来触发状态转向有效状态;当取款信息有效时,发出信号sOpenDoor,用来触发出钞门打开,取款;d内部变量(Internal variables)此处我们定义了一个布尔类型的内部变量,其初始值为0(VS_BOOL bValid=0),它用来检查用户密码和取款金额的有效性。,8.2.1 visualSTATE Designer设计状态图,ATM插卡区的状态图:a其所包含的状态有:NoCard状态(处于没插入卡状态);CardPresent状态(处于有卡状态);b其包含的事件有:evCardInserted()(“插入信用卡”操作);ev

12、KeyExit()(“退出”操作);c其所包含的动作有:VS_VOID GetAccount()(获取账户信息);VS_VOID EjectCard()(退卡);,8.2.1 visualSTATE Designer设计状态图,ATM出钞口的状态图:a其所包含的状态有:Closed状态(出钞口处于关状态);Open状态(出钞口处于开状态);b其包含的事件有:evCashTaken()(事件“取钱”发生);c其所包含的动作有:VS_VOID CashDoorClosed()(动作“出钞门关”);VS_VOID DeductAccount()(取款之后,减账户金额);,8.2.1 visualST

13、ATE Designer设计状态图,ATM检查状态的状态图,a其所包含的状态有:Invalid状态(处于无效状态,比如取款金额输入有误、密码输入有误等);Valid状态(处于有效状态);b其包含的事件有:evCardInserted()(“插入信用卡”操作)evKeyExit()(“退出”操作);c其所包含的动作有:当输入信息有效时(即内部变量bValid!=0),发出信号sPass;当输入信号无效时,发出信息sFail。信号的发生用来触发其他转换的发生,这也是其在同步中的应用的具体表现。,8.2.2 状态机验证、仿真,有关在visualSTATE中动态验证状态图,我们在前面已经做了较详细的说

14、明,本章只将通过验证的图示以及在前面的验证中没遇到的验证图示给出。visualSTATE Verification中验证状态机如图所示的是本设计通过了visualSTATE Verification中的所有验证。说明了本设计中不存在死循环、相互冲突的转换等。,8.2.2 状态机验证、仿真,visualSTATE Validator中模拟仿真状态机在Validator中结合Graphical Animation交互的模拟仿真状态机,是一种很直观的验证状态机的方法。在对本案例的设计中,我们为了检查密码和其它信息的有效性,定义了布尔类型的函数,并设置其返回值为布尔类型的内部变量。下面我们结合图示来说

15、明这种方式的模拟仿真的实现。当我们打开visualSTATE Validator后,我们选择“Debug-Auto Empty Signal Queues”,这种模式在有信号发生时会自动触发事件的发生,而不需要通过双击信号来仿真实现。下面我们按照和前面的章节所类似的操作来开始模拟仿真系统。,8.2.2 状态机验证、仿真,首先,我们双击事件“SE_RESET”,初始化系统。接着,我们双击事件“evCardInserted”,将信用卡插入取款机。双击事件“evKeyEnter”,在系统中输入密码,此时将会出现画面,如果我们在对话框的“Return value for CheckPassword()

16、”一栏中,写入“0”,说明密码输入有误,单击“OK”,那么此时系统回到欢迎状态,插卡区回到无卡状态。反过来,如果我们在对话框的“Return value for CheckPassword()”一栏中,写入“1”,说明密码输入正确,单击“OK”,则系统进入服务主界面,这样我们就可以在服务主界面中进行取款、查询余额等操作了。在此,我们就不一一演示了,读者可按照我们学过的方法进行验证。,8.2.3 visualSTATE Coder中生成代码,在visualSTATE Navigator中,右键单击系统,选择“Options-Coder generation”在出现的对话款中,选择“Generat

17、e for C-SPYLink”一项;然后单击对话框左边的“ATM_easy”,选择C-SPYLink标签来设置其选项,我们选择Enable full instrumentation、Enable sample buffer和Enable sample buffer live readout选项,单击“OK”。然后选择visualSTATE Navigator中的CODER GENERATION一项,生成代码,其产生的代码报告如图所示。,8.2.3 visualSTATE Coder中生成代码,值得注意的代码有:CSpyLink.cATM_easySEMTypes.hATM_easySEMBD

18、ef.hATM_easy.cATM_easy.hATM_easyAction.hATM_easyData.cATM_easySEMLibB.hATM_easySEMLibB.c,8.2.3 visualSTATE Coder中生成代码,我们应该特别注意ATM_easySEMLibB.c中的如下几个函数void ATM_easySEM_InitAll(void):功能:初始化visualSTATE系统的一个函数,我们必须在调用visualSTATE的其他函数之前调用它。ATM_easySEM_InitAll(void)函数还可以调用初始化信号队列、内部变量以及外部变量的函数。unsigned c

19、har ATM_easySEM_Deduct(SEM_EVENT_TYPE EventNo):功能:这个函数用来接收由给定事件、内部当前状态向量以及visualSTATE系统规则所决定的动作表达式。所有的动作表达式都是通过连续调用函数SEM_GetOutput或一次调用函数SEM_GetOutputAll来检测的。若再次调用ATM_easySEM_Deduct,则必须之前先调用函数SEM_NextState或SEM_NextStateChg,来使系统进入一个新的状态。,8.2.3 visualSTATE Coder中生成代码,下图说明了visualSTATE产生的代码文件和Basic API文

20、件以及用户代码之间的联系。,8.1简易ATM取款机8.2使用visualSTATE工具链设计、验证状态机8.3 visualSTATE系统在STM32上的模拟实现方案8.4 集成应用程序代码到STM32,第八章目录,8.3visualSTATE系统在STM32上的模拟实现方案,总的模拟方案为:使用超级终端,通过串口与主机进行通信,实现输入密码以及取款金额等操作;使用STM32的各个按键来实现“确认”、“取消”、“返回”等操作;使用STM32的LCD显示器来显示每个正在进行的操作状态;使用STM32的LED来显示所处的状态的有效性。具体方案为:1.Event(事件)(1)STM32上的按键KEY

21、2被按下,用来模拟“插入信用卡”事件evCardInserted()的发生。(2)STM32上的按键Up被按下,用来模拟“已取款”事件evCashTaken()的发生。,8.3visualSTATE系统在STM32上的模拟实现方案,(3)STM32上的按键Right被按下,用来模拟“取款”事件evGetCash()的发生。(4)STM32上的按键Left被按下,用来模拟“返回”事件evKeyBack()的发生。(5)STM32上的按键KEY3被按下,用来模拟“退出系统”事件evKeyExit()的发生。(6)当信用卡插入取款机之后我们遇到事件evKeyEnter()时,通过超级终端输入密码,并

22、通过USART2发送到STM32,来模拟“输入密码”事件的发生;当我们在evGetCash()事件之后遇到evKeyEnter()事件时,通过超级终端输入取款金额,并通过USART2发送到STM32,来模拟“输入取款金额”事件的发生。在STM32中,每一个开关都对应着一路中断,所以这些事件的发生可以通过中断程序来实现,这正对应了后面将会讲述的stm32f10 x_it.c文件。,8.3visualSTATE系统在STM32上的模拟实现方案,2.Action(响应)(1)“款门开”CashDoorOpen(),即灯LED2亮。(2)“取款门关”CashDoorClosed(),即灯LED2灭。(

23、3)“结算余额”DeductAccount(),通过USART2将最终的余额显示在超级终端上。(4)“退卡”EjectCard(),LED3先变亮,然后延时一段时间,灯变灭。(5)“取款”GetAccount(),在超级终端输入取款金额,并通过USART传输过来。(6)GetCashRequire(),当选择取款的时候,LCD上将显示字符串“CASH”。,8.3visualSTATE系统在STM32上的模拟实现方案,(7)InputPasswordInterface(),在输入密码界面LCD上将显示字符串“INPW”。(8)MainServiceInterface(),当进入主服务界面的时候,

24、LCD上将显示字符串“MAIN”。(9)WelcomeInterface(),刚刚进入系统时,LCD将显示字符串“HI”。(10)CheckPassword(),当输入密码之后,核对密码是否正确(本案例设置的密码为123456)。(11)CheckAccount(),当输入取款金额之后,用来核对账户中的金额是否够用(本案例中设置的用户初始账户金额为100000)。,8.1简易ATM取款机8.2使用visualSTATE工具链设计、验证状态机8.3 visualSTATE系统在STM32上的模拟实现方案8.4 集成应用程序代码到STM32,第八章目录,8.4.1 在IAR Embedded Wo

25、rkbench中建立工程,(1)生成新的工作区(2)生成新工程:选择主菜单“Project-Creat New Project”,弹出生成工程窗口Tool chain栏中选择ARM在弹出的另存为窗口中浏览和选择新建的My Project目录,输入文件名ATM_Project,然后单击保存。这时在屏幕左边的Workspace窗口中将显示新建的项目名,本案例中,我们在Workspace的顶部下拉菜单中选择Debug。保存工作区,8.4.1 在IAR Embedded Workbench中建立工程,(3)给项目添加文件首先,我们将IAR Embedded Workbench安装目录下的armexam

26、plesSTSTM32F10 x STM32F10 xFWLibFWLibstartup中的cortexm3_macro.s,stm32f10 x_vector.c文件拷贝到我们目前工程目录My Project文件夹中。接着我们将存放STM32库文件的文件夹library复制到工程目录下。然后我们在工程目录下新建Lib_DEBUG文件夹,并将armexamplesSTSTM32F10 xSTM32F10 xFWLibFWLibexamplesLib_DEBU中的main.c,stm32f10 x_conf.h,stm32f10 x_it.h,stm32f10 x_it.c四个文件复制到该目录下

27、。最后,我们将整个visualSTATE工程拷贝到My Project文件夹中。此时我们就可以开始给工作区添加文件了。,8.4.1 在IAR Embedded Workbench中建立工程,在Workspace中新建组我们在Workspace中右键单击我们的工程,选择“Add-Add Group”,输入组名EWARM。然后按同样的操作分别新建组FWLib,User,VS_Coder。EWARM是要添加建立STM32工程所需的cortexm3_macro.s和stm32f10 x_vector.c文件的,FWLib用来添加库文件,VS_Coder用来添加visualSTATE生成的代码文件,而U

28、ser是用来添加用户文件的。,8.4.1 在IAR Embedded Workbench中建立工程,给EWARM组添加文件cortexm3_macro.s和stm32f10 x_vector.c给FWLib组添加文件选择My Projectlibrarysrc下的所有文件,单击“打开”按钮,把它们添加到FWLib组下。给User组添加文件选择My Projectuser codes下的文件,单击“打开”按钮,把它们添加到User组下给VS_Coder组添加文件选择My Project下visualSTATE工程文件中生成的代码文件夹coder,把它们添加到VS_Coder组下。,8.4.1 在

29、IAR Embedded Workbench中建立工程,当我们添加完这些文件之后,就可以在Workspace中看到这些已经添加的文件了,然后我们保存工程。,8.4.1 在IAR Embedded Workbench中建立工程,(4)设置项目选项选择通用选件在Options窗口左边的Category中选择General Options。然后分别在:Target页面/Device条目下选择ST STM32F10 xxBLibrary Configuration页面/library条目下选择Full其它页面的选项使用默认设置,8.4.1 在IAR Embedded Workbench中建立工程,选择

30、编译器选件在Options窗口左边的Category中选择C/C+Compiler。然后在:Language页面中,选择C,Relaxed ISO/ANSI,Require prototypesOptimizations页面中,选择Size,High在Preprocessor页面/Additional include directories条目下写入如下信息(图8.35所示),这些信息是用来指明所有头文件的路径的。$PROJ_DIR$libraryinc:指明库文件头文件$PROJ_DIR$user codes:指明用户代码头文件$PROJ_DIR$ATM_easycoder:指明visual

31、STATE系统代码头文件在Preprocessor页面/Define symbols条目下写入:VECT_TAB_FLASH,8.4.1 在IAR Embedded Workbench中建立工程,选择链接器选件在Options窗口左边的Category中选择Linker。然后再:Config页面/Linker configuration file条目下,选择Override default下面的框中写入$PROJ_DIR$stm32f10 x_flash.icf,8.4.1 在IAR Embedded Workbench中建立工程,选择调试器选件在Options窗口左边的Category中选择

32、Debugger。然后在:Setup页面/Driver条目下,选择Third-Party Driver。Download页面,选择User flash loader。Plugins页面/Select plugins to load条目下,选择visualSTATE。选择驱动我们在安装EWARM驱动的安装目录下,找到文件STM32DriverV5.dll。然后在Options窗口左边的Category中选择Third-Party Driver。接着在标签IAR debugger driver中选择包含该文件的目录即可。然后单击“OK”,确认选择的选项。,8.4.2 在IAR Embedded W

33、orkbench中编写用户代码,编写.c文件首先,使用了lcd就必须编写其驱动程序包括lcd.c及其头文件程序lcd.h。相关程序可参考EWARM安装目录下,使用了STM32的lcd显示器的示例文件。(1)Action_to_Outputs.c该文件是编写ATM的动作函数的,其头文件在visualSTATE Coder中已经产生,名为ATM_easyAction.h。读者可以参考其头文件,对应编写相应的代码。,8.4.2 在IAR Embedded Workbench中编写用户代码,(2)stm32f10 x_it.c前面已经讲过,在visualSTATE接受事件以前,必须把一个物理事件转化为

34、一个visualSTATE事件。在这儿,我们正是通过使用STM32的微处理器上的一些接口产生中断,来实现这个转换的。,8.4.2 在IAR Embedded Workbench中编写用户代码,(3)simpleEventHandler.c第六章已经讲过,当我们把一个物理量事件转化为一个visualSTATE事件之后,被检测到的事件可以根据它的优先级而被保存在队列里。本文件的内容即是对这个事件处理原理的具体体现。(4)simpleEventHandler.c是使用一个长度为EVENT_QUEUE_SIZE的静态队列来存储检测到的事件的。无论任何时候,只要队列已满(队列中存储事件是通过调用函数SE

35、Q_AddEvent来实现的),它就不会再接收传来的事件,最后返回出错状态。,8.4.2 在IAR Embedded Workbench中编写用户代码,编写.h头文件(1)eventHandler.h该文件主要来定义使用到的一些量(2)simpleEventHandler.h:该文件主要用来定义处理事件的一些函数,包括初始化事件队列,添加事件到队列,从队列中获取事件等函数。(3)includes.h:本文件是总的头文件,主要包含了对所有头文件的调用,以及对函数中用到的一些变量的定义。,8.4.2 在IAR Embedded Workbench中编写用户代码,修改配置头文件stm32f10 x_

36、conf.h我们可以按照第六章所讲的内容,来配置这个文件。,8.4.3 在C-SPYLink中调试visualSTATE应用程序,整个设计完成后,对应用程序进行编译,链接,调试运行,并将程序下载到STM32板上,结合超级终端,将ATM模拟演示。在将visualSTATE系统集成到STM32上之后,我们也可以使用C-SPY结合外部事件进行模拟仿真,而不需要在通过EWARM集成开发环境。将上面编写的.c文件加入组User中。将前面编写好的程序存入My Projectuser codes下,然后按照前面的步骤将这些.c文件加入组User中.,8.4.3 在C-SPYLink中调试visualSTAT

37、E应用程序,编译选择主菜单Project-Compile,或单击工具栏中的编译按键“”,来分别编译每个.c文件,直到编译结束后在消息窗口出现无错信息。如图所示的是编译main.c文件的结果。,8.4.3 在C-SPYLink中调试visualSTATE应用程序,链接选择主菜单Project-Make,或单击工具栏中的编译按键,连接程序调试选择主菜单Project-Debug,或单击工具栏中的调试按键,调试程序,8.4.4 用state-chart同步观察调试过程,在C-SPYLink中查看visualSTATE窗口调试成功之后,我们选择主菜单中的“visualSTATE-View-Graphi

38、cal Animation-ATM_easy”,在C-SPY中打开visualSTATE窗口。,8.4.4 用state-chart同步观察调试过程,接着,我们单击主菜单中的全速运行程序按钮。这时,visualSTATE系统处于初始状态,STM32的lcd上将会显示字符“HI”。其C-SPY中对应的visualSTATE系统。,8.4.4 用state-chart同步观察调试过程,接着,我们将STM32上的KEY2按下,即事件evCardInserted()发生,这时LCD上将显示字符串“INPW”,请求用户开始输入密码,我们就可以通过超级终端来输入密码了。其C-SPY中对应的visualST

39、ATE系统如图8.45所示。有关本部分内容我们就介绍到此了,后面的过程相似,在此我们就不一一叙述了。,8.4.4 用state-chart同步观察调试过程,经过上面的步骤,我们已经成功的把ATM系统集成到STM32上了。在断电后,目标板上仍然会保存已经集成的代码。再次给目标板通电,此时,我们会看到lcd上显示“HI”,按key2键,lcd显示“INPW”,接着我们还可以通过超级终端来输入密码等等,而不需要重复前面的编译链接调试等操作了。整个visualSTATE系统就集成到STM32上了,使之成为了一个独立的系统了。,本章总结,在本章,我们详细的讲述了将visualSTATE系统集成到一个嵌入式目标板上的具体方法及其设计思想。此处,我们所讲的是在STM32上实现visualSTATE系统的方案实现。我们的目的是希望读者能够通过对本案例的学习,可以领悟到一个实际的visualSTATE系统的设计思想和方法,以及如何在现有的嵌入式目标板上来实现你的方案,通过案例来学会应用是很重要的。,思考题,在本实验中,我们使用超级终端,通过串口与主机进行通信,超级终端成为了嵌入式系统的“显示器”。读者可以思考我们在输入密码或者取款金额时为什么要以s开始,简述嵌入式系统应具有的重要特点。本案例在主界面只设计了取款一个操作,读者可以对照现实中的取款机,逐步增加其功能。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号