七弦桐 发表于 2012-11-25 21:18:40

买的开发板带的DEMO程序中几段代码读不懂 请高人指点

第一段://*************************************************************************
//                  系统时钟初始化
//*************************************************************************
void Clock_Init()
{
uchar i;
BCSCTL1&=~XT2OFF;               //打开XT 振荡器
BCSCTL2|=SELM1+SELS;            //MCLK 为8MHZ ,SMCLK 为8MHZ
do{
    IFG1&=~OFIFG;                   //清除震荡标志
    for(i=0;i<100;i++)
       _NOP();                      //延时等待
}
while((IFG1&OFIFG)!=0);         //如果标志为1 ,则继续循环等待
IFG1&=~OFIFG;
}不明白在进行定时器的初始化的时候为什么要去清除振荡器标志?

第二段:#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)) 这三行代码是什么意思?

请大神指点迷津。

orzorzorzorz 发表于 2012-11-26 08:55:26

1.这个不是定时器初始化,是时钟初始化
清除标志是为了之后判断时钟是否正确建立,手册有写的

2.延时对应的us和ms__delay_cycles函数是iar内建的延时函数,和主频有关

maimaige 发表于 2012-11-26 09:19:24

//*************************************************************************
//                  系统时钟初始化
//*************************************************************************

qiuchen 发表于 2012-11-26 16:16:25

第一段的那个代码是等待时钟稳定

七弦桐 发表于 2012-11-26 17:14:20

qiuchen 发表于 2012-11-26 16:16 static/image/common/back.gif
第一段的那个代码是等待时钟稳定

恩 知道了 非常感谢您{:lol:}

songshanxiaozi 发表于 2014-4-10 09:39:55

1.430上电默认的时钟是内部时钟源,就是DCO,大概1M左右。如果需要切换到外部时钟,必须执行这个过程。
2.写的很好,给出单片机的时钟频率,产生软件延时。
页: [1]
查看完整版本: 买的开发板带的DEMO程序中几段代码读不懂 请高人指点