社区导航

 

搜索
查看: 2835|回复: 8

[求助] 各位大仙帮忙看看为啥PWM,木有输出

[复制链接]

1903

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2011-8-15 13:09 | 显示全部楼层 |阅读模式

void Init_TimerB(void)
{
  TBCTL= TBSSEL_2+ ID_3 +TBCLR;                // MCLK
  TBCCR0 = 40000;                                              // PWM Period
  TBCCTL1= OUTMOD_7;                                   // CCR1 reset/set
  TBCCR1 = 40000;                                              // CCR1 PWM duty cycle

  P4DIR|=0X02;
  P4SEL|=0X02;
  TBCTL|= MC_1;
}

 

为啥P4.1口一直输出0

要把目标订的实现起来辛苦一点!

回复

使用道具 举报

1903

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2011-8-15 13:11 | 显示全部楼层
晶振8M
要把目标订的实现起来辛苦一点!

回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2011-8-15 19:41 | 显示全部楼层
1.关闭看门狗;
2.打开8M晶振并进行相关设置或者使用默认的DCO(800Khz)进行相关设置;
建议你看看TI的例程

回复

使用道具 举报

1903

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2011-8-16 08:24 | 显示全部楼层

回复 板凳 shuizhiqing 的帖子

你说的那些在主程序里早就设置好了。。。。
要把目标订的实现起来辛苦一点!

回复

使用道具 举报

1903

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2011-8-16 08:25 | 显示全部楼层

主程序如下

#include


#define uint unsigned int
#define uchar unsigned char

void Init_TimerB(void)
{
  TBCTL= TBSSEL_2+ ID_3 +TBCLR;                // SMCLK
  TBCCR0 = 40000;                        // PWM Period
  TBCCTL1= OUTMOD_7;                     // CCR1 reset/set
  TBCCR1 = 40000;                        // CCR1 PWM duty cycle

  P4DIR|=0X02;
  P4SEL|=0X02;
  TBCTL|= MC_1;
}
main()
{  
  unsigned int i;
  WDTCTL = WDTPW + WDTHOLD ;
  BCSCTL1 &= ~XT2OFF;         //打开XT2振荡器
  do
  {
     IFG1&=~OFIFG;         //清除振荡错误标志
     for(i=0xFF;i>0;i--);
  }
  while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
  BCSCTL2 |= SELM1+SELS;     //MCLK为8MHz,SMCLK为8MHz,    SELM1=SELM_2        
  P1DIR|=~(BIT4+BIT5+BIT6+BIT7);
  P1SEL|=(BIT3+BIT2);    // 选择P1^3和P1^2作为外部计数脉冲的输入端  
  P2DIR=0XFF;
  P2OUT=0X80;
  P3DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4);
  P3OUT=~BIT1;
  P5DIR=0X00;
  P6DIR=0X00;
  P6SEL=0XF0;
  Init_TimerB();
  _EINT();
  while(1)
  {
    _BIS_SR(LPM3_bits);
    _NOP();//端口扫描
  }
}
要把目标订的实现起来辛苦一点!

回复

使用道具 举报

60

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2011-8-16 09:19 | 显示全部楼层

回复 楼主 simonprince 的帖子

你好,LZ你的程序中的TBCCR0 和TBCCR1都设的40000,CCR1不应该大于CCR0,按照CCR1输出模式7的概述,当计数到CCR1的时候复位,计数到CCR0的时候置位。你现在这两个重了,程序估计乱了吧。

回复

使用道具 举报

1903

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2011-8-16 09:45 | 显示全部楼层

回复 6楼 3g465 的帖子

我把CCR1调到30000了也不行啊
要把目标订的实现起来辛苦一点!

回复

使用道具 举报

60

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2011-8-16 11:11 | 显示全部楼层

回复 7楼 simonprince 的帖子

LZ,你好,进入到LPM3低功耗模式的时候时钟信号SMCLK是关闭的,建议你将LPM3改成LPM0试试

评分

1

查看全部评分


回复

使用道具 举报

1903

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

 楼主| 发表于 2011-8-16 11:38 | 显示全部楼层

回复 8楼 3g465 的帖子

就是啊,我怕调试出错就把while(1) 里面的程序随便换了下,哈哈。就是这个,果然是旁观者清啊。谢谢谢谢
要把目标订的实现起来辛苦一点!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-5-30 09:49 , Processed in 0.302691 second(s), 30 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表