打印

[ 求助]有关MSP430f2618 TIMER B发PWM波的问题

[复制链接]
1525|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lzlong|  楼主 | 2011-11-24 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用MSP430f2618发PWM脉冲,timer-B时钟选择ACLK 可以产生波形,为什么把时钟该为SMCLK就没波形了???smclk选择的是高速晶体振荡器。
程序如下

#include <msp430x26x.h style="word-wrap: break-word; line-height: normal; ">
void InitSys()
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
InitSys();
P4DIR |= 0x7e; // P4.1 - P4.6 output
P4SEL |= 0x7e; // P4.1 - P4.6 TBx options
TBCCR0 = 512-1; // PWM Period
TBCCTL1 = OUTMOD_7; // CCR1 reset/set
TBCCR1 = 384; // CCR1 PWM duty cycle
TBCCTL2 = OUTMOD_7;
TBCCR2 = 128;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 64;
TBCCTL4 = OUTMOD_7;
TBCCR4 = 32;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 16;
TBCCTL6 = OUTMOD_7;
TBCCR6 = 8;

TBCTL = TBSSEL_1 + MC_1; // ACLK, up mode

_BIS_SR(LPM3_bits); // Enter LPM3
}

void InitSys()
{
unsigned int iq0;

//使用XT2振荡器
BCSCTL1&=~XT2OFF; //打开XT2振荡器
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振

BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2
}
上面这个可以产生6列波,但改成下面的就完全没有了,哪位大神可看看什么问题???
#include <msp430x26x.h style="word-wrap: break-word; line-height: normal; ">
void InitSys()
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
InitSys();
P4DIR |= 0x7e; // P4.1 - P4.6 output
P4SEL |= 0x7e; // P4.1 - P4.6 TBx options
TBCCR0 = 512-1; // PWM Period
TBCCTL1 = OUTMOD_7; // CCR1 reset/set
TBCCR1 = 384; // CCR1 PWM duty cycle
TBCCTL2 = OUTMOD_7;
TBCCR2 = 128;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 64;
TBCCTL4 = OUTMOD_7;
TBCCR4 = 32;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 16;
TBCCTL6 = OUTMOD_7;
TBCCR6 = 8;

TBCTL = TBSSEL_2 + MC_1; // SMCLK, up mode,就这边改了一下把时钟换为SMCLK

_BIS_SR(LPM3_bits); // Enter LPM3
}

void InitSys()
{
unsigned int iq0;

//使用XT2振荡器
BCSCTL1&=~XT2OFF; //打开XT2振荡器
do
{
IFG1 &= ~OFIFG; // 清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--); // 延时,等待XT2起振
}
while ((IFG1 & OFIFG) != 0); // 判断XT2是否起振

BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2
}

相关帖子

沙发
TI_MCU| | 2011-11-24 20:38 | 只看该作者
不知道是不是SMCLK没有正常工作,
BCSCTL2 =SELM_2+SELS; //选择MCLK、SMCLK为XT2
改成
BCSCTL2 =SELM_2;
先试试用内部晶振有没有正常,如果正常了估计是你XT2的问题。不正常的话再仔细检查下timer的设置好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

141

帖子

1

粉丝