• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
地狱貓
博客园    首页    新随笔    联系   管理    订阅  订阅
MSP430学习笔记2 复位和中断

复位

系统复位电路原理图

复位时会产生2个信号。一个是上电复位信号(POR),上电清除信号(PUC)。其中POR信号复位级别更高
POR的产生源有3个:

  1. 给器件上电
  2. 在非可屏蔽中断/复位管脚(RST/NMI)产生复位信号
  3. 超极电压监视电路(SVS)发现电压不稳时(PORON=1)

PUC信号是POR的子信号,一旦有POR信号,PUC信号肯定会产生。

PUC的产生源有4个:

  1. POR信号
  2. 看门狗定时器溢出
  3. 看门狗定时器安全密匙错误
  4. FLASH空间安全密匙错误

当POR信号或PUC信号有效时,会导致系统复位。

POR信号产生过程图

上电初期电压不稳,即来回跳变,这时就需要POR信号时刻监视电源电压。一旦其低于有效欲值时,就产生一个复位信号,保证单片机从一个确定的起始位置开始运行程序。若没有,电压跳变时系统可能会不稳定。

系统复位后器件初始状态
在产生POR信号后,系统的初始状态

  • 非可屏蔽中断/复位管脚(RST/NMI)进入复位模式。实际上作为复位的输入端
  • 所有的I/O都被切换到输入状态
  • 外设模块和相应的寄存器都被初始化
  • 状态寄存器(SR)被复位
  • 看门狗定时器被打开
  • 程序指针(PC)复位,指向0FFFEh。CPU从这个地址开始执行指令

软件初始化
系统复位以后,用户必须要做的事情

  • 初始化堆栈指针(SP),指向RAM的顶端
  • 初始化看门狗(开启或关闭)
  • 配置外设

中断

有三种类型的中断

  1. 系统复位(POR、PUC)
  2. 非可屏蔽中断
  3. 可屏蔽中断


可屏蔽中断:若全局中断控制位GIE关闭,系统内所以模块的中断请求都不会被接受。
非可屏蔽中断:不论GIE是什么状态,只要非可屏蔽中断/复位管脚(RST/NMI)的中断条件得到满足,就会向CPU发送中断请求。

非可屏蔽中断产生源

  • 非可屏蔽中断/复位管脚(RST/NMI)被配置位为非可屏蔽中断模式时
  • 振荡器失效时
  • 对FLASH空间的错误访问

非可屏蔽中断处理步骤

根据标志确定中断源——手动清除中断标志——相应处理

可屏蔽中断
可屏蔽中断可由状态寄存器(SR)中的通用中断使能(GIE)位控制。置位,打开可屏蔽中断。复位,屏蔽所有可屏蔽中断。

响应过程

中断接受
从CPU接受到外部的中断请求至执行第一条指令需要6个机器周期,中断逻辑执行过程如下:

  1. 完成当前正在执行的指令
  2. 指向下一条指令程序指针(PC)被压入堆栈(取出下一条指针的地址,并放到程序指针里,然后把PC放到堆栈中)
  3. 状态寄存器(SR)推入堆栈
  4. 如果发生多个中断,则先处理优先级最高的中断
    *5.中断发生后,单源中断(一个中断向量对应一个中断标志)的中断标志会自动清除,多源中断的中断标志需要软件清除
    eg:在串口通信时,单片机收到PC发来的数据。这时产生一个接收中断,CPU响应后会把中断标志清除。因为这个接受中断标志是一个单源中断。单片机向PC发送数据,会产生发送中断标志,这时,单片机响应后会把中断标志清除。但是,不可屏蔽中断是一个多源中断,导致这个中断的原因有3种。这时。硬件无法自动清除中断标志,需要软件选择。
  5. 状态寄存器(SR)被清除,结束任何一种低功耗模式。(进入活跃模式,CPU快速响应外部请求)同时由于GIE(是SR中的一位)被复位,中断发生时不会响应其他中断。
  6. 中断向量(vector)被载入程序指针(PC)里,程序开始按照中断向量中的内容执行

从中断中返回
返回指令:RETI (return from an interrupt service routine)
从中断返回正常执行指令需要5个机器周期

  1. 正常程序运行时状态寄存器(SR)从堆栈中弹出,GIE、CPUOFF恢复为原来的位置。
    eg:系统在中断前处于LPM 0 模式,中断后仍处于该模式。中断前GIE被置位,恢复中断后还是被置位的。
  2. 程序指针(PC)从堆栈中弹出,并从其被中断的点开始执行。

中断嵌套
在中断过程中,用户把GIE位置位。则允许中断嵌套。

中断向量
在发生中断时,实际上把中断向量的地址装入程序指针(PC)中,PC从该地址读取程序代码(中断代码)

每天进步多一点,妈妈夸我小天才。
posted on 2021-06-13 23:00  地狱貓  阅读(1036)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3