P12 可以这样输出方波吗?

2019-03-24 11:27发布

// 同时输出两个方波
  1. #include <msp430g2553.h>

  2. int main( void )
  3. {
  4.   // Stop watchdog timer to prevent time out reset
  5.   WDTCTL = WDTPW + WDTHOLD;
  6.   P1DIR |= BIT1 + BIT2;                 //  p1.1  p1.2
  7.   P1SEL |= BIT1 + BIT2;
  8.   //P2DIR |= BIT0;
  9. // P2SEL |= BIT0;
  10.   CCTL0 = OUTMOD_4;
  11. // CCTL1 = OUTMOD_4;                      //  toggle
  12.   CCR0 = 50-1;
  13. // CCR1 = 10-1;
  14.   TACTL = TASSEL_2 + MC_1;              //  SMCLK + UP MODE
  15.   _BIS_SR(CPUOFF);
  16.   return 0;
  17. }
复制代码
通过示波器,看到p1.1输出了10 000hz方波,看到p1.2后面写着TA0.1,原以为也能这样输出一个方波,却没有实现。后来这样实现了。
/ 实验目的:输出频率为10、50kHz的方波
/*
    f = 10^4hz  T = 10^(-4)s= 100 / 1000 000
*/
  1. #include <msp430g2553.h>

  2. int main( void )
  3. {
  4.   // Stop watchdog timer to prevent time out reset
  5.   WDTCTL = WDTPW + WDTHOLD;
  6.   P1DIR |= BIT2;
  7.   P1SEL |= BIT2;
  8.   CCR0 = 20-1;                        // 100 / 20
  9.   CCTL1 = OUTMOD_7;                    //  CCR1  RESET/SET
  10.   CCR1 = 10;                            //  50 /  10
  11.   TACTL = TASSEL_2 + MC_1;              //  smclk + up
  12.   _BIS_SR(CPUOFF);
  13.   return 0;
  14. }
复制代码
可是第一种办法为什么不行呢?TA0.1又代表什么呢? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
wangfuchong
1楼-- · 2019-03-24 13:37
< TA0.1对应着TACCR1的输出,第一种方法没有设定CCTL1和CCR1
hahadiy
2楼-- · 2019-03-24 18:46
< :TI_MSP430_内容页_SA7 --> 本帖最后由 hahadiy 于 2014-6-1 16:29 编辑
wangfuchong 发表于 2014-5-31 19:50
TA0.1对应着TACCR1的输出,第一种方法没有设定CCTL1和CCR1

您好,我改了改
  1. //  f= 1000 000 / 20 = 50000 hz t = 20us
  2. #include <msp430g2553.h>

  3. int main( void )
  4. {
  5.   // Stop watchdog timer to prevent time out reset
  6.   WDTCTL = WDTPW + WDTHOLD;
  7.   P1DIR |=BIT2;                 //  p1.1  p1.2
  8.   P1SEL |=BIT2;
  9. //CCTL0 = OUTMOD_4;                      //  toggle
  10.   //CCR0 = 10-1;
  11.   
  12.   CCTL1 = OUTMOD_4;
  13.   CCR1 = 10-1;
  14.   TACTL = TASSEL_2 + MC_1;              //  SMCLK + UP MODE
  15.   _BIS_SR(CPUOFF);
  16.   return 0;
  17. }
复制代码这样写 p12还是无法输出的。我再看看官方例程吧
wangfuchong
3楼-- · 2019-03-25 00:19
 精彩回答 2  元偷偷看……
wangfuchong
4楼-- · 2019-03-25 01:46
G2系列指导手册呀,TI官网的呀,定时器章节的介绍部分就有
hahadiy
5楼-- · 2019-03-25 03:10
wangfuchong 发表于 2014-6-2 21:47
G2系列指导手册呀,TI官网的呀,定时器章节的介绍部分就有

还是没弄好。。
  1. #include <msp430g2553.h>

  2. int main( void )
  3. {
  4.   // Stop watchdog timer to prevent time out reset
  5.   WDTCTL = WDTPW + WDTHOLD;
  6.   P1DIR |= BIT1 + BIT2;                 //  p1.1  p1.2
  7.   P1SEL |= BIT1 + BIT2;                // ta0.0   ta0.1
  8.   CCR0 = 100-1;

  9.   CCTL1 = OUTMOD_4;
  10.   CCR1 = 30;
  11.   TACTL = TASSEL_2 + MC_1;              //  SMCLK + UP MODE
  12.   _BIS_SR(CPUOFF);
  13.   return 0;
  14. }
复制代码是这样写吗?输出的是 1000 000 / 2*100 = 5000 hz的方波,与ccr1的值无关啊,是不是p11和p12输出的波就应该是一样的呢?
wangfuchong
6楼-- · 2019-03-25 06:41
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章