请问如何通过软件编程实现MSP430中系统时钟的调用?

zhgb1981   2009-4-17 20:14 楼主
我用的是MSP430F149的单片机,我想通过软件编程实现系统时钟的调用,也就是想在软件中调用系统时钟,请问我要怎么编程呢,谢谢!

回复评论 (6)

没明白你的所谓的系统时钟的调用时什么概念
点赞  2009-4-17 21:18
同上,没明白调用时钟是什么概念?
点赞  2009-4-17 21:33
是不是说在中断中更改系统时钟?应该跟在主函数中设置一样的啊。
点赞  2009-4-18 17:00
其实我也不太明白,是我们导师要求我这样做的,说让我在程序中增加一个系统时钟的调用,我猜应该是内部时钟吧,我不明白所以就来问了。
具体是,我做的是一个无线数据收发的课题,然后我把数据进行分组,每组给他们编号,按组来收发数据,一组一组的发送接收,然后老师说给数据组编号没有多大意义,让我考虑考虑把MSP430的系统时钟加进去,估计就是想可以观察发送的时间吧,我猜,哎~~,所以具体不知道怎么编程实现,就来请教请教各位强人了。
有人做过类似的吗?急求!!!!
点赞  2009-4-18 21:08

回复 楼主 zhgb1981 的帖子

#include  
#include  "BoardConfig.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BoardConfig(0xb8);                        //关闭数码管、流水灯和电平转换
  P3DIR |= BIT4;                            // P3.4 output
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 50000;
  TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode

  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P3OUT ^= BIT4;                            // Toggle P3.4
  CCR0 += 50000;                            // Add Offset to CCR0
}


#include  
#include  "BoardConfig.h"
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BoardConfig(0xb8);
  P3DIR |= BIT4;                            // P3.4 output
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 20000;
  TACTL = TASSEL_2 + MC_1;                  // SMCLK, upmode

  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P3OUT ^= BIT4;                            // Toggle P3.4
}




#include  
#include  "BoardConfig.h"
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BoardConfig(0xb8);
  P3DIR |= BIT4;                            // P3.4 output
  TACTL = TASSEL_2 + MC_2 + TAIE;           // SMCLK, contmode, interrupt

  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV )
{
   case  2: break;                          // CCR1 not used
   case  4: break;                          // CCR2 not used
   case 10: P3OUT ^= BIT4;                  // overflow
            break;
}
}




#include  
#include  "BoardConfig.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BoardConfig(0xb8);
  P3DIR |= BIT4;                            // P3.4 output
  TACTL = TASSEL_1 + MC_2 + TAIE;           // ACLK, contmode, interrupt

  _BIS_SR(LPM3_bits + GIE);                 // Enter LPM3 w/ interrupt
}

// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
  switch( TAIV )
  {
    case  2:  break;                        // CCR1 not used
    case  4:  break;                        // CCR2 not used
    case 10:  P3OUT ^= BIT4;                // overflow
              break;
  }
}


个人意见,你看看吧
点赞  2012-4-20 11:42

你的开发板跟我是在一家买的

引用: 原帖由 714379286@qq.co 于 2012-4-20 11:42 发表
#include  
#include  "BoardConfig.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BoardConfig(0xb8);                        //关闭数码管、流水灯和电平转换
  P3DI ...



、、、、、、、、、、、、、、、、、、、、、、
看 BoardConfig(0xb8)。。。。。https://bbs.eeworld.com.cn/images/smilies/default/biggrin.gif
点赞  2012-5-7 13:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复