MSP430单片机中断的定义及原理

合集下载

430中断总结

430中断总结

MSP430的中断分为3种:1.系统复位、2.非屏蔽中断、3.可屏蔽中断。

系统复位指向中断向量表(表3-11)的最高地址0xFFFE。

非屏蔽中断和可屏蔽中断根据能否被SR寄存器中的全局中断使能位GIE禁用来区分,非屏蔽中断不受GIE的控制,具备独立的中断使能;可屏蔽中断除了受本身的中断使能控制,还接受GIE控制。

1. 在MSP430中@非屏蔽中断主要有3个,分别是来自MSP430外部管脚NMI的触发FLASH非法访问振荡器错误非屏蔽中断都指向中断向量表中的0xFFFC地址。

2. MSP430具备大量的@可屏蔽中断,定时器、ADC、DMA、UART、WDT、I/O、比较器等都具备中断功能。

不同的可屏蔽中断优先级可根据中断向量表决定。

可屏蔽中断的中断向量表从0xFFFA地址开始向低地址扩展,地址越高的中断向量表所对应的中断优先级越高。

3. 每个中断向量在中断向量表里面占据一个2Byte空间的表项,这个2Byte的空间用来存储对应中断服务函数的首地址,CPU根据中断向量表里的地址跳转到中断服务函数。

仔细观察中断向量表可以看到,一些中断向量对应于多个中断源。

例如,地址为0xFFF8的Timer1_A3中断,当TA1CCR1中断标志位CCIFG置位或者TAIFG置位都会跳转到该向量。

又如具备中断功能的P1和P2端口,端口中的任意一个管脚发生中断都会跳转到对应的中断向量。

这种中断就叫做多源中断。

对于多源中断,中断源中任意一个中断发生都会跳转到公用的中断向量表项,这个时候需要通过中断标志位区别具体的中断源。

有了这些中断向量表的基础知识,下面介绍中断的处理过程,包括中断的接收和退出过程。

4. 微控制器使用过程中一些突发的程序跑飞问题,很多时候都是由于没有正确地处理中断造成的。

5. 中断发生的先决条件是对应中断使能位使能,@非屏蔽中断要求其独立的中断使能开启;@可屏蔽中断要求全局中断使能和自身中断使能同时开启。

6. 当中断请求到达,CPU从接受中断请求到开始执行中断服务函数的第一条指令需要5~6个CPU周期。

msp430按键中断_V1.01

msp430按键中断_V1.01
中断分类
• 软件中断(内中断) • 硬件中断(外中断)
• 非屏蔽中断 • 可屏蔽中断
4
开启总中断
5
中断响应和中断处理流程
当CPU收到中断或者异常的 信号时,它会暂停执行当前的程 序或任务,通过一定的机制跳转 到负责处理这个信号的相关处理 程序中,在完成对这个信号的处 理后再跳回到刚才被打断的程序 或任务中。
14
I/O中断实列
这是一个利用中断控制LED的亮灭实验,初始时LED常亮,按下按键,LED亮灭切换
15
IO 外部中断使用方法
高级单片机的全部 IO 口都带外部中断功能,MSP430 单片机要使用外部中断,遵 循以下步骤:
1) 通过 PxDIR 将 IO 方向设为输入。 2) 通过写 PxIES,决定中断的边沿是上升沿、下降沿或两种情况均中断。 3) 如果是机械按键输入,可以通过 PxREN 启用内部上下拉电阻,根据按键 的接法,设
7
MSP430中的中断系统
这是一个用户手册
8
MSP430F6638的P1到 P4都具有中断的功能
翻到msp430f6 638_Datasheet 第6章表6.3
9
中断嵌套
如果在中断服务子程中置位GIE(开全局中断),则允许 中断嵌套。 在允许中断嵌套的情况下,任何中断请求均将中断正在 执行的中断服务子程序,而不管中断的优先级如何。 (中断优先级仅用于裁决同时产生的中断请求)
CPU执行流程 中断申请
set GIE
中断子程序1
中断子程序2
10
I/O寄存器
使用实列:
P2DIR |= BIT7; //设P2.7为输出 P2DIR为方向寄存器,输出为1,输入为0. P2OUT |= BIT7; //初始化P2.7为高电平 P2OUT是输出数据寄存器,可控制管脚输出电平的高低,输出为

第2讲MSP430单片机的GPIO与中断系统

第2讲MSP430单片机的GPIO与中断系统

4.2 MSP430单片机中断源
MSP430单片机的中断向量表被安排在0FFFFH~0FF80H空间,具有最大64个中断源。表4.2.1为MSP430单
片机的中断向量表。
中断源 系统复位 系统不可屏蔽中断 用户不可屏蔽中断 比较器B TB0 TB0 看门狗定时器 USCI A0 接收/发送 USCI B0 接收/发送 ADC12_A TA0 TA0 USB_UBM DMA TA1 TA1 P1端口 USCI_A1 接收/发送 USCI_B1 接收/发送 TA2 TA2 P2端口 RTC_A 保留
I/O端口还具有其他片内外设功能,为减少引脚,将这 些外设功能与I/O端口引脚复用来实现。 PxSEL来选择引脚的I/O端口功能与外围模块功能。 PxSEL的配置: Bit = 0: 选择引脚为I/O端口; Bit = 1: 选择引脚为外设功能。
2015/8/7
12
GPIO 寄存器(6/9)
1
3.1 通用IO端口
3.1.1 MSP430端口概述 GPIO (General Purpose I/O),通用输入输出端口。 GPIO基本都是用于芯片与片外器件或设备的交互。 检测数字输入,如键盘或开关信号; 驱动LED,蜂鸣器或LCD等其他指示器; 控制片外器件,较高级的使用可以用它们(通过 程序)模拟很多器件的时序达到控制相应器件的 目的,比如模拟SPI和模拟总线等。
2015/8/7
16
4.1 中断的基本概念
1.中断定义 中断是暂停CPU正在运行的程序,转去执行相应的中断服务程序,完毕后返回被中断 的程序继续运行的现象和技术。 2.中断源 把引起中断的原因或者能够发出中断请求的信号源统称为中断源。中断首先需要由中 断源发出中断请求,并征得系统允许后才会发生。在转去执行中断服务程序前,程序需 保护中断现场;在执行完中断服务程序后,应恢复中断现场。 中断源一般分成两类:外部硬件中断源和内部软件中断源。外部硬件中断源包括可屏蔽 中断和不可屏蔽中断。内部软件中断源产生于单片机内部,主要有以下3种:①由CPU运 行结果产生;②执行中断指令INT3;③使用DEBUG中单步或断点设置引起。

msp430中断定时器.概要

