STM8教程-第九章 STM8S207中断系统

STM8教程-第九章 STM8S207中断系统
STM8教程-第九章 STM8S207中断系统

第九章STM8S207中断系统

中断是用于提高计算机工作效率的一种重要技术,最初它只是作为计算机与外设交换信息的一种同步控制方式而提出,但随着计算机技术的发展,特别是CPU 速度的迅速提高,对计算机内部机制的要求也越来越高,希望计算机能随时发现各种错误,当系统出现意想不到的事件时,能及时处理。于是,中断的概念得以延伸,除了传统的外部事件引起的中断事件外,还有CPU 内部软件中断的概念。所谓中断,是指CPU 在正常执行程序的过程中,由于内部、外部事件或者由程序的预先安排,引起了CPU 暂时中断当前程序的运行,而转去执行由内部、外部事件或预先安排的时间而所需要执行的中断服务子程序,在中断服务子程序执行完毕后,CPU 再重新回来执行当前的程序。利用中断可以大大提高CPU 的工作效率。实现中断功能的控制逻辑称为中断机构或者中断系统。

尽管单片机或者微控制器中的中断系统各不相同,但中断系统的基本功能是相同的:

1、能实现中断响应、中断处理、中断返回和中断屏蔽

2、能实现中断优先级排队

3、能实现中断嵌套

本章介绍STM8S207 微控制器的中断系统以及STM8S207 微控制器对于中断的处理流程。

9.1 STM8S207 中断系统概述

STM8 系列单片机的中断属于异常情况处理的一部分,异常情况处理还包括复位,所以本章除论述STM8 系列单片机的中断系统,也简要介绍STM8 系列单片机的几种复位情况。正常情况下,单片机有序的执行对应程序,按照明确的获取-解码-执行方式顺序处理各种指令。程序计数器记录下一条程序指令位于内存中的位置,即使当程序为了相应分支或跳转指令而偏离了正常的顺序处理,但依然是在顺序事件处理的控制范围之内。可能发生的异常情况会被打破这种事件处理的顺序流,将一个正常程序流的中断归为一个异常情况,异常情况不一定总是和错误相关联的,中断是在一个处理器上运行多个系统的有效方法。通过上面的论述可以知道,STM8 程序运行时可能发生的异常可分为两类:复位和中断,而中断又进一步分为可屏蔽和不可屏蔽中断。

9.1.1 STM8S207 的复位

STM8S207 共有9 个复位源:

1、NRST 引脚产生的外部复位

2、上电复位(POR)

3、掉电复位(BOR)

4、独立看门狗复位

5、窗口看门狗复位

6、软件复位

7、SWIM 复位

8、非法操作码复位

9、EMS 复位:当一些关键的寄存器被破坏或错误加载时产生的复位

所有的复位源最终都作用于NRST 管脚,并在复位过程中保持低电平。复位入口向量在内存映射中位于固定的地址6000h。

9.1.2 STM8S207 单片机的中断

STM8S 单片机的中断分为可屏蔽中断和不可屏蔽中断。

1、不可屏蔽中断

不可屏蔽中断包括软件中断、复位中断以及TLI 中断,下面简要介绍常用的几个不可屏蔽中断。

(1)软件中断

TRAP 实质上是条指令,但其执行过程与中断相同,即通过中断矢量确定目标地址,中断矢量是8004H~8007H。

(2)复位中断

复位产生的复位源有前面所说的9 个,对应的中断矢量是8000H~8003H

(3)TLI

TLI 是非屏蔽中断引脚,无论MCU 处于哪种运行状态,当在特定的IO 口边缘检测到在相应的TLI 输入时将产生硬件中断,MCU 执行完当前指令后,就会相应该中断,中断矢量为8008H~800BH。需要注意的是在TLI 中断服务子程序中禁止使用TRAP 指令。

2、可屏蔽中断

可屏蔽中断可以在程序控制下由用户开启或者关闭。由于STM8S207 的可屏蔽中断数量非常多,这里不详细介绍,在对应功能模块时才分别详细介绍。

3、中断堆栈操作顺序

因为中断响应过程中,会有隐含的堆栈操作,所以中断响应前,堆栈必须有效,即堆栈指针SP 必须指向一个有效的RAM 区,而且堆栈的大小必须不少于9字节。

入栈操作使堆栈指针值减小,出栈操作使堆栈指针值增加。当堆栈指针值为其被允许的最小值时,继续入栈会使堆栈指针值回卷至其最大值,从而会导致先前存储的数据被覆盖,但此时没有中断或硬件标志位来指示该事件发生。应用程序需确保堆栈被正确的操作,没有溢出。子程序调用会占用2 或3 字节空间。中断调用会占用9 字节空间来存储内部寄存器(除SP 之外)。

注:WFI/HLAT 指令会预先保存CPU 上下文。如果CPU 处于WFI 或HALT 状态下有中断发生,则进入中断所需的延时会相应减少。

中断响应堆栈入栈操作如下图所示:出栈相反

更为详细入栈出栈顺序如下图所示:

9.2 中断管理模式

STM8S207 提供2 种中断管理模式

1、同时发生模式

2、嵌套模式

9.2.1 同时发生中断管理模式

