MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础

上传人:E**** 文档编号:89494173 上传时间:2019-05-25 格式:PPTX 页数:82 大小:1.22MB
返回 下载 相关 举报
MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础_第1页
第1页 / 共82页
MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础_第2页
第2页 / 共82页
MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础_第3页
第3页 / 共82页
MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础_第4页
第4页 / 共82页
MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础》由会员分享,可在线阅读,更多相关《MSP430系列单片机系统工程设计与实践 教学课件 ppt 作者 谢楷 _ 1_第3章 单片机软件工程基础(82页珍藏版)》请在金锄头文库上搜索。

1、09ho5,主编,第3章 单片机软件工程基础,3.1 前后台程序结构 3.2 状态机建模 3.3 事件触发程序结构,3.1 前后台程序结构,3.1.1 任务 3.1.2 实时性 3.1.3 前后台程序的编写原则 3.1.4 函数重入 3.1.5 临界代码 3.1.6 前后台程序结构的特点,3.1.1 任务,()单任务程序 如果整个处理器系统只实现一个单一功能,或者只处理一种事件,称为“单任务”程序。 ()轮询式多任务程序 在实际应用中,大多数的单片机系统至少包括信息获取、显示、人机交互、数据通信等功能,且要求这些功能同时进行,属于多任务程序。 ()前后台多任务程序 在大部分实际情况中,程序主循

2、环一次的时间都较长(数毫秒至数秒)。,()单任务程序,()轮询式多任务程序,()前后台多任务程序,图3.1.1 一个前后台程序结构的例子,3.1.2 实时性,()实时性最高的事件 ()实时性较高的事件 (3)实时性较低的事件,()实时性最高的事件,它指对于要求零延迟、立即响应或立即动作的事件。例如高速波形的产生、波形采集触发、微秒级脉宽测量等场合,要求响应速度在数十至数百纳秒级,甚至小于单片机的一个指令执行周期。,()实时性较高的事件,对于允许数微秒至数十微秒延迟的事件,可以利用中断响应(前台)来处理。但要注意主循环(后台)中不能长时间关闭中断,否则仍会造成实时性下降。,(3)实时性较低的事件

3、,1)对于允许数毫秒至数秒延迟的事件,可以在主程序中查询处理。 2)如果某事件虽然要求实时性较低,但本身出现的时间很短,小于一个循环周期,仍有可能会被漏掉。 3) 如果上述情况无法产生中断或标志位,可以使用定时中断查询事件,然后置标志位。 4) 如果在一个循环周期内,某事件会连续突发出现多次,对事件捕获要求实时性高,但对事件处理的实时性要求不高,可以利用中断获取事件信息,并用FIFO将事件信息存储起来,在主循环内将这些信息依次取出逐个处理。,3.1.3 前后台程序的编写原则,()消除阻塞 (2)节拍 ()尽量使用低CPU占用率的外设 ()使用缓冲区 ()时序程序设计,()消除阻塞,在前文中已经

4、大量出现过“阻塞”这个词语,含义是长时间占用CPU资源。从前后台程序的结构中可以看出,它之所以可以实现多任务同时执行,本质是快速地依次循环执行各个任务。,(2)节拍,在前后台程序中,如果主循环的周期是固定的,对于定时、延时等与时间相关的任务来说,可以利用主循环内的计数来实现计时,仅在时间到达的时刻做相应处理,消除因等待而产生的阻塞。,()尽量使用低CPU占用率的外设,对于软件系统来说,为了让更多的任务能够同时进行,硬件上就应选择CPU占用率更低的方案。例如同样完成显示功能,用动态扫描LED所耗费的CPU资源就比静态显示要多。,图3.1.2 采用数组作为扫描显示的缓冲区,()使用缓冲区,图3.1

5、.3 动态扫描的典型硬件电路,()使用缓冲区,图3.1.4 一个经典的键盘程序,()使用缓冲区,图3.1.5 采用定时中断读取键盘,()使用缓冲区,图3.1.6 采用FIFO作为键盘缓冲区,()使用缓冲区,()时序程序设计,时序的产生中间包含大量的延迟。例如先高电平0.1s再低电平0.2s。如果用软件延迟来实现电平变化之间的延迟,必然会阻塞CPU。,图3.1.7 步进电动机驱动的硬件电路与时序,()时序程序设计,3.1.4 函数重入,图3.1.8 非重入代码因中断造成的错误,3.1.4 函数重入,()决定函数可重入性的因素 ()避免函数重入性隐患的方法,()决定函数可重入性的因素,首先,若某函

