[测量] msp430延时程序不准确

[复制链接]
 楼主| jixie09 发表于 2015-4-13 16:57 | 显示全部楼层 |阅读模式
在网上看到一种430的延时程序:
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
应用中只要使用就行,为什么我在应用中发现,如果我延时delay_ms(1000)理论上应该是1s,但是实际应用效果来看是10s。
测试程序如下,请各大大不吝赐教:
#include  <msp430x14x.h>

#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

void main(void)
{
  /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    P3DIR = 0XFF;P3OUT = 0XFF;
    P4DIR = 0XFF;P4OUT = 0XFF;
    P5DIR = 0XFF;P5OUT = 0XFF;
    P6DIR = 0XFF;P6OUT = 0XFF;
  
  WDTCTL = WDTPW + WDTHOLD;                 // 关狗
  P6DIR |= BIT2;
  P6OUT |= BIT2;                            //关闭电平转换
  P2DIR = 0xff;                             // P2端口设置为输出
  P2OUT = 0xff;                             // 关闭其他LED
  P2OUT = 0x55;
  while(1)
  {
    delay_ms(100);
    P2OUT ^=0xff;
  }
}
 楼主| jixie09 发表于 2015-4-13 18:38 | 显示全部楼层
找到问题了,主时钟频率系统未设置之前是DCO频率,约为800KHZ,我直接用了外部晶振了
天行漫步 发表于 2015-4-19 22:05 来自手机 | 显示全部楼层
楼主  的意思是时钟频率没设置是吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部