msp430中断定时器.概要

}
P1口的中断向量 #pragma vector = PORT1_VECTOR//定时器TA中 断服务函数 __interrupt void PORT1_ISR(void) { …… }
#define COMPARATORA_VECTOR #define TIMER1_A1_VECTOR #define TIMER1_A0_VECTOR #define NMI_VECTOR
(12 * 1u) (13 * 1u)
(14 * 1u)
#define RESET_VECTOR
(15 * 1u)
2019/1/21
中断优先级是固定的并且由图 2-3中显示的连接链中的 模块安排来定义。 距离 CPU/NMIRS 越近的模块, 其 优先级越高。中断优先级确定当多于一个中断在同时等 待时,采用哪一个中断。
中断有三个类型: • 系统复位 • 不可屏蔽 NMI
• 可屏蔽(我们重点学习)
2019/1/21
中断矢量和加电起动地址位于地址范围 0FFFFh 至 0FFC0h 内,与表 2-1中描述的相同。 一个矢量由用 户使用相应中断处理例程的 16 位地址进行编辑。 完 整中断矢量列表请参与器件专用数据表。
建议为每个分配给一个模块的中断矢量提供一个中断处 理例程。 包含 RETI指
令,并且几个中断矢量可指向它。
2019/1/21
中断
1、中断定义 CPU在执行一个程序时,对系统发生的某个事件(程序自身或外 界的原因)作出的一种反应:CPU暂停正在执行的程序,保留现 场后自动转去处理相应的事件,处理完该事件后,到适当的时候 返回断点,继续完成被打断的程序。(如有必要,被中断的程序 可以在后来某时间恢复,继续执行。) 事件:如读盘,盘有问题,无法读,产生中断,解决后,程序恢 复,软件错误也会中断。 特点: 1) 中断随机的 2) 中断是可恢复的 3) 中断是自动进行处理的 单片机中断的简单应用:按键中断控制小灯亮灭

430单片机之中断

430单片机之中断

MSP430单片机之中断服务430的中断是按照下图1的优先级顺序定义的,有三种中断:1.系统重置、2.不可屏蔽中断(NMI)、3.可屏蔽中断。

图1.中断优先级部分具体的中断优先级由高到低为:PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CC1-2, TA */TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CC0 */ADC_VECTOR (7 * 2u) /* 0xFFEE ADC */USART0TX_VECTOR (8 * 2u) /* 0xFFF0 USART 0 Transmit */USART0RX_VECTOR (9 * 2u) /* 0xFFF2 USART 0 Receive */WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */TIMERB1_VECTOR (12 * 2u) /* 0xFFF8 Timer B CC1-2, TB */TIMERB0_VECTOR (13 * 2u) /* 0xFFFA Timer B CC0 */NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maska××e */RESET_VECTOR (15 * 2u) /* 0xFFFE Reset [Highest Priority] */其中可屏蔽中断分为系统NMI(SNMI)和用户NMI(UNMI),一般来说,不可屏蔽中断不受GIE标志位的影响。

用户不可屏蔽中断的中断源为NMIIE、ACCIE和OFIE,当响应用户不可屏蔽中断后,其他不可屏蔽中断就自动被禁止,以防止同级别的中断发生产生中断嵌套。

单片机MSP430 - Timer_A 定时器中断程序

单片机MSP430 - Timer_A 定时器中断程序

单片机MSP430 - Timer_A 定时器中断程序一、利用定时器定时功能,实现定时器单个溢出中断,实现P3.0 方波输出#include “cc430x613x.h”void main(){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器P3DIR |= 0x04; // P3 口初始化,设置为输出模式TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为32.768MHZ,32768 / 32768 = 1sTA0CCTL0 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CTL = TASSEL_1 + MC_1 + TACLR; // TASSEL_1,ACLK 时钟源MC_1,增计数模式_BIS_SR(LPM3_bits + GIE); // 进入LPM3 低功耗模式,开启总中断}#pragma vector = TIMER0_A0_VECTOR__interrupt void Timer_A(void) // 定时器中断触发,P3 输出口异或,电平翻转{P3OUT – 0x04;二、利用定时器定时功能,实现定时器多个溢出,对应产生多个中断,实现P3.0 输出#include “cc430x613x.h”void main(){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器P3DIR |= 0x04; // P3 口初始化,设置为输出模式TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为32.768MHZ,32768 / 32768 = 1sTA0CCTL0 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CCR1 = 3276; // 定义中断溢出周期100msTA0CCTL1 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CTL = TASSEL_1 + MC_1 + TACLR; // TASSEL_1,ACLK 时钟源MC_1,增计数模式_BIS_SR(LPM3_bits + GIE); // 进入LPM3 低功耗模式,开启总中断}#pragma vector = TIMER0_A0_VECTOR__interrupt void Timer_A(void) // 1s 溢出中断P3OUT = ~0x04;}#pragma vector = TIMER0_A1_VECTOR__interrupt void Timer_A1(void) // 100ms 溢出中断{switch(TA0IV){case 2:P3OUT = 0x04;break;case 4:break;case 10:break;}}tips:感谢大家的阅读,本文由我司收集整编。

MSP430单片机原理与应用

MSP430单片机原理与应用

TI公司已拥有超过400种的MSP430单片机的芯片。这些芯片在很多领域取得了广泛的应用。
读者对MSP430单片机具有了初步的了解和认识,从而为以后章节的学习打下良好的基础。
MSP430单片机原理与应用
第2章 MSP430单片机软件工程开发基础
MSP430单片机的CPU属于RISC(精简指令集)处理器,RISC处理器基本上是为高级语 言所设计的,因为精简指令系统很大程度上降低了编译器的设计难度,有利于产生高效紧 凑的代码。初学者完全可以在不深入了解汇编指令系统的情况下,直接开始C语言的学习。 本章介绍MSP430单片机软件工程的开发基础,主要讲解MSP430单片机C语言编程基础、 MSP430单片机的软件编程方法及软件集成开发环境的基本操作。通过本章的讲解,旨在 使读者对MSP430单片机的编程思想有一定的了解。
2.1
2.2 2.3
MSP430单片机C语言基础
MSP430单片机软件工程基础
MSP430单片机软件开发集成环境CCSv5
2.1 MSP430单片机C语言基础
2.1.1 标识符和关键字
1.标识符 标识符用来标识程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变 量、常量、数组等。标识符的第一个字符必须是字母或下划线,随后的字符必须是字母、 数字或下划线。例如,count_data、text2是正确形式,而2count是错误形式。 C语言对大小写字符敏感,所以在编写程序时要注意大小写字符的区别。例如,对于 sec和SEC这两个标识符来说,C语言会认为它们是两个完全不同的标识符。
要配置少量的外围器件,就可满足一般应用的要求。为了使读者对MSP430单片机有一个
初步的认识和了解,本章首先介绍MSP430单片机的发展历史及应用,然后叙述MSP430单 片机具有的特点及优势,最后简要介绍MSP430单片机的应用选型。

430入门之中断

430入门之中断