在该模式下,所有的中断的中断优先级都是3 级,因此它们都是不可以被中断的(除了被TLI,RESET 或TRAP 中断之外)。

硬件的中断优先级按如下顺序排列,从低到高的优先级是:MAIN, IT4, IT3, IT2, IT1, IT0, TRAP/TLI(同等优先级)以及RESET。

需要注意的是,通过软件优先级寄存器设定的优先级并不表示当出现中断嵌套时,高优先级中断可以中止低优先级中断的服务程序执行,而转向高优先级中断的服务程序运行。这里高优先级作用只是当多个中断源同时请求中断时才能体现,这时STM8S208 将首先响应高优先级的中断,低优先级的中断不会得到相应。

STM8S207 默认的中断处理机制如下图所示:

9.2.2 嵌套中断管理模式

在该模式下,允许在中断子程序中响应中断。一旦一个中断的优先级被设置低于3 级时该模式就立即有效。

注意:在中断被响应时如果位I1 和I0 被修改,那么设备将作如下处理:如果一个中断X仍然处在悬起状态(新的中断或者中断标志没有被清除)同时该新的优先级又比先前的优先级高的话,那么该中断X会被重新响应。否则该中断的软件优先级在下一个中断请求( X中断的IRET之后)来之前保持不变。

在中断子程序的执行过程中,执行HALT, POP CC, RIM , SIM 和WFI指令会改变当前的软件优先级直到下一条IRET指令被执行或者先前提到的指令之一被执行。

9.3 中断映射

STM8S207 的中断映射如下图所示:

需要注意的是在IAR 开发环境中使用中断矢量的时候要加上2,例如TLI 的中断向量号为0,那么在IAR 中就是 2 了,如此类推。

9.4 中断寄存器设置

STM8S207 的中断设置寄存器还是比较少的,只有CPU CC 寄存器中断位、软件优先级寄存器、外部中断控制寄存器1 与2,下面详细讲解STM8S207 的中断寄存器设置。

9.4.1 CPU CC 寄存器中断位

正如前面介绍的,I1、I0 这两位表面当前中断请求的优先级。当一个中断请求发生时,

相应的中断向量的软件优先级自动从ITC_SPRx 载入I1、I0 中

注意:不可屏蔽中断可以中断一个级别为3 的程序。

9.4.2 软件优先级寄存器ITC_SPRx

通过软件对这8 个寄存器的操作,可以定义各个中断向量的软件优先级。注意的是ITC_SPR1 位1:0 由硬件强制设置(TLI)

9.4.3 外部中断控制寄存器

两个外部中断控制寄存器设置外部中断的触发方式,EXT_CR1、EXT_CR2 分别设置了PE、PD、PC、PB、PA 以及TLI 的触发方式。

PxIS[1:0],其中x 代表A、B、C、D、E

这些位仅仅在CC 寄存器的I1、I0 都为1 时才可以写入。

00:下降沿和低电平触发

01:仅上升沿触发

10:仅下降沿触发

11:上升沿和下降沿触发

TLIS:高级中断触发位

0:下降沿触发

1:上升沿触发

9.5 不可屏蔽外部中断基本实例

在这里实现一个外表不可屏蔽中断的实例,也就是TLI 中断,由STM8S207引脚可以知道TLI 就是PD7 口。本实例硬件连接如下图所示:其中PD7 是按键,这里还需要LED1 也就是PD0 作为测试引脚。

本实例中关于LED 灯的实现已经在前面章节中介绍过,本章介绍中断服务程序的编写。由中断矢量表可以查到TLI 的中断号为0,而在IAR 下加2 就是2。

TLI 中断编写顺序为:

初始化对应IO 口中断模式,这里就是PD7 口,通过CR1,CR2 设置

初始化对应中断的方式,例如TLI 就是EXTI_CR2 的第三位,默认是0,也就是下降沿触发。

开全局中断开关,允许中断触发。

编写中断服务子程序

下面是实例程序代码。

#include "iostm8s207rb.h"

void delay_ms(int value);

int main( void )

{

//配置PD0~PD3为输出模式

PD_DDR |= 0x0F; //0000 1111,1为输出

PD_CR1 |= 0x0F; //推挽输出

PD_CR2 = 0x00;

//配置PD7中断

PD_CR1_C17 = 1;

PD_CR2_C27 = 1;

EXTI_CR2_TLIS = 1;

//开中断允许

asm("rim");

while(1)

{

PD_ODR = 0xff;

}

}

/*

******************************************** 简单延时程序

******************************************** */

void delay_ms(int value)

{

int i,j;

if(value < 1)

value = 1;

for(i=0;i!=value;++i)

for(j=0;j!=5000;++j);

}

#pragma vector=0x02

__interrupt void EXTI_PD7_TLI(void)

{

PD_ODR = 0;

delay_ms(100);

}

STM32外部中断以及中断优先级

外部中断的初始化过程: 1.初始化IO为输入(可以设置上拉,下拉,浮空) 2.开启IO复用时钟 3.开启与该IO相对的线上(详解下) 4.配置NVIC,使能中断 5.编写中断服务函数 外部中断: Stm32中总共有19个外部中断 包括: 线0-15:IO输入中断(每条线上最多有7个IO,如GPIOA~GPIOG,但是每一条线每次只允许同时连接到一个IO)

