Randy 发表于 2012-7-18 09:26:25

【大赛原创经验贴】 学习MSP430 这十几天中所遇到的问题

我七月才开始接触MSP430 准确的说是单片机C语言这一方面 以前只是初略的学过一点汇编语言说以在刚开始是我遇到了不少的问题并且现在也都还有少的问题。今天看见了斑竹的帖子 于是就想写出来,给大家看看,一是想给和我一样遇到了这方面问题的让人一点点帮助,另一方面是希望懂的大神有更好的方法就教教我。
我是初学也许这帖子出来有很多可笑的地方 还望懂的朋友给我指出我的错误 供我学习。   
1、 遇到的第一个问题是按键的,由于当时还没学中断,我就用的IF判断,可是在信号输入方面总是出问题,后来在网上看见了一篇关于电阻上拉的文章
文章如下:

上下拉是否开启是否REN寄存器决定的,而上拉还是下拉是由OUT寄存器决定的,在作为输出时,随着OUT的高低,自动选择上下拉,作为输入的时候,我们也可以人为的付OUT寄存器来得到上下拉。
下面的是我的一个按键的程序(不是中断):

#include <msp430g2452.h>

int main( void )
{

WDTCTL = WDTPW + WDTHOLD;
P1DIR&=BIT3;

while(1)
{   P1REN |= 0x08;
    if((P1IN&BIT3)==0x00)
    P1OUT|=BIT6;   
   else
      P1OUT=0x00;   
}
}

2、遇到的第二个问题就是定时的问题,做出来的时间和我我计算出来的总是 有偏差而且不是一点半点,是很大的偏差,后来我才知道是时钟的选着出了问题。
先上第一个程序:定时器A

#include <msp430g2452.h>
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
   BCSCTL3 |= LFXT1S_2;         
TACCTL0 = CCIE;
TACCR0 =500;                                 
TACTL = TASSEL_1 +ID_3 + MC_1;
P1DIR |=BIT0;
    _EINT();
LPM3;
while(1);
}
#pragma vector = TIMER0_A0_VECTOR

__interrupt void Timer_A (void)
{
P1OUT ^=BIT0;
}

实现LED闪烁时间0.5S。

第二个我做的是看门狗定时:
遇到的问题同样是时间的,先看程序。
#include <msp430g2553.h>
void main (void)
{ BCSCTL3 |= LFXT1S_0 + XCAP_3;   //这个的频率是32768HZ
WDTCTL=WDT_ADLY_250;          //时间0.25,看门狗可以设八个时间最大可以设1S最小可以设0.064MS。在库文件里可以查到没中时间的写法。
IE1|=WDTIE;

P1DIR|=BIT0;
_EINT();
while(1);
}
#pragma vector=WDT_VECTOR
__interrupt void WDT (void)
{
P1OUT^=BIT0;
}

起初这一句BCSCTL3 |= LFXT1S_0 + XCAP_3;我写的和定时器A一样是BCSCTL3 |= LFXT1S_2; 但时间老是慢的很,假如我设 WDTCTL=WDT_ADLY_250但实际有1秒的样子。
到现在我都还把BCSCTL3这个寄存器搞清楚希望知道的可我解答最好能这样发一份BCSCTL3的给我(脑子笨需要详细的资料)。

BCSCTL1 基本时钟系统控制寄存器1
      76543210
XT2OFFTXSDIVA.1DIVA.0XT5VRsel.2Resl.1Resl.0

XT2OFF 控制XT2 振荡器的开启与关闭。
    TX2OFF=0,XT2振荡器开启。
    TX2OFF=1,TX2振荡器关闭(默认为TX2 关闭)

XTS    控制LFXT1 工作模式,选择需结合实际晶体振荡器连接情况。
    XTS=0,LFXT1工作在低频模式(默认)。
    XTS=1,LFXT1工作在高频模式(必须连接有高频相应的高频时钟源)。

DIVA.0 DIVA.1 控制 ACLK分频。
    0    不分频(默认)
    1   2分频
    24分频
    38分频

XT5V 此位设置为0。

Resl1.0,Resl1.1,Resl1.2 三位控制某个内部电阻以决定标称频率。
    Resl=0,选择最低的标称频率。
    ……..
    Resl=7,选择最高的标称频率。



第三个问题:
我现在在作步电机的现在现在只是把正反转和停止作出来了还差调速的问题。有人到是和我说过用什么位状态,但我不懂现在正在学习中,希望懂的教教我。

页: [1]
查看完整版本: 【大赛原创经验贴】 学习MSP430 这十几天中所遇到的问题