很多人刚刚接触单片机的时候都对中断不是很理解,或者是说对单片机的运行机制不是很理解,比如说为什么要在main函数里面加一个while(1)?那样的话岂不是程序卡死了吗?那么中断函数又是什么时候执行呢?小编刚开始也是这样懵懵懂懂的过来,直到最近二刷单片机,才有了一个比较清晰地理解,此处就以MSP430F6638为例,讲解单片机基本的运行机制和本帅气的小编对中断一些浅显的理解(高手勿喷)首先是运行机制,啥话不说,先上代码Main函数一般来说,都是由这三部分组成。

1、关狗(如无意外,一般都关狗);2、初始化各种东西,配置各种管脚(不同程序不一样,具体问题具体分析);3、while(1)循环,有一定编程基础的人都知道,程序是从主函数处开始执行,执行完主函数也就退出程序了,但是我们玩单片机肯定不能让他就这样退出了啊,所以这里加一个死循环,乖乖的卡死在这里吧。

那么有人会问了,程序卡死在这里,我怎么做其他操作啊,这里就不得不提到一个十分好用的东西了——中断,只有了解了中断机制,才能66地玩单片机啊。

好了,基本的运行框架大概就是这么多,下面就稍微讲解一下中断机制。

首先就是中断的分类,根据引起中断的原因,中断一般可以分为按键中断,定时器中断,看门狗中断(其实也是一种定时器中断)。

其次就是什么时候会进入中断函数,定时器中断会在计数溢出的时候进入中断函数,而按键中断则会在检测到下降沿或者是上升沿时候进入中断(看你怎么设置),以下以按键中断为例,讲解一下中断,啥也不说,上代码。

首先是按键的配置,先查阅原理图,弄清楚按键对应的是哪个管脚,然后根据下面代码和注释自行配置。

比如说6638,查阅原理图可知按键有这些管脚,随便选一个进行配置。

其次就是中断函数,每当程序检测到上升沿的时候(无论此时程序执行到哪里),都会进入到中断函数,而执行完中断函数之后程序又会回到刚刚执行到的地方(所以说中断里面千万不能放死循环啊,不然就真的卡死了……)来人,呈上代码。

Msp430f5529时钟系统与定时器以及中断

Msp430f5529时钟系统与定时器以及中断
在MCU中,无论是定时功能还是计数功能,实 际上都是由n位(8位、16位、32位等)的加法/减 法计数器实现,区别仅在于计数输入信号的不同 。
一般地讲,计数器的计数输入信号是外部事 件(脉冲信号),而定时器的计数输入信号则是 MCU中的时钟信号或经过分频后的时钟信号。
MSP430F5529定时器分为看门狗定时器、定时 器A和定时器B。
00: stop mode 01: up mode 10: continuous mode 11: up/down mode
1: interrupt pending
1: TA interrupt enabled
1: reset TAR ,clock divider and count direction for up/down mode. The TACLR bit is automatically reset and is always read as zero.
定时器 A 的四种计数方式(Count Mode)
MCx count mode
0 0: stop mode 0 1: up mode 1 0: continuous mode 1 1: up/down mode
Mode Control
Stop mode : the timer is halted
中断响应过程
1. 当前指令执行完毕,且满足响应条件; 2. 入栈保护断点:相当于执行 PUSH PC; 3. 入栈保护SR:相当于执行 PUSH SR; 4. 优先级裁决:若有多个中断同时请求,则CPU选
择优先级最高的中断请求进行响应; 5. 中断请求标志的处理:对于单一中断标志的中断
源请求,则由CPU自动清零该中断标志;对于有 多个中断标志的中断源请求,则中断标志的清零 处理交由中断服务子程完成(以便于中断服务子 程区分本次中断到底是由哪一个/哪些中断标志 请求的); 6. 清零SR(关中断,结束低功耗方式); 7. 装载中断向量至PC,转去执行中断服务子程。

MSP430并行数字输入输出端口中断的使用_6

MSP430并行数字输入输出端口中断的使用_6

第6章并行数字输入输出端口中断的使用——按键电路的设计目标通过本章的学习,应掌握以下知识●中断的概念和工作过程●MSP430微控制器芯片支持的中断类型●Embedded Workbench for MSP430开发软件的中断服务程序结构●按键开关●独立式键盘的原理电路●MSP430微控制器芯片的并行输入/输出端口涉及中断的相关寄存器●字节操作运算符●条件语句●多个数据的输入方法引言信号处理是电子线路的一项主要的工作。

处理信号必须具有一个被处理的对象,也就是需要使用某种方式将被处理的信号引入电路。

在数字系统中,键盘是一种常见的信息输入工具。

组成键盘的按键开关具有两种工作状态,因此通过按键开关的断开,或者接通,就能够完成数字量0,或者1,两种取值的输入。

组成电路以后,按键开关的断开和接通可以用高电平和低电平这2种数字电路的工作状态反映出来。

这样将按键电路与MSP430微控制器芯片的输入/输出管脚连接起来,通过读取管脚的状态就能够判断按键开关是否动作,从而接收外部输入的信息。

按键开关组成键盘的电路形式常用的有独立式键盘电路和矩阵式键盘电路两种。

独立式键盘电路无论电路结构,还是它的识别程序结构,都比较简单。

矩阵式键盘电路的优点是对微控制器芯片的输入/输出管脚的占用数量较少。

作为一本入门书籍,本章只涉及独立式键盘电路。

键盘电路的处理时间只占用微控制器工作时间非常少的部分,同时键盘的使用还是随机的,这样让微控制器不断地读取按键的工作状态,显然降低了系统对信号的处理速度。

中断的概念非常适合按键工作状态的识别。

16.1按键开关当需要向微控制器传送命令,或者输入数据时,键盘通常被使用。

键盘是一组按键开关的集合。

像数码管一样,键盘也是应用系统的一个重要组成部分。

按键开关具有2个状态,闭合或者断开。

组成合适的电路,这2个状态反映在电压上就是按键开关分别呈现出高电平,或者低电平。

在数字电路中,这两个电平分别用来表示数据1,或者0。

第3讲 MSP430中断系统st_517705504

第3讲 MSP430中断系统st_517705504

第3讲MSP430中断系统一、MSP430的中断系统简介 二、MSP430的中断系统实验一、MSP430的中断系统1、中断的概念 2、MSP430的中断源类型 3、MSP430x169的中断向量表、中断优先级 4、可屏蔽中断响应过程 5、端口P1和P2外中断 6、可屏蔽中断程序设计1、中断的概念中断是暂停CPU正在运行的程序, 转去执行相应的中断服务程序,完 毕后返回被中断的程序继续运行的 现象和技术。