线16:PVD 线17:RTC 线18:USB 关于优先级: CM3中内核支持256个中断(16个内核+240外部)和可编程256级中断优先级的设置

Stm32目前支持84个中断(16个内核+68个外部,注:不是指68个外部中断),16级可编程优先级(优先级设置寄存器中使用了4位)

注意:其中外部中断5-9和中断10-15向量存放在一起 优先级: 数值低的优先级要高于数值高的!!!!!! 上电复位后,系统默认使用的是组0; 一个系统只能使用一组优先级组,不可使用多个,优先级的设置不能超过组的范围,否则会产生不可预计的错误 1.高抢先级的中断可以打断低优先级的中断响应,构成中断嵌套 2.相同抢先级的中断不可以构成嵌套,系统会优先响应子优先级高的

3.当2(n)个相同抢先优先级和相同子优先级的中断出现,STM32首先响应中断通道所对应的中断向量地址低的那个中断 4.0号抢先优先级的中断,可以打断任何中断抢先优先级为非0号的中断;1号抢先优先级的中断,可以打断任何中断抢先优先级为2、3、4号的中断;……;构成中断嵌套。 5.所有外部中断通道的优先级控制字PRI_n也都是0,68个外部中断通道的抢先优先级都是0号,没有子优先级的区分。不会发生任何的中断嵌套行为,谁也不能打断当前正在执行的中断服务。当多个中断出现后,则看它们的中断向量地址:地址越低,中断级别越高,STM32优先响应

STM32中断

STM32外部中断详解 2012-07-02 21:59:24| 分类:嵌入式相关| 标签:|举报|字号大中小订阅 一、基本概念 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI_n(8位,但是STM32中只使用4位,高4位有效),每4个通道的8位中断优先级控制字构成一个32位的优先级寄存器。68个通道的优先级控制字至少构成17个32位的优先级寄存器。 4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组 第0组:所有4bit用于指定响应优先级; 第1组:最高1位用于指定抢占式优先级,后面3位用于指定响应优先级; 第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级; 第3组:最高3位用于指定抢占式优先级,后面1位用于指定响应优先级; 第4组:所有4位用于指定抢占式优先级。 所谓抢占式优先级和响应优先级,他们之间的关系是:具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。每一个中断源都必须定义2个优先级。 有几点需要注意的是: 1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果; 2)抢占式优先级别相同的中断源之间没有嵌套关系; 3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。 二、 GPIO外部中断 STM32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组位一个单位的,同组间的外部中断同一时间只能使用一个。比如说,PA0,PB0,PC0,PD0,PE0,PF0,PG0这些为1组,如果我们使用PA0作为外部中断源,那么别的就不能够再使用了,在此情况下,我们智能使用类似于PB1,PC2这种末端序号不同的外部中断源。每一组使用一个中断标志EXTIx。EXTI0 –EXTI4这5个外部中断有着自己的单独的中断响应函数,EXTI5-9共用一个中断响应函数,EXTI10-15共用一个中断响应函数。对于中断的控制,STM32有一个专用的管理机构:NVIC。 三、程序实现

AVR单片机外部中断0、1、2详解

AVR单片机外部中断0、1、2 详解 中断基本包含: 1.中断源 2.中断向量(中断入口地址) 3.中断优先级 4.中断函数 除此之外,在单片机中,中断的执行或者中断的触发必 须符合以下的规则:中断触发|执行= 全局中断使能位AND 中断源使能位AND 中断源标志位 单片机内部中断的触发必须完成,全局中断使能,中断 源使能,中断源标志位置一等条件。除此之外,如果是 外部中断0,1,2(INT0,1,2),必须设置引脚触发的规则。最后呢,就是需要在程序里建立处理中断的中断 函数。 在编程的时候的步骤大致如下:(无视INT2) 1. 初始化PD2,PD3 为输入状态。DDRD|=BIT(2)|BIT(3); 2. 设置INT0,1 引脚触发的规则,实验中为低电平触发。MCUCR=0xF0; 3. 设置INT0,1 中断源使能位为逻辑1。 GICR|BIT(7)|BIT(6); 4. 清除INT0,1 的中断标志位(软件写入,逻辑1 为清

除)。GIFR|=BIT(7);BIT(6); 5. 全局中断允许位使能。SREG|=BIT(7); 6. 编辑中断处理函数。 /*ATmega16提供3个外部中断,分别由INT0、INT1和INT2引脚触发。 需要注意的是,如果将ATmega16设置为允许外部中断,则即使把INT0、INT1和INT2引脚 设置为输出方式,外部中断仍然会被触发。外部中断可选择采用上升沿触发、下降沿触发和 低电平触发(INT2中断只能采用沿触发方式。 */ #include; #include; #include "smg.h" /*1.状态寄存器SREG bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 I T H S V N Z C I:全局中断使能位。 在I置位后,单独的中断使能由不同的中断寄存器控制。若I为0,则禁止中断。 MCU 控制寄存器- MCUCR MCU 控制寄存器包含中断

Ansys 第 例瞬态热分析实例一水箱

