如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
【TIMSP430大赛原创经验贴】学习MSP430这十几天中所遇到的问题第九单片机论坛会员文章精选我七月才开始接触MSP430准确的说是单片机C语言这一方面以前只是初略的学过一点汇编语言说以在刚开始是我遇到了不少的问题并且现在也都还有少的问题。今天看见了斑竹的帖子于是就想写出来,给大家看看,一是想给和我一样遇到了这方面问题的让人一点点帮助,另一方面是希望懂的大神有更好的方法就教教我。我是初学也许这帖子出来有很多可笑的地方还望懂的朋友给我指出我的错误供我学习。1、遇到的第一个问题是按键的,由于当时还没学中断,我就用的IF判断,可是在信号输入方面总是出问题,后来在网上看见了一篇关于电阻上拉的文章文章如下:上下拉是否开启是否REN寄存器决定的,而上拉还是下拉是由OUT寄存器决定的,在作为输出时,随着OUT的高低,自动选择上下拉,作为输入的时候,我们也可以人为的付OUT寄存器来得到上下拉。下面的是我的一个按键的程序(不是中断):#include<msp430g2452.h>intmain(void){WDTCTL=WDTPW+WDTHOLD;P1DIR&=BIT3;while(1){P1REN|=0x08;if((P1IN&BIT3)==0x00)P1OUT|=BIT6;elseP1OUT=0x00;}}2、遇到的第二个问题就是定时的问题,做出来的时间和我我计算出来的总是有偏差而且不是一点半点,是很大的偏差,后来我才知道是时钟的选着出了问题。先上第一个程序:定时器A#include<msp430g2452.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;BCSCTL3|=LFXT1S_2;TACCTL0=CCIE;TACCR0=500;TACTL=TASSEL_1+ID_3+MC_1;P1DIR|=BIT0;_EINT();LPM3;while(1);}#pragmavector=TIMER0_A0_VECTOR__interruptvoidTimer_A(void){P1OUT^=BIT0;}实现LED闪烁时间0.5S。第二个我做的是看门狗定时:遇到的问题同样是时间的,先看程序。#include<msp430g2553.h>voidmain(void){BCSCTL3|=LFXT1S_0+XCAP_3;//这个的频率是32768HZWDTCTL=WDT_ADLY_250;//时间0.25,看门狗可以设八个时间最大可以设1S最小可以设0.064MS。在库文件里可以查到没中时间的写法。IE1|=WDTIE;P1DIR|=BIT0;_EINT();while(1);}#pragmavector=WDT_VECTOR__interruptvoidWDT(void){P1OUT^=BIT0;}起初这一句BCSCTL3|=LFXT1S_0+XCAP_3;我写的和定时器A一样是BCSCTL3|=LFXT1S_2;但时间老是慢的很,假如我设WDTCTL=WDT_ADLY_250但实际有1秒的样子。到现在我都还把BCSCTL3这个寄存器搞清楚希望知道的可我解答最好能这样发一份BCSCTL3的给我(脑子笨需要详细的资料)。BCSCTL1基本时钟系统控制寄存器176543210XT2OFFTXSDIVA.1DIVA.0XT5VRsel.2Resl.1Resl.0XT2OFF控制XT2振荡器的开启与关闭。TX2OFF=0,XT2振荡器开启。TX2OFF=1,TX2振荡器关闭(默认为TX2关闭)XTS控制LFXT1工作模式,选择需结合实际晶体振荡器连接情况。XTS=0,LFXT1工作在低频模式(默认)。XTS=1,LFXT1工作在高频模式(必须连接有高频相应的高频时钟源)。DIVA.0DIVA.1控制ACLK分频。0不分频(默认)12分频24分频38分频XT5V此位设置为0。Resl1.0,Resl1.1,Resl1.2三位控制某个内部电阻以决定标称频率。Resl=0,选择最低的标称频率。……..Resl=7,选择最高的标称频率。第三个问题:我现在在作步电机的现在现在只是把正反转和停止作出来了还差调速的问题。有人到是和我说过用什么位状态,但我不懂现在正在学习中,希望懂的教教我。