CPU执行流程无中断时 有中断时非预料 事件1中断服 务程序1非预料 事件 2中断服 务程序 22、 MSP430的中断源类型两种分类: 1) 按中断源的响应是否受控分类 2)按中断源来自MCU外部引脚还是内部分类1) 按中断源的响应是否受控分类 MSP430的中断源分为三大类型●系统复位中断 system reset(也称不可屏蔽中断,Nonmaskable interrupts) ——不能被总控位GIE和自己的分控位IE位屏蔽的中断●非屏蔽中断(Non)maskable interrupts——不能被总控位GIE屏蔽, 但能被自己的分控位IE位屏蔽的中断●可屏蔽中断maskable interrupts——能被总控位GIE和自己的分控位IE位屏蔽的中断状态寄存器SR (Status Register)15~9 保留 8 7 SCG1 6 SCG0 5 OSCOFF 4 CPUOFF 3 2 1 0VGIENZCGIE : 可屏蔽中断屏蔽位 (General Interrupt Enable Bit) 置位1: 允许所有可屏蔽中断 复位0: 禁止所有可屏蔽中断开/关总中断控制位指令(disable/enable general interrupt bit) 指令格式 _DINT( ); _EINT( ); 执行操作 V Z N C0→ GIE 1→ GIE* * * * #include "in430.h"#include “intrinsics.h”非屏蔽中断的控制机制(non)_maskable interruptindividual enable bitCPU 优先权裁决 CPU 中断响应中断请求 1--enable 0--disable 分控位可屏蔽中断的控制机制(分控位、总控位)maskable interruptindividual enable bitGIECPU 优先权裁决 CPU 中断响应中断请求 1--enable 0--disable 分控位 1--enable 0--disable 总控位2) 按中断源来自MCU外部引脚还是内部分类由外部引脚(如RST/NMI)产生的中断, 为外中断, 由MCU内部模块产生的中断,称内中断RST/NMI P1.0~P1.7外中断内 中断MSP430F169的外中断和内中断外中断:  引脚RST/NMI、P1.0~P1.7、P2.0~P2.7产生的中断 内中断:  由MCU内部模块产生外中断内中断3、MSP430x169中断源、中断标志、中断向量地址 、 中断优先级(中断类型号) (MSP430F169.pdf P11)Interrupt SourcePower up, External Reset Watchdog, Flash memory NMI , Oscillator Fault, Flash memory access violation Timer_B7 Timer_B7 Comparator_A Watchdog timer USART0 receive USART0 transmit I2C transmit/receive/others ADC12 Timer_A3 Timer_A3 I/O port 1(8 flags) USART1 receive USART1 transmit I/O port 2(8 flags) DAC12 DMAInterrupt FlagWDTIFG, KEYV NMIFG,OFIFG,ACCVIFG TBCCR0 CCIFG TBCCR1 to TBCCR6 CCIFGs, TBIFG CAIFG WDTIFG URXIFG0 UTXIFG0 ADC12IFG TACCR0 CCIFG TACCR1 and TACCR2 CCIFGs,  TAIFG P1IFG.0~P1IFG.7 URXIFG1 UTXIFG1 P2IFG.0~P2IFG.7 DAC12_0IFG, DAC12_1IFG, DMA0IFG~DMA2IFGSYSTEM InterruptReset (Non)maskable Maskable Maskable Maskable Maskable Maskable Maskable Maskable Maskable Maskable Maskable Maskable Maskable Maskable MaskableAddress0FFFEh 0FFFCh 0FFFAh 0FFF8h 0FFF6h 0FFF4h 0FFF2h 0FFF0h 0FFEEh 0FFECh 0FFEAh 0FFE8h 0FFE6h 0FFE4h 0FFE2h 0FFE0hPriority15(highest) 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(lowest)作为中断申请的端口P1和P2引脚, 应设置下列相应寄存器:1)设置功能选择寄存器PxSEL.y对应位为0(基本I/O功能)2)设置方向选择寄存器PxDIR.y对应位为0(输入)3)设置PxIES.y选择中断源有效信号类型是上升还是下降沿4)设置PxIE.y打开分中断允许位5)设置GIE=1打开总中断允许位在中断程序中:1)由于端口的8个引脚共用一个中断向量,当有多个引脚做中断源时,需利用PxIFG判断产生中断的中断源引脚2) 在中断子程中应清除PxIFG相应的中断标志位206、 MSP430的可屏蔽中断程序设计1)  编程步骤 2) C语言中断程序举例1)编程步骤编程前应了解可屏蔽硬中断的响应过程, 了解有关的寄存器和引脚与中断响应过程的关系 a.  主程序 做好相关设置: 中断源发出中断申请时CPU能够响应的准备工作 b.  中断程序 处理与中断源有关的关键任务 c.   设置中断向量 根据中断源在中断向量表的相应位置,设置中断向量a.  主程序做好相关设置, 中断源发出中断申请时CPU能够响应的准备工作 开始 主 程 序 流 程 根据情况关闭分中断允 许或总中断允许 有关任务初始化 中断有关初始化 (中断源、边沿选择等) 清分中断标志 打开分中断允许 开总中断允许GIE=1 主程其它工作处理 (可用无限循环延时代替)b. 中断程序处理与中断源有关的关键任务 开始中 断 程 序 流 程C语言中断程序结构__interrupt  void intName(void) { ...... ...... ...... } 1.  定义了一个函数名为intName的中断程序 2. 结构上与普通函数的区别是? 使用了关键字__interrupt 使得反汇编中断程序时,  返回的语句是RETI, 而不是RETc. 设置中断向量确定根据中断源确定中断类型号N, 将中断程序的入口地址放在中断向量表0FFE0h+N*2处中断源 上电,外部复位 看门狗复位 FLASH密码错 ... 引脚P1.0~P1.7 ... 引脚P2.0~P2.7中断标志向量地址优先级 中断类型号 15 ... 4 ... 1WDTIFG, KEYV0FFFEh... ... P1IFG.0~P1IFG.7  0FFE8h ... ... P1IFG.0~P1IFG.7       0FFE2h¾ 头文件 io430x16x.h和 msp430x16x.h 用符号表示各中断源在中断向量表的偏移地址// Interrupt Vectors (offset from 0xFFE0) #define DACDMA_VECTOR        (0 * 2u)  /* 0xFFE0 DAC/DMA */ #define PORT2_VECTOR         (1 * 2u)  /* 0xFFE2 Port 2 */ #define USART1TX_VECTOR      (2 * 2u)  /* 0xFFE4 USART 1 Transmit */ #define USART1RX_VECTOR      (3 * 2u)  /* 0xFFE6 USART 1 Receive */ #define PORT1_VECTOR         (4 * 2u)  /* 0xFFE8 Port 1 */ #define TIMERA1_VECTOR       (5 * 2u)  /* 0xFFEA Timer A CC1‐2, TA */ #define TIMERA0_VECTOR       (6 * 2u)  /* 0xFFEC Timer A CC0 */ #define ADC12_VECTOR         (7 * 2u)  /* 0xFFEE ADC */ #define USART0TX_VECTOR      (8 * 2u)  /* 0xFFF0 USART 0 Transmit */ #define USART0RX_VECTOR      (9 * 2u)  /* 0xFFF2 USART 0 Receive */ #define WDT_VECTOR           (10 * 2u) /* 0xFFF4 Watchdog Timer */ #define COMPARATORA_VECTOR   (11 * 2u) /* 0xFFF6 Comparator A */ #define TIMERB1_VECTOR       (12 * 2u) /* 0xFFF8 Timer B CC1‐6, TB */ #define TIMERB0_VECTOR       (13 * 2u) /* 0xFFFA Timer B CC0 */ #define NMI_VECTOR           (14 * 2u) /* 0xFFFC Non‐maskable */ #define RESET_VECTOR   (15 * 2u) /* 0xFFFE Reset [Highest Priority] */C语言程序设置中断向量方法在中断程序前使用#pragma vector=偏址 语句, 将中断程序的入口地址放入到FFE0+偏址的中断向量表中 #pragma vector=N*2 //使用中断类型号计算偏址 __interrupt  void intName(void) { ...... } #pragma vector=PORT1_VECTOR //使用符号表示的中断偏址 __interrupt  void intName(void) { ...... }1. 主程序可 屏 蔽 中 断 程 序 设 计开始 据情况关闭分中断允许 或总中断允许 有关任务初始化 中断有关初始化 (中断源、边沿选择等) 清分中断标志 打开分中断允许 开总中断允许GIE=1 主程其它工作处理 (可用无限循环延时代替)开始3. 设置中断向量 根据中断源在 中断向量表相应位置 设置中断向量例: 中断编程举例 (以P1.0上的中断为例)用C语言编写程序,   以中断方式响应P1.0上的下降沿, 每来一个下降沿,  使 P3.6 的输出翻转一次 MSP430F169 P3.6P1.0中断请求C语言:   开/关总中断控制位函数(disable/enable  general  interrupt  bit)函数名称__disable_interrupt( ) __ensable_interrupt( )功能0→ GIE 1→ GIE包含在intrinsics.h intrinsics.hintrinsics.h 文件中:声明了一些包含在IAR 编译器的内部函数,方便用户使用 如: __intrinsic    void   __enable_interrupt(void); __intrinsic    void   __disable_interrupt(void);可通过查看EW430安装目录下\430\doc\Help430Compiler.chm 了解这些内部函数实现的功能利用安装目录\430\doc\Help430Compiler.chm 了解这些内部函数实现的功能用C语言编写中断程序方法11. 包含intrinsics.h文件中 2. 使用__disable_interrupt( )  和__enable_interrupt(  ) #include "io430.h" #include "intrinsics.h" int main( void ) {      //Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; __disable_interrupt();   //关总中断控制(非必要) …… //主程序初始化准备工作 …… __enable_interrupt(); //开总中断控制 while(1){     }; //主程序循环 } #pragma vector=数字或符号表示的偏址 //中断向量设置 __interrupt void port_int(void) //中断子程 { …… }头文件 in430.h(注意不是io430.h)…… #include   "intrinsics.h " …… /*Deprecated, please use "__disable_interrupt" instead. */ #define  _DINT( )   __disable_interrupt() /* Deprecated, please use "__enable_interrupt" instead. */ #define    _EINT( )    __enable_interrupt() /* Deprecated, please use "__no_operation" instead. */ #define    _NOP( )   __no_operation() ......用C语言编写中断程序方法21. 包含in430.h文件 2. 使用DINT(  )  和EINT ( ) #include "io430.h" #include "in430.h" int main( void ) {      //Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; _DINT( );   //关总中断控制(非必要) …… //主程序初始化准备工作 …… _EINT( ); //开总中断控制 while(1){     }; //主程序循环 } #pragma vector=数字或符号表示的偏址//中断向量设置 __interrupt void port_int(void) //中断子程 { …… }头文件io430.h__no_init volatile   union {  unsigned char P1IFG;   struct { unsigned char P1IFG_0    :  1 ;  unsigned char P1IFG_1    :  1 ;  unsigned char P1IFG_2    :  1 ;  unsigned char P1IFG_3    :  1 ;  unsigned char P1IFG_4    :  1 ;  unsigned char P1IFG_5    :  1 ;  unsigned char P1IFG_6    :  1 ;  unsigned char P1IFG_7    :  1 ;  } P1IFG_bit;   } @ 0x0023; __no_init volatile union {  unsigned char P1IES;    struct {unsigned char P1IES_0    :  1 ;  unsigned char P1IES_1    :  1 ;  unsigned char P1IES_2    :  1 ;  unsigned char P1IES_3    :  1 ;  unsigned char P1IES_4    :  1 ;  unsigned char P1IES_5    :  1 ;  unsigned char P1IES_6    :  1 ;  unsigned char P1IES_7    :  1 ;  } P1IES_bit;   } @ 0x0024;可用字节或位域方式对PxIFG和PxIE进行操作P1IFG_bit.P1IFG_0 = 0;  P1IE_bit.P1IE_0 = 1; //清P1.0中断标志 //打开P1.0中断允许#include  "io430.h" #include  "in430.h" int main( void ) {  WDTCTL = WDTPW + WDTHOLD;  //关闭看门狗 _DINT(); //禁止可屏蔽中断 GIE=0 P1IE_bit.P1IE_0=0; // 关闭P1.0中断允许 P3SEL_bit.P3SEL_6=0;  //设置P3.6为基本I/O功能 P3DIR_bit.P3DIR_6=1;    //设置P3.6为输出 P3OUT_bit.P3OUT_6=0;  //置P3.6输出初值为0 P1SEL_bit.P1SEL_0=0; //置P1.0作为基本I/O端口 P1DIR_bit.P1DIR_0=0; //置P1.0为输入 P1IES_bit.P1IES_0=1; //置P1.0下降沿作中断源 P1IFG_bit.P1IFG_0=0;  //清P1.0中断标志 P1IE_bit.P1IE_0=1; //打开P1.0中断允许 _EINT(); //允许可屏蔽中断 GIE=1 while(1)  {   };              //主程循环 } #pragma vector=PORT1_VECTOR //置P1中断向量 __interrupt void port_int(void)      //中断子程 {     if  (P1IFG_bit.P1IFG_0==1)      //判断是否是P1IFG.0中断标志 { P3OUT_bit.P3OUT_6=~P3OUT_bit.P3OUT_6; //对P3.6取反 P1IFG_bit.P1IFG_0=0; //清P1.0中断标志 } }在EW430下 反汇编C程序代码: P1IFG_bit.P1IFG_0=0;  → BIC.b #0x1, &P1IFG P1IE_bit.P1IE_0=1;  → BIS.b #0x1, &P1IE _EINT(); → EINT在EW430下反汇编C中断程序代码:子程结尾为 RETI注意:● 若有多个中断同时请求, CPU先响应优先级最高的中断请求 ● 当中断源产生时,   MSP430内部对应有一个标志被置位 中断程序之后, 应确保该标志的值已清零,  否则被当成又一次的中断申请 ● 对于单一中断标志的中断源请求, CPU会自动清零该中断标志 ● 对于有多个中断标志的中断源请求, 用户在中断子程用这些标志判断产生的具体子中断源, 中断标志的清零由用户在使用完后编程清零中断源 定时器A P1的8个引脚 ... P2的8个引脚 中断标志 TACCR1 to TACCR2 CCIFGs, TAIFG (3) P1IFG.0~P1IFG.7 (8) ... P1IFG.0~P1IFG.7 (8) 向量地址 优先级,类型号 0FFEAh 5 0FFE8h ... 0FFE2h 4 ... 1以中断方式响应P1端口上8个按键(上升沿)。