6、数对静态数据进行了赋值操作和访问,则它是不可重入的。 其次,涉及硬件设备操作的函数大部分都是不可重入的。 第三,函数重入性与C语言编译器有关。,()避免函数重入性隐患的方法,1)应尽量使用可重入函数。 2)在进入不可重入函数之前关闭中断,退出该函数之后再开中断。 3)采用双缓冲区结构。 4)采用信号量。,3.1.5 临界代码,(1)依靠软件产生时间严格时序的程序段 (2)共享资源互斥性造成的临界代码 (3)避免函数重入造成的临界代码 (4)CPU字长造成的临界代码 (5)临界代码保护的方法,(1)依靠软件产生时间严格时序的程序段,某些产生很短延迟的程序,可以直接用软件延迟完成。因为占用CPU很

7、短,不会造成严重的阻塞。但此时一定要注意如果延迟过程被中断,产生的延迟将不准确。,例3.1.9 1-Wire总线时序规定:向1-Wire总线器件写一个字时,一字节由8bit构成,低位在先。每个比特发送时序如下:先拉低,保持115s;再根据该比特是1或者0输出高或低电平,保持60120s,再拉高至少1s(见图3.1.9)。为其编写代码,找出并保护临界代码区。,图3.1.9 1-Wire总线写1bit的时序,(2)共享资源互斥性造成的临界代码,涉及共享资源的访问操作,都属于临界代码。共享资源访问时需要被独占,避免数据破坏。程序中任何可被占用的实体都称为“资源”。,(3)避免函数重入造成的临界代码,

8、在“函数重入”一节中,避免函数重入的方法之一是在不可重入函数开始之前关闭中断,之后开中断。对于后台任务和中断都要调用的不可重入函数来说,整个函数都是临界代码区。,(4)CPU字长造成的临界代码,MSP430单片机具有16位CPU内核。这说明它具有16位字长的处理能力,每条指令都可以处理16比特数据。,(5)临界代码保护的方法,第一种方法,也是最简单的方法,就是在上面各例中采用的用DINT()语句关闭中断,临界代码结束后用EINT()函数开启中断。 第二种方法,也是在嵌入式软件中最通用的方法。 第三种方法是关中断前将总中断允许控制位状态保存到一个变量里,然后再关中断保护临界代码,之后根据保存的控

9、制字决定是否恢复中断。 第四种方法是用软件模拟堆栈的行为,将进入临界代码的次数和退出临界代码的次数进行统计,如果各临界代码之间有调用关系,则只对最外层的临界代码区进行中断开关操作。,3.1.6 前后台程序结构的特点,这种串行的顺序执行带了了许多优点: 首先,在后台循环中,一个任务执行完毕后才执行下一任务。 其次,在后台任务顺序执行的结构中,不会出现多个后台任务同时访问共享资源的情况。 第三,前后台程序的结构灵活,实现形式与实现手段多样,可以根据实际需要灵活地调整。,但这种灵活性也为前后台程序带来了众多的缺点: 首先,程序多任务的执行依靠每个任务的非阻塞性来保证,这要求编程者耗费大量的时间精力来

10、消除阻塞,而且最终的代码的样子,可能与对任务的描述差异很大 其次,程序的健壮性及安全性没有保障。 第三,每个程序员的思路、实现方法、软件架构等各不相同,而前后台程序中软件实现方法是开放式的,并无统一的标准和方法。 第四,实际上,前后台系统的整体实时性比预计的要差。 第五,缺乏软件的描述手段。,3.1.6 前后台程序结构的特点,3.2 状态机建模,3.2.1 初识“状态机” 3.2.2 状态机模型的描述方法 3.2.3 通过状态转移图生成代码 3.2.4 状态机建模应用实例,3.2.1 初识“状态机”,()流程图的缺点 ()状态机建模的例子,()流程图的缺点,图3.2.1 在洗衣过程中插入对上盖

11、的处理,()流程图的缺点,图3.2.2 电子表按键操作的流程图,()流程图的缺点,双色报警器。这是一种工业现场大量使用的简单报警指示装置,由一个报警输入(I/O口)、双色报警灯(红黄两色,I/O口控制)、以及一个确认按钮构成。三者之间的逻辑关系是: 1)当报警出现后,红灯亮。 2)报警自动消失后,黄灯亮,直到确认键按下后才灭。 3)当报警未消失时,按下确认键,黄灯亮,此后报警消失时报警灯自动灭。,图3.2.3 双色报警器的流程图,()流程图的缺点,()状态机建模的例子,图3.2.4 双色报警器,()状态机建模的例子,1) 在“正常状态”,如果出现“报警”事件,则系统变成“报警未确认”状态,同时