第33例瞬态热分析实例——水箱 本例介绍了利用ANSYS进行瞬态热分析的方法和步骤、瞬态热分析时材料模型所包含的内容,以及模型边界条件和初始温度的施加方法。 33.1概述 热分析是计算热应力的基础,热分析分为稳态热分析和瞬态热分析,稳态热分析将在后面两个例子中介绍,本例介绍瞬态热分析。 33.1.1 瞬态热分析的定义 瞬态热分析用于计算系统随时间变化的温度场和其他热参数。一般用瞬态热分析计算温度场,并找到温度梯度最大的时间点,将此时间点的温度场作为热载荷来进行应力计算。 33.1.2 嚼态热分析的步骤 瞬态热分析包括建模、施加载荷和求解、查看结果等几个步骤。 1.建模 瞬态热分析的建模过程与其他分析相似,包括定义单元类型、定义单元实常数、定义材料特性、建立几何模型和划分网格等。 注意:瞬态热分析必须定义材料的导热系数、密度和比热。 2.施加载荷和求解 (1)指定分析类型, Main Menu→Solution→Analysis Type→New Analysis,选择 Transient。 (2)获得瞬态热分析的初始条件。 定义均匀的初始温度场:Main Menu→Solution→Define Loads→Settings→Uniform Temp,初始温度仅对第一个子步有效,而用Main Menu →Solution→Define Loads→Apply→Thermal→Temperature命令施加的温

度在整个瞬态热分析过程中均不变,应注意二者的区别。 定义非均匀的初始温度场:如果非均匀的初始温度场是已知的,可以用Main Menu→Solution→Define Loads→Apply→Initial Condit'n→Define 即IC命令施加。非均匀的初始温度场一般是未知的,此时必须先进行行稳态分析确定该温度场。该稳态分析与一般的稳态分析相同。 注意:要设定载荷(如已知的温度、热对流等),将时间积分关闭,选择Main Menu→Solution→Load Step Opts→Time/Frequenc→Time Integration→Amplitude Decay;设定只有一个子步,时间很短(如(0.01s)的载荷步, Main Menu→Solution→Load Step Opts→Time/Frequenc→Time →Time Step。 (3)设置载荷步选项。 普通选项包括每一载荷步结束的时间、每一载荷步的子步数、阶跃选项等,选择Main Menu→Solution→Load Step Opts→Time/Frequenc→Time-Time Step. 非线性选项包括:迭代次数(默认25),选择Main Menu→Solution→Load Step Opts→Nonlinear→Equilibrium Iter;打开自动时间步长,选择Main Menu→Solution→Load Step Opts→Time/Frequenc→Time→Time Step:将时间积分打开,选择Main Menu→Solution→Load Step Opts→Time/Frequenc→Time Integration→Amplitude Decay. 输出选项包括:控制打印的输出,选择Main Menu→Solution→Load Step Opts→Output Ctrls→Solu Printout; 结果文件的输出,选择Main Menu →Solution→Load Step Opts→Output Ctrls→DB/Results File.

外部中断详解

7.1EXTI外部按键中断实验 前面我们学习了,LED灯和按键。实际上对于STM32来说,我们是学习了它的外设GPIO。这一节我们前面学习的内容,学习STM32的EXTI (External interrupt),即外部中断。 前面的按键章节中,我们检测按键是否被按下的方式是轮询检测的方式,这里我们改为使用中断检测的方式,提高CPU的效率。 7.1.1什么是中断 单片机中断系统的概念:什么是中断,我们从一个生活中的例程引入。比如说你在做A 事,但是突然间来了你想起来了更重要的B事,所以你马上去做B事了,做完之后再回来继续做A事,这个就是中断。 7.1.2什么是单片机的中断? 当CPU正在执行一个任务,但突然又发生了一个更高级的任务,CPU必须立即去执行的任务,所以CPU必须中断当前的任务,并保存该任务已经执行的状态和相关信息,然后转而去执行那个更加高级的任务,因此就引入了“中断”这个概念。 中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。 在程序里面也是一样的。举个例子可能会容易懂点,定时中断:比如你定时1ms,主程序在运行,每当1ms时间到后,就跑到定时中断子程序里面执行,执行完后再回到主程序(中断程序是1ms中断一次)。那对于整个系统来说中断能实现什么好处呢?下面我们给以说明:1)提高了CPU的效率 CPU是计算机的指挥中心,它与外围设备(如按键、显示器等)通讯的方法有查询和中断2种:查询的方法是无论外围IO是否需要服务,CPU每隔一段时间都要依次查询一遍,这种方法CPU需要花费一些时间在做查询服务工作。 中断则是在外围设备需要通讯服务时主动告诉CPU,这个时候CPU才停下当前工作去处理中断程序,不需要占用CPU主动去查询的时间,CPU可以在没有中断请求来临之前一直做自己的工作,从而提高了CPU效率。 2)可以实现实时处理 外设任何时刻都可能发出请求中断信号,CPU接到请求后及时处理,以满足实时系统的需要。 3)可以及时处理故障 计算机系统运行过程中难免会出现故障,有许多事情是无法预料的,如电源掉电、存储器出错、外围设备工作不正常等,这时可以通过中断系统向中断源CPU发送中断请求,由CPU及时转到相应的出错处理程序,从而提高计算机的可靠性。 7.1.3STM32中断的初步理解 神舟III号开发板的主芯片是STM32F103ZET6,它采用的是ARM公司的Cortex-M3内核。Cortex-M3内核支持256个中断,具有256级的可编程中断设置。但STM32并没有使用M3

