新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430简介及G2231IO寄存器说明

MSP430简介及G2231IO寄存器说明

作者: 时间:2016-11-13 来源:网络 收藏
MSP430上电复位后, IO 默认为输入状态,看门狗开启。一般来说诸如 默认为输入状态,看门狗开启。一般来说诸如 那些,复位后默认看门狗是禁止的而 MSP430则默认是开启看门狗的 ,与 C8051F类似 。对 于我们开发调试 过程 来说, 前期都 是禁止看门狗 居多 ,所以一般新建 ,所以一般新建 ,所以一般新建 430工程,都会 工程,都会 有下面 语句:
WDTCTL = WDTPW + WDTHOLD;
WDTCTL是看门狗 的控制寄存器,长度为 16 位,其高 位,其高 8位是看门狗口令,固定为 位是看门狗口令,固定为 0x5A, 对 WDTCTL进行写操作时,必须使用该口令 进行写操作时,必须使用该口令 WDTPWWDTPWWDTPWWDTPW ,写错口令会导致系统复位。
WDTHOLD是对看门口控制寄存器的第八位写 1,禁止看门狗时钟,停计数。系统复位 默认值为 0,即开启看门狗计数 。
MSP430G2231的 IO 是不支持位寻址的,如果之前有 是不支持位寻址的,如果之前有 51 使用经验,刚上手 430 可能觉得 很别扭。 因为对于 51 ,用 sbitLED= P1^0;定义之后,可以非常方便使用赋值语句 定义之后,可以非常方便使用赋值语句 LED = 0;或者 LED = 1; 对 P1.0 口进行电平控制。而对 430的特定管脚控制时候,却要通过一些与或非等运 的特定管脚控制时候,却要通过一些与或非等运 算来实现,如 P1OUT |= 0x01; 或者 P1OUT &= 0xfe;对于引脚特定位置或清零, 不采用 P1OUT = 0x01; 或者 P1OUT = 0x00;,道理是显而易见 的, 因为 如果采用后者直接赋值,那么整个端口的电平状态可能都会改变。而通常情况我 如果采用后者直接赋值,那么整个端口的电平状态可能都会改变。而通常情况我 如果采用后者直接赋值,那么整个端口的电平状态可能都会改变。而通常情况我 如果采用后者直接赋值,那么整个端口的电平状态可能都会改变。而通常情况我 如果采用后者直接赋值,那么整个端口的电平状态可能都会改变。而通常情况我4 / 12
们都只是想对特定位操作,其它引脚电平不应受到影响。
当然,这仅是对习惯 51 的人提个醒,要习惯 的人提个醒,要习惯 运用 这种表示方法,因为像 AVR、ARM 那 些,很多都是不支持位寻址的通过上述与或 非等运算来处理的。
当然,对于类似的操作我们可以通过定义宏方式来处理如:
#define LEDON() P1OUT |= 0x01
#define LEDOFF() P1OUT &= 0xfe
这样,我们使用的时候就直接 LEDON(); 或者 LEDOFF(); 来实现 LED的亮灭控制,进行代 码移植的时候,也会方便很多。
MSP430的低功耗,很大一部分是得益于它灵活时 的低功耗,很大一部分是得益于它灵活时 钟配置,之所以在这一章节没有介绍 它的时钟,而采用了默认设置( DCO 1MHz),是因为 ),是因为 ),是因为 它太灵活了,所以显得复杂。 先点灯, 学会 IO 操作,激发学习兴趣。
IO 操作 主要涉及以下几个寄存器:
P1REN :上下拉电阻使能寄存器 :上下拉电阻使能寄存器 ,用于配置管脚输入时的上下拉电阻 ,用于配置管脚输入时的上下拉电阻 ,用于配置管脚输入时的上下拉电阻 ,1使能,此时与 使能,此时与 P1OUT配合选择上拉或者下, 1为上拉, 0位下拉 。
P1SEL:功能选择寄存器 ,1为引脚 配置为使用 外围模块功能。
P1IE :中断使能寄存器 ,1使能引脚中断。
P1IES :中断触发沿选择寄存器 ,1为下降沿触发, 0为上升沿触发。
P1IFG :中断标志寄存器 ,发生中断事件时相应位置 ,发生中断事件时相应位置 1。
P1DIR :方向寄存器 ,1为输出, 0为输入,复位默认状态。 为输入,复位默认状态。
P1OUT :输出寄存器 ,1时引脚输出高电平, 0时输出低电平。
P1IN :输入寄存器 ,用于读取 IO 电平 状态。


评论


技术专区

关闭