12、亮红灯。 2) 在“报警未确认状态”,如果出现“报警撤销”事件,则系统变成“报警自行撤销”状态,同时亮黄灯。 3) 在“报警自行撤销”状态如果发生“确认”事件,则系统变成“正常”状态,报警灯灭。 4) 在“报警未确认”状态,如果发生“确认”事件,则系统变成“报警确认”状态,黄灯亮。 5) 在“报警确认”状态,如果发生“报警撤销”事件,则系统回到“正常状态”,报警灯灭。,图3.2.5 报警状态转移图,3.2.2 状态机模型的描述方法,()状态转移图 ()状态转移表(转移矩阵),()状态转移图,状态转移图又称状态跳转图,它用圆圈或圆角的矩形表示系统的各种状态,用一个带箭头的黑点表示初始状态;用有向

13、箭头表示状态的状态转移(跳转)。,例3.2.1 以洗衣机控制逻辑为例,要求洗衣过程“先正转2s,再暂停1s,然后反转2s,再暂停1s,依次循环”。画出状态转移图。,图3.2.6 洗衣机控制程序的状态转移图,例3.2.2 某电子表具有两个按键A和B用于操作与设置,按键功能和操作方法如下。为该电子表的按键操作程序画出状态转移图,并写出代码。,图3.2.7 电子表程序的状态转移图,状态转移的规则不仅可以用图形来表示,还能以二维文本列表或矩阵方法来表示。,()状态转移表(转移矩阵),()状态转移表(转移矩阵),3.2.3 通过状态转移图生成代码,(1) 在状态中判断事件(事件查询) (2) 在事件中判

14、断状态(事件触发),图3.2.9 将该状态机模型写成代码,(1) 在状态中判断事件(事件查询),(2) 在事件中判断状态(事件触发),另一种实现方法是在每个事件的中断(或查询到事件发生)函数内,判断当前状态,并根据当前状态执行不同的动作,再做相应的状态转移。,3.2.4 状态机建模应用实例,例3.2.3 在MSP430单片机上,P1.5、P1.6、P1.7口各接有一个按键(S1、S2、S3),按下为低电平。编写一个键盘程序。要求能够识别长、短按键并返回不同键值。当按键时间小于2s时,认为是一次短按键,按键时间大于2s后返回一次长键(0xC0+键值),之后每隔0.25s返回一次连续长按键(0x8

15、0+键值)。且要求键盘程序不阻塞CPU运行。,图3.2.10 长短键的状态机模型与时序图,先用语言描述按键过程状态与事件之间的关系: 1)在按键“未按下状态”时,若键被按下,按键状态变为“短按状态”。 2)在按键处于“短按状态”时,若键被释放,认为是一次短按键,短键的键值压入键盘缓冲区,并回到“未按下状态”。 3)在按键处于“短按状态”时,若超过2s,认为是一次长按键,“首次长键”的键值压入键盘缓冲区,并将按键状态变为“长按状态”。 4)在按键处于“长按状态”时,每当超过0.25s,认为是一次“连续长键”,长键的键值压入键盘缓冲区,但状态不改变。 5)在键盘处于“长按状态”时,若键被释放,回到

16、“未按下状态”。,例3.2.4 增量式旋转编码器(见图3.2.12)是一种控制系统中常见的转角测量装置,常被安装在各种旋转轴末端,以测量轴转角。它输出如图3.2.11所示的两路相位差90的脉冲(以下简称A路、B路)指示位置。旋转编码器每转过一定角度,就输出一个脉冲。当旋转编码器顺时针旋转时,A路脉冲超前B路脉冲90;当旋转编码器逆时针旋转时,A路脉冲滞后B路脉冲90。计算脉冲个数可以获知转角,根据相位差可以知道旋转方向,从而计算出旋转轴相对角度的变化。,图3.2.11 旋转编码器的输出时序图,图3.2.12 旋转编码器,图3.2.13 旋转编码器4细分原理,图3.2.14 旋转编码器4细分的状态转移图,图3.2.15 旋转编码器与MSP430单片机的连接,例3.2.5 在MSP430F425单片机上,P1.3接有一只红色LED,P1.1接有一只绿色LED,均为高电平点亮。要求串口收到“red”字符串时,点亮红色LED;收到“green”字符串时点亮绿色LED。收到“black”字符串时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号