单片机外部中断详解

单片机外部中断详解 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON)? ? IT0:外部中断0触发方式控制位? 当IT0=0时,为电平触发方式(低电平有效)? 当IT0=1时,为边沿触发方式(下降沿有效)? IT1:外部中断1触发方式控制位? 当IT1=0时,为电平触发方式(低电平有效)? 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE)? ?

EX0:外部中断0允许位;? EX1:外部中断1允许位;? EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0? 2、开对应的外部中断,即EX0=1或EX1=1;? 3、开总中断,即EA=1;? 4、等待外部设备产生中断请求,即通过P3.2,P.3.3口连接外部设备产生中断? 5、中断响应,执行中断服务函数 三.程序编写 要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。? 目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。

#include#define uint unsigned int #define uchar unsign ed char uchar code dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x f8,0x80,0x90};uint num; void main() { EA=1; //开总中断 IT0=1; //下降沿触发 IT1=0; //低电平触发 EX0=1; //外部中断0允许 EX1=1; //外部中断1允许 while(1) { P0=dat[num%10]; } } void plus() interrupt 0???? //外部中断0 {

8.7非线性瞬态分析步骤帮助学习

8.7. Performing a Nonlinear Transient Analysis Many of the tasks that you need to perform in a nonlinear transient analysis are the same as (or similar to) those that you perform in nonlinear static analyses (described in Performing a Nonlinear Static Analysis) and linear full transient dynamic analyses (described in Structural Static Analysis). However, this section describes some additional considerations for performing a nonlinear transient analysis. Remember that the Solution Controls dialog box, which is the method described in Performing a Nonlinear Static Analysis, cannot be used to set solution controls for a thermal analysis. Instead, you must use the standard set of ANSYS solution commands and the standard corresponding menu paths. 8.7.1. Build the Model This step is the same as for a nonlinear static analysis. However, if your analysis includes time-integration effects, be sure to include a value for mass density [MP,DENS]. If you want to, you can also define material-dependent structural damping [MP,DAMP]. 8.7.2. Apply Loads and Obtain the Solution 1.Specify transient analysis type and define analysis options as you would for a nonlinear static analysis: ?New Analysis or Restart [ANTYPE] ?Analysis Type: Transient [ANTYPE] ?Large Deformation Effects [NLGEOM] ?Large Displacement Transient (if using the Solution Controls dialog box to set analysis type) 2.Apply loads and specify load step options in the same manner as you would for a linear full transient dynamic analysis. A transient load history usually requires multiple load steps, with the first load step typically used to establish initial conditions (see the Basic Analysis Guide). The general, nonlinear, birth and death, and output control options available for a nonlinear static analysis are also available for a nonlinear transient analysis. In a nonlinear transient analysis, time must be greater than zero. See Transient Dynamic Analysis for procedures for defining nonzero initial conditions.

51单片机中断详解

一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求C PU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待C PU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断二、中断源 在51单片机中有5个中断源 中断号优先级中断源中断入口地址 0 1(最高)外部中断0 0003H 1 2 定时器0 000BH 2 3 外部中断1 0013H 3 4 定时器1 0018H 4 5 串口总段0023H 三、中断寄存器 单片机有10个寄存器主要与中断程序的书写控制有关 1.中断允许控制寄存器IE 2.定时器控制寄存器TC ON 3.串口控制寄存器SCON 4.中断优先控制寄存器IP 5.定时器工作方式控制寄存器TMOD 6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1)

四、寄存器功能与赋值说明 注:在用到中断时,必须要开总中断EA,即EA=1。//开总中断 1.中断允许控制寄存器IE EX0(EX1):外部中断允许控制位 EX0=1 外部中断0开关闭合//开外部0中断 EX0=0 外部中断0开关断开 ET0(ET1):定时中断允许控制位 ET0=1 定时器中断0开关闭合//开内部中断0 ET0=0 定时器中断0开关断开 ES: 串口中断允许控制位 ES=1 串口中断开关闭合//开串口中断 ES=0 串口中断开关断开 2.定时器控制寄存器TCON //控制外部中断和定时器中断 外部中断: IE0(IE1):外部中断请求标志位 当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,cpu开始响应,处理终端,而当入

ANSYS稳态和瞬态分析步骤简述

ANSYS 稳态和瞬态热模拟基本步骤 基于ANSYS 9.0 一、 稳态分析 从温度场是否是时间的函数即是否随时间变化上,热分析包括稳态和瞬态热分析。其中,稳态指的是系统的温度场不随时间变化,系统的净热流率为0,即流入系统的热量加上系统自身产生的热量等于流出系统的热量: =0q q q +-流入生成流出 在稳态分析中,任一节点的温度不随时间变化。 基本步骤:(为简单起见,按照软件的菜单逐级介绍) 1、 选择分析类型 点击Preferences 菜单,出现对话框1。 对话框1 我们主要针对的是热分析的模拟,所以选择Thermal 。这样做的目的是为了使后面的菜单中只有热分析相关的选项。 2、 定义单元类型 GUI :Preprocessor>Element Type>Add/Edit/Delete 出现对话框 2 对话框2 (3-1)

