复位
系统复位电路原理图

复位时会产生2个信号。一个是上电复位信号(POR),上电清除信号(PUC)。其中POR信号复位级别更高
POR的产生源有3个:
- 给器件上电
- 在非可屏蔽中断/复位管脚(RST/NMI)产生复位信号
- 超极电压监视电路(SVS)发现电压不稳时(PORON=1)
PUC信号是POR的子信号,一旦有POR信号,PUC信号肯定会产生。
PUC的产生源有4个:
- POR信号
- 看门狗定时器溢出
- 看门狗定时器安全密匙错误
- FLASH空间安全密匙错误
当POR信号或PUC信号有效时,会导致系统复位。
POR信号产生过程图

上电初期电压不稳,即来回跳变,这时就需要POR信号时刻监视电源电压。一旦其低于有效欲值时,就产生一个复位信号,保证单片机从一个确定的起始位置开始运行程序。若没有,电压跳变时系统可能会不稳定。
系统复位后器件初始状态
在产生POR信号后,系统的初始状态
- 非可屏蔽中断/复位管脚(RST/NMI)进入复位模式。实际上作为复位的输入端
- 所有的I/O都被切换到输入状态
- 外设模块和相应的寄存器都被初始化
- 状态寄存器(SR)被复位
- 看门狗定时器被打开
- 程序指针(PC)复位,指向0FFFEh。CPU从这个地址开始执行指令
软件初始化
系统复位以后,用户必须要做的事情
- 初始化堆栈指针(SP),指向RAM的顶端
- 初始化看门狗(开启或关闭)
- 配置外设
中断
有三种类型的中断
- 系统复位(POR、PUC)
- 非可屏蔽中断
- 可屏蔽中断

可屏蔽中断:若全局中断控制位GIE关闭,系统内所以模块的中断请求都不会被接受。
非可屏蔽中断:不论GIE是什么状态,只要非可屏蔽中断/复位管脚(RST/NMI)的中断条件得到满足,就会向CPU发送中断请求。
非可屏蔽中断产生源
- 非可屏蔽中断/复位管脚(RST/NMI)被配置位为非可屏蔽中断模式时
- 振荡器失效时
- 对FLASH空间的错误访问

非可屏蔽中断处理步骤

根据标志确定中断源——手动清除中断标志——相应处理
可屏蔽中断
可屏蔽中断可由状态寄存器(SR)中的通用中断使能(GIE)位控制。置位,打开可屏蔽中断。复位,屏蔽所有可屏蔽中断。
响应过程
中断接受
从CPU接受到外部的中断请求至执行第一条指令需要6个机器周期,中断逻辑执行过程如下:
- 完成当前正在执行的指令
- 指向下一条指令程序指针(PC)被压入堆栈(取出下一条指针的地址,并放到程序指针里,然后把PC放到堆栈中)
- 状态寄存器(SR)推入堆栈
- 如果发生多个中断,则先处理优先级最高的中断
*5.中断发生后,单源中断(一个中断向量对应一个中断标志)的中断标志会自动清除,多源中断的中断标志需要软件清除
eg:在串口通信时,单片机收到PC发来的数据。这时产生一个接收中断,CPU响应后会把中断标志清除。因为这个接受中断标志是一个单源中断。单片机向PC发送数据,会产生发送中断标志,这时,单片机响应后会把中断标志清除。但是,不可屏蔽中断是一个多源中断,导致这个中断的原因有3种。这时。硬件无法自动清除中断标志,需要软件选择。 - 状态寄存器(SR)被清除,结束任何一种低功耗模式。(进入活跃模式,CPU快速响应外部请求)同时由于GIE(是SR中的一位)被复位,中断发生时不会响应其他中断。
- 中断向量(vector)被载入程序指针(PC)里,程序开始按照中断向量中的内容执行
![]()
从中断中返回
返回指令:RETI (return from an interrupt service routine)
从中断返回正常执行指令需要5个机器周期
- 正常程序运行时状态寄存器(SR)从堆栈中弹出,GIE、CPUOFF恢复为原来的位置。
eg:系统在中断前处于LPM 0 模式,中断后仍处于该模式。中断前GIE被置位,恢复中断后还是被置位的。 - 程序指针(PC)从堆栈中弹出,并从其被中断的点开始执行。
![]()
中断嵌套
在中断过程中,用户把GIE位置位。则允许中断嵌套。
中断向量
在发生中断时,实际上把中断向量的地址装入程序指针(PC)中,PC从该地址读取程序代码(中断代码)

每天进步多一点,妈妈夸我小天才。


浙公网安备 33010602011771号