打印
[测量]

msp430延时程序不准确

[复制链接]
711|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