msp430中断定时器

msp430中断定时器

#define VECTOR_NAME(name) #define EMIT_PRAGMA(x)
name##_ptr _Pragma(#x)
#define CREATE_VECTOR(name)
void (* const VECTOR_NAME(name))(void) = &name
#define PLACE_VECTOR(vector,section) EMIT_PRAGMA(DATA_SECTION(vector,section)) #define ISR_VECTOR(func,offset) CREATE_VECTOR(func); \
/* 0xFFFE Reset [Highest Priority] */
2015-5-24
MSP430单片机的IO输入中断
一些高级的单片机的全部IO口都带外部中断功能,比如 ARM系列。MSP430 单片机只有P1和P2口带外部中断功能。 输入中断一般为IO口给出高电平,通过外部动作使电平跳 变为低电平,并以此作为中断源 寄存器配置步骤: 1.通过PxDIR将IO方向设置为输 入 2.通过PxIES配置中断边沿 3.通过PxREN配置上下拉电阻 4.配置PxIE开启中断 最后还要注意开启总中断。
2015-5-24
PLACE_VECTOR(VECTOR_NAME(func), offset) #define PORT1_VECTOR #define PORT2_VECTOR #define ADC10_VECTOR #define USCIAB0TX_VECTOR #define USCIAB0RX_VECTOR #define TIMER0_A1_VECTOR #define TIMER0_A0_VECTOR #define WDT_VECTOR (2 * 1u) (3 * 1u) (5 * 1u) (6 * 1u) (7 * 1u) (8 * 1u) (9 * 1u) (10 * 1u) (11 * 1u) /* 0xFFE4 Port 1 */ /* 0xFFE6 Port 2 */ /* 0xFFEA ADC10 */ /* 0xFFEC USCI A0/B0 Transmit */ /* 0xFFEE USCI A0/B0 Receive */ /* 0xFFF0 Timer0)A CC1, TA0 */ /* 0xFFF2 Timer0_A CC0 */ /* 0xFFF4 Watchdog Timer */ /* 0xFFF6 Comparator A */ /* 0xFFF8 Timer1_A CC1-4, TA1 */ /* 0xFFFA Timer1_A CC0 */ /* 0xFFFC Non-maskable */