点击Add,出现对话框3 对话框3 在ANSYS中能够用来热分析的单元大约有40种,根据所建立的模型选择合适的热分析单元。对于三维模型,多选择SLOID87:六节点四面体单元。 3、选择温度单位 默认一般都是国际单位制,温度为开尔文(K)。如要改为℃,如下操作GUI:Preprocessor>Material Props>Temperature Units 选择需要的温度单位。 4、定义材料属性 对于稳态分析,一般只需要定义导热系数,他可以是恒定的,也可以随温度变化。 GUI: Preprocessor>Material Props> Material Models 出现对话框4 对话框4 一般热分析,材料的热导率都是各向同性的,热导率设定如对话框5. 对话框5

外部中断详解

由于不少同学们,学习51单片机到了中断课程的时候,就开始进入一知半解的状态了,为此,开题一篇,以供大家搞明白,中断这回事。 我们还是用清晰点的逻辑来分析,围绕这四个部分来介绍,当然重点在于3和4部分。通篇我会以让初学者都能看懂的语言来说明。如果有专业一点的术语名词,我也尽量用简单易懂的描述。 注:本文旨在让大家理解什么是中断和怎么去设置。具体的东西有些考虑到深浅问题,则跳过不讲。如需了解,可自行查询资料 1.什么是中断? 2.为什么要有中断? 3.中断怎么触发? 4.怎么设置中断? 什么是中断? 举个老生常谈的例子——接电话。 在一个风和日丽的下午,你在电脑前看着视频,突然间,你桌上的手机来电话了,这时候你就该暂停视频,拿起手机接电话。 OK,回到单片机里来,我们之前写程序,都是在main函数里,甚至main 函数里的while(1)里执行我们的程序。这就相当于这个例子中的【看视频】,而【电话响了】这个过程,就相当于产生了中断,而【接电话】就是你在中断里做的事情。

为什么要有中断? 为什么要有中断,再举一个例子好了。 简单来讲,就是一些程序我们平时不执行,但到了某个特殊时刻,我们才去执行。所以我们就让这个特殊时刻产生一个中断,这时候,就跳去了我们特殊时刻才执行的函数里了。 什么情况会触发中断? 那么,我们什么情况下,单片机才会识别到中断,或者说,什么情况下,单片机才会跳入我们中断的函数里呢? 简单来讲,我们的中断大致分为三种,外部中断、定时器中断、串口中断。这三种的触发方式不一样。 外部中断:

顾名思义,就是单片机外部出现了一定的情况,才进入了中断。89c51有两个外部中断,一个是P3.2引脚,一个是P3.3引脚。分别是外部中断0和外部中断1。我们以外部中断0为例,当P3.2这个脚读到一个低电平(0)或者下降沿(由高电平变低电平)的时候,这时单片机自己就识别到了,所以就会自己跳入中断。 定时器中断: 定时器中断不再这详细说明,大致是讲,我们可以设置一个时间(或者叫闹钟),然后这个单片机会开始计时,当到了这个时间点,单片机就会跳入中断。串口中断: 串口中断也不再这赘述,大致是,当单片机的RX引脚接收到信号的时候,会自动进入中断。 怎么设置中断? OK,在了解这些之后,我们就可以开始来写程序,设置一个中断了。所有中断,如果要开启的话,我们就需要对单片机进行一个【初始化设置】,让单片机知道:“哦,你要老子开启外部中断。” 这时候,我们设置的东西,其实就是在设置单片机里的一些特殊功能寄存器。这时候涉及到一个新名词叫做寄存器,我们这么理解寄存器顾名思义他是存放数据的,需要的时候,我就把他拿出来。

ANSYS瞬态动力学分析步骤

