打印

mc9s12DG128时钟问题

[复制链接]
1472|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luo730210|  楼主 | 2007-9-27 21:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
mc9s12DG128时钟问题

通过PLL锁相环在外部晶振为16MHz时得到24MHz, 现为了证实是否是24MHz,设置了主定时器(4分频),这时定时器在10922.66us后就应溢出(公式为(4/24)*65536=10922.66us),但我在PB0口接了示波器观看,发现为7ms左右,望各位高手指正,到底什么地方错了



#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


//初始化外围设备接口
void PeriphInit(void) 
{

unsigned char clear;

DisableInterrupts; //关全局中断

// PB[7..0] 作为输出,初始为高电平 
PORTB = 0xFF;
DDRB = 0xFF;

//初始化主定时器
TSCR1 = 0x80; /* enable timer TCNT */
TSCR2 = 0x82; /* TCNT prescaler setup 4分频*/


//设置PLL锁相环(内部)时钟24MHz为系统时钟 (外部时钟为16MHz,经PLL内部时钟为24MHz)
CLKSEL &= 0x7F; 
REFDV = 1; 
SYNR = 2; 
while(!(CRG**&0x08));
CLKSEL |= 0x80;


EnableInterrupts; //开全局中断

}

//主定时器中断 
#pragma CODE_SEG NON_BANKED
void interrupt Int_TimerOverFlow(void)

unsigned char i;

T**2_TOF = 1; //clear timer overflow flag
PORTB_BIT0=!PORTB_BIT0;

}

#pragma CODE_SEG DEFAULT


void main(void) 
{
/* put your own code here */

PeriphInit();

for (;;) ;

}

相关帖子

沙发
张明峰| | 2007-9-28 08:21 | 只看该作者

何必如此复杂?

这样的长段代码在论坛里没有多少人会仔细看的。大家都有很多事要做。这里又不是老师批改学生作业的地方。

要验证内部时钟的频率,很简单:主循环内写1条语句就搞定了

  
   for (;;) {
      PORTB_BIT0=!PORTB_BIT0;
   }



查得一次循环所需的指令周期数,示波器看一下波型宽度,就知道了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

1

粉丝