MSP430中断

MSP430中断

MSP430中断中断源(中断分类)中断首先需要有中断源发出中断请求,并征得系统允许(屏蔽,优先权)后才会发生。

转去执行中断服务程序前需保护中断现场,执行完中断服务程序后应恢复中断现场。

MSP430有三种中断类型:系统中断,可屏蔽中断,不可屏蔽中断NMI。

不可屏蔽中断NMI不能被总中断使能位GIE控制,而是由特殊的标志位(NMIIE , ACCVIE , OFIE)来控制的。

NMI中断可由以下三种中断源产生:(1)当RST/NMI引脚配置为NMI模式,引脚上出现上升沿下降沿。

(2)Flash访问错误。

当Flash访问出错时,ACCVIFG被置位,当ACCVE被置位时,Flash;访问出错产生一个NMI事件。

(3)发生晶振失效。

当OFIE被置位时,晶振失效产生一个NMI事件。

中断处理从接受中断请求开始到开始执行中断服务程序的第一条指令,中断的准备过程需要6个周期。

(1)若CPU处于AM状态,则完成正在执行的指令;若CPU处于处于低功耗状态,则退出低功耗状态。

(2)把PC寄存器内容入栈。

(3)把SR寄存器内容入栈。

(4)如果同时有多个中断,则选择优先级最高的中断。

(5)如果中断是单源中断,则中断标志位自动复位;如果中断是多中断源,则需要中断服务程序复位。

(6)SR清零,结束低功耗模式。

由于GIE被清除,其他的中断被屏蔽。

因此,中断不能被嵌套。

(7)中断向量表被装入PC寄存器,并从该地址开始执行中断服务程序。

中断返回过程中断由RETI指令结束,从中返回需要消耗5个是种周期。

(1)将SR寄存器的值从堆栈弹出,恢复中断前的设置。

(2)将PC寄存器的值从堆栈弹出,程序从PC的地址执行。

中断标志位中断产生的时候,CPU会自动进入相应的中断服务程序。

当多种中断对应了一个中断源时,需要判断到底是哪个中断发生的时候就要用到IFG标识位。

通过读取IFG标识来确定是哪一种中断。

MSP430系列超低功耗16位单片机原理与应用

MSP430系列超低功耗16位单片机原理与应用
Байду номын сангаас
振荡器控制逻辑
LFXT1
振荡器控制 逻辑
XT2振荡器控
制逻辑
DCO振荡器
控制逻辑
MSP430-2002~2004 -
30
DCO频率的调节 频率的调节
MSP430-2002~2004 -
8
第一章习题
微处理器的发展方向是什么? 单片机的概念是什么? 单片机和我们通常所用的微型计算机有什么区别和联系? 单片机常见的领用领域有哪些? 如何理解MSP430系列单片机的“单片”解决能力? MSP430系列单片机最显著特性是什么? 如何理解MSP430系列单片机的低功耗特性? 为什么MSP430系列单片机特别适用于电池供电和手持设备? 如何理解MSP430系列单片机的强大处理能力?在开发环境方面, MSP430系列单片机和传统单片机相比,有哪些显著优势? 构成MSP430系列单片机的各类存储器有什么特点?各自适用于哪些场 合? MSP430系列单片机应用选型的依据是什么?
MSP430-2002~2004 -
23
本章小结
在结构上MSP430系列单片机集成了一部计算机的各个基本 组成部分。虽然其工作原理与普通微机并无差异,但 MSP430系列单片机在结构上更加突出了体积小、功能强、 面向控制的特点,具有很高的性能价格比。 MSP430系列单片机由CPU、存储器和外围模块组成,这些 部件通过内部地址总线、数据总线和控制总线相连构成单 片微机系统。 MSP430的内核CPU结构是按照精简指令集的宗旨来设计的 。具有丰富的寄存器资源、强大的处理控制能力和灵活的 操作方式。 MSP430的存储器结构采用了统一编址方式,可以使得对外 围模块寄存器的操作象普通的RAM单元一样方便、灵活。 MSP430存储器的信息类型丰富,并具有很强的系统外围模 块扩展能力。

[工学]MSP430单片机基本原理

[工学]MSP430单片机基本原理

