MSP430 MCU的内部系统控制主要包括以下几块: 对于MSP430的系统控制吧,如果仅仅是站在应用层的角度来说,可以不用太怎么了解,毕竟使用起来的话,SYS模块的的寄存器直接默认就好啦,不会有什么问题,基本都是存在比较深的解决不了的问题时才会牵扯到这一块的内容,因此我的讲解也比较有限,主要说一些关键的内容吧(主要是 我了解的也不是特别深。。。。)。下面开始进入我们今天的分享: BOR:Brownout Reset,也就是掉电复位。 POR:Power on Reset,上电复位。 PUC:Power up Clear,通电清除 这三个有什么区别呢?为什么TI要设计三个复位模式呢?下面首先来看一下内部的复位结构图。
可以看到,BOR的影响最大,其次是POR,再其次是PUC,也就是说只要产生了BOR复位,那么肯定会生成POR复位和PUC复位。如果产生了POR复位,那么肯定会生成PUC复位但不一定会生成BOR复位。那么哪些条件下会产生响应的复位呢? 对于BOR: - 设备上电
- RST/NMI引脚出现低电平,进入复位模式
- 从LPM5或LPM4.5模式下唤醒
- SVS电压监控模块出现了低,也就是内核电压再规定范围外。(SVS内容请参见指南4)
- 软件BOR事件
对于POR: 对于PUC: - BOR或POR产生
- 看门狗定时时间到
- 看门狗定时器密码写入错误
- FRAM写密码错误(FRAM内容请参见指南9)
- PMM写密码错误(PMM内容请参见指南4)
- 其他外围条件
PS:有些不同的芯片 这个条件不一样的,具体哪些条件需要看芯片的datasheet和user guide。 那么这三个不同的复位由不同的条件产生,那么产生后的结果是什么呢: - RST/NMI引脚设置成RST模式
- 所有I/O设置成通用I/O中的输入引脚模式
- 其他外设初始化,这个初始化成什么模式需要看外设寄存器中复位后的状态
- 状态寄存器SR复位
- 看门狗开启并初始化成Active模式
- PC指针指向复位中断向量0x0FFFE处,开始执行boot code
(PS:多说一点,在MCU上电开始正常执行程序之前,最初是在复位中断向量处的,执行boot code程序,这一块程序是MCU在生产时就固化在MCU内部的程序,这一块程序主要负责搬运程序到RAM中,初始化一些参数等) 那么看起来,这三种复位模式产生后对MCU动作都是一样的,那么为什么要这样设置呢? 放心TI工程师肯定不会闲着无聊做没有意义事情,那么原因就在PMM模块上,PMM模块四MSP430可以做到30nA功耗的核心了,就是这个电源管理(请参见指南4),其实在这里BOR,POR和PUC的区别就是会有不同的标志位,BOR和POR标志位时PMMBORIFG和PMMPORIFG,PUC的产生条件很多,因此要根据每个模块去看,基本在每个模块中都有PUC产生的标志。 那么,就知道啦,当复位后,我们就可以通过检查寄存器的值来确定复位源,从而执行不同的操作,比如保存数据呀,记录复位原因呀等等。
学习过微型计算机基础的可能都很熟悉这一块,中断管理嘛,本质上就是一个优先级问题。首先分为可屏蔽中断和不可屏蔽中断,不可屏蔽中断NMI肯定是优先级最高的,只要产生这个中断,那么不论MCU在做什么,立马停下来响应这个中断。其他的则可以使能响应中断,也可以失能。当遇到两个中断情况,则要看这两个中断的优先级来决定了,中断服务程序的响应过程也是比较简单的,入栈PUSH和出栈POP嘛,所以MCU会有一个中断向量表,对应着每个中断的入口地址。 MSP430 MCU不支持硬件上设置中断优先级的,有ICC模块的除外,有ICC模块的时可以设置优先级的。 比如下图时MSPFR2355的中断优先级:(PS:FR2355是有ICC模块的,可以设定比较优先级)
|