MSP430单片机深入学习笔记

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

复位

1.POR信号只在两种情况下产生:

➢微处理器上电。

➢RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。

2.PUC信号产生的条件为:

➢POR信号产生。

➢看门狗有效时,看门狗定时器溢出。

➢写看门狗定时器安全健值出现错误。

➢写FLASH存储器安全键值出现错误。

3.POR信号的出现会导致系统复位,并产生PUC信号。而PUC信号不会引起POR信号的产生。系统复位后(POR之后)的状态为:

➢RST/MIN管脚功能被设置为复位功能。

➢所有I/O管脚被设置为输入。

➢外围模块被初始化,其寄存器值为相关手册上注明的默认值。

➢状态寄存器(SR)复位。

➢看门狗激活,进入工作模式。

➢程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。

4.典型的复位电路有以下3种:

(1)由于MSP430具有上电复位功能,

因此,上电后只要保持RST/NMI(设置

为复位功能)为高电平即可。通

常的做法为,在RST/NMI管脚接100kΩ

的上拉电阻,如图1-5(a)所示。

(2)除了在RST/NMI管脚接100kΩ的

上拉电阻外,还可以再接0.1μF的电

容,电容的另一端接地,可以使复位更

加可靠。如图1-5(b)所示。

(3)由于MSP430具有极低的功耗,如

果系统断电后立即上电,则系统中电

容所存储的电荷来不及释放,此时系

统电压不会下降到最低复位电压以下,

因而MSP430不会产生上电复位,同时

RST/NMI管脚上也没有足够低的电平

使MSP430复位。这样,系统断电后立

即上电,MSP430并没有被复位。为了

解决这个问题,可增加一个二极管,这

样断电后储存在复位电容中的电荷就

可以通过二极管释放,从而加速电容

的放电。二极管的型号可取1N4008。

如图1-5(c)所示。

系统时钟

振荡器:

1.DCO 数控RC振荡器,位于芯片内部。不用时可以关闭

2.LFXT1 可以接低频振荡器,典型的如32.768kHz的钟表振荡器,此时振荡器不需要接负载电容。也可以接450kHz~8MHz的标准晶体振荡器,此时振荡器需要接负载电容。

3.XT2 接450kHz~8MHz的标准晶体振荡器,此时振荡器要接负载电容,不用时可

以关闭。

通常低频振荡器用来降低能量消耗,例如使用电池的系统。高频振荡器用来对事件作出快速反应或者供CPU进行大量运算。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响而产生变化,并且同一型号的芯片所产生的频率也不相同。DCO的调节功能可以改善它的性能。

DCO的调节分为以下3步:

(1)选择BCSCTL1.RSELx确定时钟的标称频率。

(2)选择DCOCTL.DCOx在标称频率基础上分段粗调。

(3)选择DCOCTL.MODx的值进行细调。

MSP430定义了3种时钟信号,分别为:

(1)MCLK 系统主时钟。除了CPU运算使用此时钟信号外,外围模块也可以使用。MCLK可以选择任何一个振荡器产生的时钟信号并进行1、2、4、8分频作为其信号源。

(2)SMCLK 系统子时钟。外围模块可以使用,并且在使用之前可以通过各模块的寄存

器实现分频。SMCLK可以选择任何一个振荡器产生的时钟信号并进行1、2、4、8分频作为其信号源。

(3)ACLK 辅助时钟。外围模块可以使用,并且在使用之前可以通过各模块的寄存器

实现分频。ACLK只能由LFXT1进行1、2、4、8分频作为其信号源。

PUC结束时,MCLK和SMCLK的信号源为DCO,DCO的振荡频率约为800kHz(详见

相关手册)。ACLK的信号源为LFXT1。

例3.4 设置MCLK 的时钟8 分频。下列4 条代码均可实现该功能。

BCSCTL2 |= 0x30; //人肉记忆+数脚趾头,原始社会才干的事!

BCSCTL2 |= BIT5+BIT4; //需记忆DIVMx在BSCTL中的位置,不推荐!BCSCTL2 |= DIVM1+DIVM0; //由两项组成,看起来不直观,凑合!

BCSCTL2 |= DIVM_3; //简洁明了,力荐!

在使用按位或操作符“|=”配置寄存器时,要注意宏定义之间的“叠加”效应。重新用宏定义配置寄存器前,一定要先清零。(此外,极少数寄存器上电复位后默认值不是0,要特别注意。)

例3.5 先设定MCLK 分频为2,一段时间后改为4 分频。

错误的代码:

BCSCTL2 |= DIVM_1; //这确实是2 分频

delay( );

BCSCTL2 |= DIVM_2; //因为|=赋值的原因,这实际上是8 分频,请自行面壁想清楚

正确的代码:

BCSCTL2 |= DIVM_1; // 2 分频

delay( );

BCSCTL2 &= ~( DIVM_0+ DIVM_1+ DIVM_2+ DIVM_3); // 预先把全部相关控制位置0 BCSCTL2 |= DIVM_2; //此时再用|=设置才不出错

相关控制位全置0 还可写成:

BCSCTL2 &= ~DIVM_3 或BCSCTL2 &=~(DIVM0+DIVM1)

低功耗模式

上电和外部复位信号产生POR信号,POR信号会引起PUC信号。看门狗激活时,定时器溢出和安全键值错误也会引起PUC信号。PUC信号结束后,MSP430进入AM状态。在AM 状态程序可以选择进入任何一种低功耗模式,然后在适当的时机,由外围模块的中断使CPU 退出低功耗模式。

LPM0(主力休眠,先头部队工作)和LPM3(主力和先头部队都休眠,仅留警戒哨兵)最常用,LPM4 则当关机使用。

相关文档
最新文档