MSP430单片机基本原理海军工程大学2009年11月1日目录1MSP430单片机概述 (3)1.1单片微型计算机 (3)1.1.1概述 (3)1.1.2特点 (3)1.1.3应用 (3)1.2MSP430单片机 (4)1.2.1MSP430系列产品概述 (4)1.2.2MSP430单片机特点 (4)1.3MSP430单片机选型 (6)1.3.1MSP430各系列单片单片机简介 (6)2MSP430单片机基础知识 (7)2.1MSP430结构概述 (7)2.2CPU的结构和特点 (8)2.2.1CPU的主要特征和功能 (8)2.2.2CPU的寄存器资源 (9)2.3MSP430存储器的结构和地址空间 (11)2.3.1存储空间概述 (11)2.3.2Flash操作 (13)2.4系统复位和工作模式 (17)2.4.1系统复位 (17)2.4.2系统初始化 (17)2.4.3工作模式(低功耗方式选择) (17)2.5基础时钟模块 (19)2.5.1基础时钟模块 (19)2.5.2时钟模块寄存器 (20)2.5.3时钟应用举例 (22)2.6中断和特殊功能寄存器 (23)2.6.1中断类型和特点 (23)2.6.2中断的响应过程 (24)2.6.3中断向量地址和寄存器 (25)2.7看门狗定时/计数器 (27)2.7.1基本介绍 (27)2.7.2看门狗寄存器 (28)2.7.3基本应用举例 (29)2.8MSP430F149的最小系统 (29)2.8.1电源 (29)2.8.2复位电路 (30)2.8.3晶振 (30)1MSP430单片机概述1.1 单片微型计算机1.1.1概述微型计算机(微机)具有体积小、价格低、使用方便、可靠性高等一系列优点,因此一问世就显示出强大的生命力,被广泛应用于国防、工农业生产和商业管理等领域。

纵观微处理器的发展,可以明显地看出正朝着两个方向进行:1)朝着面向数据运算、信息处理等功能的系统机方向发展。

飞思卡尔单片机中断(两篇)

飞思卡尔单片机中断(两篇)

引言概述飞思卡尔单片机中断是指在特定的条件下,单片机的运行被打断,转而执行特定的处理程序。

在飞思卡尔单片机的开发中,中断是非常重要的一部分,它可以提高系统的响应速度和实时性。

本文将详细介绍飞思卡尔单片机中断的相关知识。

正文内容一、中断的基本概念和原理1. 中断的定义:中断是指在特定的条件下,程序的执行被打断,转而执行事先定义好的处理程序。

2. 中断的分类:外部中断和内部中断。

外部中断是由外部设备引发的,例如按键、定时器等;内部中断是由单片机内部的某个事件引发的,例如指令执行完成、通信完成等。

3. 中断的触发方式:电平触发和边沿触发。

电平触发是指当外部信号保持一定电平时触发中断;边沿触发是指在信号的上升沿或下降沿触发中断。

二、飞思卡尔单片机中断的使用方法1. 中断的初始化:对中断控制寄存器进行设置,使能相应的中断源。

2. 中断的优先级设置:多个中断源同时触发时,可以通过设置优先级来确定执行顺序。

3. 中断服务程序的编写:根据不同的中断源,编写相应的中断服务程序,完成特定的处理。

4. 中断的开启和关闭:根据需要,可以在程序中开启或关闭特定的中断。

三、飞思卡尔单片机中断优化技巧1. 中断嵌套:可以在一个中断中触发另一个中断,提高系统的实时性和处理效率。

2. 临界区保护:在关键代码段加入关中断代码,保护临界区避免竞态条件的发生。

3. 中断延时处理:在某些特定情况下,需要延时处理中断,可以使用延时函数或软件延时方式实现。

四、飞思卡尔单片机中断的常见问题和解决方法1. 中断误触发问题:可能是由于外部干扰、软件错误等原因导致中断被误触发,可以通过加入滤波电路、改进软件设计等方式解决。

2. 中断处理时间过长问题:中断处理程序执行时间过长会导致系统响应变慢,可以通过优化中断程序、减少中断次数等方式解决。

3. 中断嵌套问题:如果中断嵌套层次太多,可能会导致系统死锁或无法预测的结果,可以通过合理设计中断嵌套层次、减少中断嵌套次数来解决。

关于MSP430中断的使用

关于MSP430中断的使用

关于MSP430中断的使⽤多个中断请求发⽣时,响应最⾼优先级中断。

响应中断时,MSP430会将不可屏蔽中断控制位SR.GIE复位。

因此,⼀旦响应了中断,即使有优先级更⾼的可屏蔽中断出现,也不会中断当前正在响应的中断,去响应另外的中断。

但SR.GIE复位不影响不可屏蔽中断,所以仍可以接受不可屏蔽中断的中断请求。

中断响应的过程:(1)如果CPU处于活动状态,则完成当前指令;(2)若CPU处于低功耗状态,则退出低功耗状态;(3)将下⼀条指令的PC值压⼊堆栈;(4)将状态寄存器SR压⼊堆栈;(5)若有多个中断请求,响应最⾼优先级中断;(6)单中断源的中断请求标志位⾃动复位,多中断源的标志位不变,等待软件复位;(7)总中断允许位SR.GIE复位。

SR状态寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位复位;(8)相应的中断向量值装⼊PC寄存器,程序从此地址开始执⾏。

中断返回的过程:(1)从堆栈中恢复PC值,若响应中断前CPU处于低功耗模式,则可屏蔽中断仍然恢复低功耗模式;(2)从堆栈中恢复PC值,若响应中断前CPU不处于低功耗模式,则从此地址继续执⾏程序。

MSP430的外部中断资源丰富,P1⼝和P2⼝共16个IO⼝都可以作为外部中断源。

要想让⼀个IO⼝作为外部中断的中断源必须有三个设置。

第⼀,必须将该IO⼝的⽅向设置为输⼊;第⼆,选择外部中断的触发⽅式,即选择是上升沿触发还是下降沿触发;第三,使能该IO⼝的中断。

⽐如,如果我们想设置P1.0⼝作为外部中断源就可以这样设置:P1DIR&= ~BIT0;//⽅向设置为输⼊P1IES |= BIT0;//触发⽅式设置P1IE |=BIT0;//使能中断其中触发⽅式设置中0为上升沿触发、1为下降沿触发。

设置完成之后就可以使⽤P1.0端⼝的下降沿或者上升沿触发的外部中断了。

需要特别说明的是如果在⼀个设计程序中如果⽤到了中断,那么在使⽤中断之前必须使能总中断。

第2讲MSP430单片机的GPIO与中断系统

第2讲MSP430单片机的GPIO与中断系统
该寄存器的8位与端口的8个引脚一一对应,其中某一位 置位表示允许对应的引脚在电平变化(上升沿或下降沿) 时产生中断,否则,表示禁止该位的中断。
每个PxIE位使能的中断请求都与相应的PxIFG中断标志 相关联,可通过写PxOUT和PxDIR来设置PxIFG。
PxIE的配置: Bit = 1: 允许中断; Bit = 0: 禁止中断。
17
4.1 中断的基本概念
3.中断向量表 中断向量是指中断服务程序的入口地址,每个中断向量被分配给 4个连续的字节单元, 两个高字节单元存放入口的段地址CS,两个低字节单元存放入口的偏移量IP。为了让CPU 方便地查找到对应的中断向量,就需要在内存中建立一张查询表,即中断向量表。 4.中断优先级 凡事都有轻重缓急之分,不同的中断请求表示不同的中断事件,因此,CPU对不同中