ANSYS模态分析步骤 第1步:载入模型Plot>V olumes,输入/units,SI(即统一单位M/Kg/S)。若为组件,则进行布尔运算:Main Menu>Preprocessor>Modeling>Operate>Booleans>Glue(或Add)>V olumes 第2步:指定分析标题/工作名/工作路径,并设置分析范畴 1 设置标题等Utility Menu>File>Change Title/ Change Jobname/ Change Directory 2 设置分析范畴Main Menu>Preference,单击Structure,OK 第3步:定义单元类型 Main Menu>Preprocessor>Element Type>Add/Edit/Delete,→Element Types对话框,单击Add→Library of Element Types对话框,选择Structural Solid,再右滚动栏选择Brick 20node 95,然后单击OK,单击Element Types对话框中的Close按钮就完成这项设置了。 第4步:指定材料性能 Main Menu>Preprocessor>Material Props>Material Models→Define Material Model Behavior,右侧Structural>Linear>Elastic>Isotropic,指定弹性模量EX、泊松系数PRXY;Structural>Density指定密度。第5步:划分网格 Main Menu>Preprocessor>Meshing>MeshTool,出现MeshTool对话框,一般采用只能划分网格,点击SmartSize,下面可选择网格的相对大小,保留其他选项,单击Mesh出现Mesh V olumes对话框,其他保持不变单击Pick All,完成网格划分。当内存不足时,取消SmartSize 第6步:进入求解器并指定分析类型和选项 Main Menu>Solution>Analysis Type>New Analysis,出现New Analysis对话框,选择Modal,OK。Main Menu>Solution> Analysis Type>Analysis Options,将出现Modal Analysis对话框,选中Subspace 模态提取法,在No. of modes to extract处输入相应的值(一般为5或10),单击OK,出现Subspace Model Analysis对话框,输入Start Freq值,即频率的起始值,其他保持不变(也可输入End Frequency,即输入频率范围;此时扩展模态仅在此范围内取值),单击OK。 第7步:施加边界条件 Main Menu>Solution>Define loads>Apply>Structural>Displacement,出现ApplyU,ROT on KPS对话框,选择在点、线或面上施加位移约束,单击OK会打开约束种类对话框,选择(All DOF,UX,UY,UZ)相应的约束,单击apply(多次选择)或OK即可。 第8步:指定要扩展的模态数 Main Menu>Solution>Load Step Opts>ExpansionPass>Single Expand>Expand Modes,出现Expand Modes对话框,在No. of modes to expand 处输入第6步相应的数字,单击OK即可。 注意:在第6步NMODE No. of modes to expand输入扩展模态数后,第8步可省略。 第9步:进行求解计算 Main Menu>Solution>Solve>Current LS。浏览在/STAT命令对话框中出现的信息,然后使用File>Close 关闭该对话框,单击OK。在出现警告(不一定有)“A check of your model data produced 1 Warning。Should the SOLV command be executed?”时单击Yes,求解过程结束后单击close。 第10步:列出固有频率 Main Menu>General Postproc>Results Summary。 第11步:动画显示模态形状 查看某阶模态的变形,先读入求解结果。执行Main Menu>General Postproc>Read results>first Set,然后执行1.Main Menu>General Postproc>Plot Results>Deformed Shape,在弹出对话框中选择“Def+undefe edge”或执行 2.PlotCtrls>Animate>mode shape,出现对话框,左边滚动栏不变,在右边滚动栏选择“Def+undefe edge”,单击OK,可查看动画效果。如果需要看其他阶模态,执行Main Menu>General Postproc>Read results>Next Set,重复执行上述步骤即可。 第12步:结束分析SA VE_DB; Main Menu>Finish

单片机外部中断详解及程序

单片机外部中断详解及程序 单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态。比如一个电子时钟,它会按时、分、秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来。在不需要对它进行调校的时候它不需要外部干预,自主封闭地运行。如果这个时钟足够准确而又不掉电的话,它可能一直处于这种封闭运行状态。但事情往往不会如此简单,在时钟刚刚上电、或时钟需要重新校准、甚至时钟被带到了不同的时区的时候,就需要重新调校时钟,这时就要求时钟就必须具有调校功能。因此单片机系统往往又不会是一个单纯的封闭系统,它有些时候恰恰需要外部的干预,这也就是外部中断产生的根本原由。 实际上在第二个示例演示中,就已经举过有按键输入的例子了,只不过当时使用的方法并不是外部中断,而是用程序查询的方式。下面就用外部中断的方法来改写一下第二个示例中,通过按键来更改闪烁速度的例子(第二个例子)。电路结构和接线不变,仅把程序改为下面的形式。 #include ;

unsigned int t=500; //定义一个全局变量t,并设定初始值为500次 //===========延时子函数,在8MHz晶振时约 1ms============= void delay_ms(unsigned int k) { unsigned int i,j; for(i=0;i

STM32GPIO外部中断的详细解析和总结

STM32GPIO外部中断的详细解析和总结 1 STM32中断分组 STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F103 的中断控制器支持19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为: 线0~15:对应外部IO 口的输入中断。 线16:连接到PVD 输出。 线17:连接到RTC 闹钟事件。 线18:连接到USB 唤醒事件。 2 外部中断的配置过程 1.配置触发源GPIO口 因为GPIO口作为触发源使用,所以将GPIO口配置成输入模式,触发模式有以下几种: a.GPIO_Mode_AIN ,模拟输入(ADC模拟输入,或者低功耗下省电) b.GPIO_Mode_IN_FLOATING ,浮空输入 c.GPIO_Mode_IPD ,带下拉输入 d.GPIO_Mode_IPU ,带上拉输入 GPIO_InitTypeDef GPIO_InitStructure;//定义结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//选择IO口PE2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//设置成上拉输入

ANSYS瞬态动力学分析步骤

瞬态动力学分析步骤 进行瞬态动力学分析主要有:FULL(完全法)、Reduced(缩减法)和Mode Superposition(模态叠加法)。书上介绍的一般都是FULL法,其分析过程主要有8个步骤: (1)前处理(建立模型和划分网格) (2)建立初始条件 (3)设定求解控制器 (4)设定其他求解选项 (5)施加载荷 (6)设定多载荷步 (7)瞬态求解 (8)后处理(观察结果) 1 Full法步骤具体步骤如下: 第1步:载入模型Plot>V olumes 第2步:指定分析标题并设置分析范畴 1 设置标题等Utility Menu>File>Change Title Utility Menu>File> Change Jobname Utility Menu>File>Change Directory 2 选取菜单途径Main Menu>Preference ,单击Structure,单击OK 第3步:定义单元类型 Main Menu>Preprocessor>Element Type>Add/Edit/Delete,出现Element Types对话框, 单击Add出现Library of Element Types 对话

