有关MSP430f2618 TIMER B发PWM波的问题,小白真情求助

2011年10月26日 10:57    发布者:crazy的man
我用MSP430f2618发PWM脉冲,timer-B时钟选择ACLK 可以产生波形,为什么把时钟该为SMCLK就没波形了???smclk选择的是高速晶体振荡器。
程序如下

#include
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
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
}

网友评论

crazy的man 2011年10月26日
回复2楼sf690: 额,问题已找到,,原来是手贱的加了一句低功耗模式三,,结果吧mclk和smclk 全部关了
moke520 2011年10月26日
台湾的软件人才一向较少,联发科一次要募集300名好手,也算是件大工程。手机供应链表示,国内积极投入Android操作系统的手机相关大厂,主要就是联发科和宏达电,这一波联发科发动的抢人攻势,势必要和宏达电大抢了解Android操作系统的人才,Android人才将炙手可热。
jjwjjw406 2011年10月27日
是啊