mc9s12DG128时钟问题<br /><br />通过PLL锁相环在外部晶振为16MHz时得到24MHz, 现为了证实是否是24MHz,设置了主定时器(4分频),这时定时器在10922.66us后就应溢出(公式为(4/24)*65536=10922.66us),但我在PB0口接了示波器观看,发现为7ms左右,望各位高手指正,到底什么地方错了<br /><br /><br /><br />#include /* common defines and macros */<br />#include /* derivative information */<br />#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"<br /><br /><br />//初始化外围设备接口<br />void PeriphInit(void) <br />{<br /><br />unsigned char clear;<br /><br />DisableInterrupts; //关全局中断<br /><br />// PB[7..0] 作为输出,初始为高电平 <br />PORTB = 0xFF;<br />DDRB = 0xFF;<br /><br />//初始化主定时器<br />TSCR1 = 0x80; /* enable timer TCNT */<br />TSCR2 = 0x82; /* TCNT prescaler setup 4分频*/<br /><br /><br />//设置PLL锁相环(内部)时钟24MHz为系统时钟 (外部时钟为16MHz,经PLL内部时钟为24MHz)<br />CLKSEL &= 0x7F; <br />REFDV = 1; <br />SYNR = 2; <br />while(!(CRG**&0x08));<br />CLKSEL |= 0x80;<br /><br /><br />EnableInterrupts; //开全局中断<br /><br />}<br /><br />//主定时器中断 <br />#pragma CODE_SEG NON_BANKED<br />void interrupt Int_TimerOverFlow(void)<br />{ <br />unsigned char i;<br /><br />T**2_TOF = 1; //clear timer overflow flag<br />PORTB_BIT0=!PORTB_BIT0;<br /><br />}<br /><br />#pragma CODE_SEG DEFAULT<br /><br /><br />void main(void) <br />{<br />/* put your own code here */<br /><br />PeriphInit();<br /><br />for (;;) ;<br /><br />}<br /> |
|