PxDS 输出驱动强度寄存器
PxDS寄存器的每个位,设置引脚的输出强度为高驱动 强度或低驱动强度。
默认值为低驱动强度。 PxDS的配置: Bit = 0: 低驱动强度; Bit = 1: 高驱动强度。
2015/8/7
13
GPIO 寄存器(7/9)

PxIE 中断使能寄存器(仅中断端口P1和P2)
1
3.1 通用IO端口
3.1.1 MSP430端口概述 GPIO (General Purpose I/O),通用输入输出端口。 GPIO基本都是用于芯片与片外器件或设备的交互。 检测数字输入,如键盘或开关信号; 驱动LED,蜂鸣器或LCD等其他指示器; 控制片外器件,较高级的使用可以用它们(通过 程序)模拟很多器件的时序达到控制相应器件的 目的,比如模拟SPI和模拟总线等。

引脚下拉 V脚选择上拉 上拉电阻简单来说就是把电平拉高, 通常用 4.7-10K的电阻接到Vcc电源。 Bit = 0: 引脚选择下拉; 下拉电阻则是把电平拉低,电阻接到GND地线上。

第四章MSP430单片机中断系统

第四章MSP430单片机中断系统

************************************************************/
SFR_8BIT(IE1);
/* Interrupt Enable 1 */
#define WDTIE
(0x01) /* Watchdog Interrupt Enable */
#define OFIE
(0x02) /* Osc. Fault Interrupt Enable */
#define NMIIE
(0x10) /* NMI Interrupt Enable */
#define ACCVIE
(0x20) /* Flash Access Violation Interrupt Enable */
16
4.2 MSP430中断源
MSP430 中断控制与中断返回指令 EINT ;Enable general INTerrupts DINT ;Disable general INTerrupts RETI
中断子程返回指令 operation
RETI @SP → SR SP+2 → SP @SP → PC SP+2 → SP
中断子程的 入口地址
0:N×4 0:N×4+2
中断向量 OFFSET
SEG
IRET
13
奔腾CPU获取中断类型号的方法总结
INTO指令 被零除 OF=1
固定类型号00H 固定类型号04H
内 DEBUG的单步和断点操作
中 单步
固定类型号01H
断 断点
固定类型号03H
INT N指令 指令中指定类型号N
外 非屏蔽中断
INTA AD7~AD0

msp430中断(不可屏蔽中断NMI)

msp430中断(不可屏蔽中断NMI)

中断系统中断的优先级是固定的。

中断优先级的是以模块的在链接所处的位置决定的。

越靠近CPU/NMIRS,模块的优先级越高。

中断优先级决定了,当系统有多个中断等待处理时,先处理哪一个中断。

有三种中断类型:系统中断不可屏蔽中断可屏蔽中断不可屏蔽中断(NMI)不可屏蔽中断不能被总中断使能位(GIE)所屏蔽,而由单独的中断使能位(NMIIE, ACCVIE,OFIE)来控制的。

当接收到不可屏蔽中断中断时,所有的不可屏蔽中断使能位会被自动复位。

程序从不可屏蔽中断的中断向量0FFFCH存储的地址开始运行。

用户软件必须设置所需的不可屏蔽的中断使能位,以便不可屏蔽中断能够再次响应。

不可屏蔽的中断源有以下三种:1. 当配置为NMI模式时,RST/NMI引脚的一个边沿2. 振荡器失效3. 错误使用FLASHRST/NMI引脚上电时,RST/NMI引脚配置为复位模式。

在看门狗控制寄存器WDTCTL中选择RST/NMI引脚的功能。

如果RST/NMI引脚被设置为复位功能,RST/NMI引脚处于低电平时CPU将一直保持复位状态。

当转为高电平时,CPU从存储在复位向量OFFFEH中的地址开始运行,RSTIFG将被置位。

如果RST/NMI引脚被用户软件配置为不可屏蔽中断时,如果NMIIE位被置位时,由WDTNMIES选择的信号边沿到来产生NMI中断。

RST/NMI的标志位NMIIFG将会被置1。

注释1:RST/NMI保持低电平在配置为NMI模式时,产生一个NMI事件的信号不会拉低RST/NMI引脚的电平。

如果其他的信号源产生一个PUC时,NMI信号是低电平,设备将处于复位状态,因为一个PUC 信号使RST/NMI引脚变为复位模式。

注释2:修改WDTNMIES当选择了NMI模式,WDTNMIES位改变了,NMI是否产生将依据于实际的RST/NMI 引脚的电平。

在系统被设置为NMI模式前,如果NMI的边沿选择位改变早于选择NMI模式,不产生NMI。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430单片机中断的定义及原理
430的中断是按照下图1的优先级顺序定义的,有三种中断:1.系统重置、2.不可屏蔽中断(NMI)、3.可屏蔽中断。

图1.中断优先级
部分具体的中断优先级由高到低为:
PORT2_VECTOR (1 * 2u)/* 0xFFE2 Port 2 */
PORT1_VECTOR (4 * 2u)/* 0xFFE8 Port 1 */
TIMERA1_VECTOR (5 * 2u)/* 0xFFEA TImer A CC1-2,TA */
TIMERA0_VECTOR (6 * 2u)/* 0xFFEC TImer A CC0 */
ADC_VECTOR (7 * 2u)/* 0xFFEE ADC */
USART0TX_VECTOR (8 * 2u)/* 0xFFF0 USART 0 Transmit */
USART0RX_VECTOR (9 * 2u)/* 0xFFF2 USART 0 Receive */
WDT_VECTOR (10 * 2u)/* 0xFFF4 Watchdog TImer */
COMPARATORA_VECTOR (11 * 2u)/* 0xFFF6 Comparator A */
TIMERB1_VECTOR (12 * 2u)/* 0xFFF8 Timer B CC1-2,TB */
TIMERB0_VECTOR (13 * 2u)/* 0xFFFA Timer B CC0 */
NMI_VECTOR (14 * 2u)/* 0xFFFC Non-maska××e */
RESET_VECTOR (15 * 2u)/* 0xFFFE Reset [Highest Priority]*/
其中可屏蔽中断分为系统NMI(SNMI)和用户NMI(UNMI),一般来说,不可屏蔽中断不受GIE标志位的影响。

用户不可屏蔽中断的中断源为NMIIE、ACCIE和OFIE,当响应用户不可屏蔽中断后,其他不可屏蔽中断就自动被禁止,以防止同级别的中断发生产生中断嵌套。

当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)。

有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应。

要中断嵌套的话,就必须在中断中打开总中断。

相关文档
最新文档