MSP 时钟的问题 希望大家能帮个忙

tarafans   2012-5-30 12:52 楼主
MSP430F149默认的时钟是SMCLK 就是大约800khz 如果我加了这段程序   BCSCTL1 &= ~XT2OFF;                 //打开XT2高频晶体振荡器
        do
        {
          IFG1 &= ~OFIFG;                 //清除晶振失败标志
          for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振
        }
         while ((IFG1 & OFIFG));             //晶振失效标志仍然存在?
        BCSCTL2 |= SELM_2 + SELS;           //MCLK和SMCLK选择高频晶振
       TACTL |= TASSEL_2 + ID_3; 

就是启用8M晶振 那么程序执行速度是不是会增加?就是执行一条命令只需1/8000000秒??
如果上述成立的话 那么下面我写的延迟函数 是不是正确就是延时N个毫秒
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=8000;y>0;y--);
}

回复评论 (4)

一个for循环大约需要5个周期,所以不是你想想的那样,想通过延时多少个周期,IAR提供了__delay_cycles()函数。
点赞  2012-5-30 13:05

回复 沙发 lcofjp 的帖子

哦谢谢 那我想问问是不是我写了那段程序就是启用8m晶振 程序的执行速度会不会加快 执行一个命令要1/8000000秒?
点赞  2012-5-30 13:08

回复 板凳 tarafans 的帖子

应该会 你装了晶体了把 我一直用内部
点赞  2012-5-30 14:08

回复 板凳 tarafans 的帖子

8M晶体,速度肯定提高了。但是只能保证每个时钟周期是1/8M秒,每条指令可能需要1~6个时钟周期。每条指令的长度和执行时间是不同的。
点赞  2012-5-30 16:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复