框,选择Structural Solid,再右滚动栏选择Brick 20node 95,然后单击OK,单击Element Types对话框中的Close按钮就完成这项设置了。第4步:指定材料性能 选取菜单途径Main Menu>Preprocessor>Material Props>Material Models。出现Define Material Model Behavior对话框,在右侧Structural>Linear>Elastic>Isotropic,指定材料的弹性模量和泊松系数,Structural>Density指定材料的密度,完成后退出即可。 第5步:划分网格 选取菜单途径Main Menu>Preprocessor>Meshing>MeshTool,出现MeshTool对话框,一般采用只能划分网格,点击SmartSize,下面可选择网格的相对大小(太小的计算比较复杂,不一定能产生好的效果,一般做两三组进行比较),保留其他选项,单击Mesh出现Mesh V olumes对话框,其他保持不变单击Pick All,完成网格划分。 第6步:建立初始条件 Main Menu>Preprocessor>Loads>define loads>Apply>Initial Condit’n>Define,弹出Define Initial Conditions拾取菜单,在大端面拾取一节点,单击OK,弹出对话框,在Lab DOF to be specified 选择相应的方向,以及初始位移和初始速度 第7步:设定求解类型和求解控制器 Main Menu>Solution>Analysis Type>New analysis,选择Transient,然后选择Full,其他默认,单击OK。 设置求解控制器:Main Menu>Solution>Analysis Type>Sol’n

51单片机外部中断详解

一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON) IT0:外部中断0触发方式控制位 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IT1:外部中断1触发方式控制位 当IT1=0时,为电平触发方式(低电平有效) 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE) EX0:外部中断0允许位; EX1:外部中断1允许位; EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0

2、开对应的外部中断,即EX0=1或EX1=1; 3、开总中断,即EA=1; 4、等待外部设备产生中断请求,即通过,口连接外部设备产生中断 5、中断响应,执行中断服务函数 三.程序编写 要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。 目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。 #include<>#define uint unsigned int #define uchar unsigned char uchar code dat[]={0xc0, 0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uint num; void main() { ! EA=1; //开总中断 IT0=1; //下降沿触发 IT1=0; //低电平触发 EX0=1; //外部中断0允许 EX1=1; //外部中断1允许 while(1) { P0=dat[num%10]; } } { void plus() interrupt 0//外部中断0

ANSYS瞬态分析实例

例题:一根钢梁支撑着集中质量并承受一个动态载荷(如图1所示)。钢梁长为L,支撑着一个集中质量M。这根梁承受着一个上升时间为t1的值为F1 的动态载荷F(t)。梁的质量可以忽略,确定产生最大位移响应时的时间t max和响应y max。 图1 钢梁支撑集中质量的几何模型 材料特性:弹性模量为2e5MPa,质量为M=,质量阻尼为8; 几何尺寸为:L=450mm,I=800.6mm4,h=18mm; 载荷为:F1=20N,t1= GUI操作方式: 1.定义单元类型:Main Menu>Preprocessor>Element Type>Add/Edit/Delete,出现一个对话框,单击“Add”,又出现一个对话框,在对话框左面的列表栏中选择“Structural Beam”,在右面的列表栏中选择“2D elastic 3”,单击“Apply”,在对话框左面的列表栏中选择“Structural Mass”,在右边选择“3D mass 21”,单击“OK”,在单击“Options”,弹出对话框,设置K3为“2-D W/O rot iner”,单击“OK”,再单击“Close”。 2.设置实常数:Main Menu>Preprocessor>Real Constants> Add/Edit/Delete,出

现对话框,单击“Add”,又弹出对话框,选择“Type1 BEAM3”,单击“OK”,又弹出对话框,输入AREA为1,IZZ=,HEIGHT=18,单击“OK”,在单击“Add”,选择Type 2 MASS21,单击“OK”,设置MASS为,单击“OK”,再单击“Close”。; 3.定义材料属性:Main Menu>Preprocessor>Material Props>Material Modls,出现对话框,在“Material Models Available”下面的对话框中,双击打开“Structural>Linear>Elastic>Isotropic”,又出现一个对话框,输入弹性模量EX=2e5,泊松比PRXY=0,单击“OK”,单击“Materal>Exit”。 4.建立模型: 1)创建节点:依次单击Main Menu>Preprocessor>Modeling>Create>Nodes>In Active CS,在弹出对话框中,依次输入节点的编号1,节点坐标x=0,y=0,然后单击“Apply”,输入节点编号2,节点坐标x=450/2,y=0,然后单击“Apply”,输入节点编号3,节点坐标x=450,y=0。单击“OK”。 2)创建单元:依次单击Main Menu>Preprocessor>Modeling>Create>Elements >Auto Numbered>Thru Nodes,弹出拾取框,拾取节点1和2,2和3,单 击“OK”。 3)指定单元实常数:Main Menu>Preprocessor>Modeling>Create>Elements> Elem Attributes,弹出对话框,设置TYPE为2,REAL为2,单击“OK”。4)创建单元:依次单击Main Menu>Preprocessor>Modeling>Create>Elements >Auto Numbered>Thru Nodes,弹出拾取框,拾取节点2,单击“OK”。

相关文档
最新文档