程序如下:
#include <hidef.h> /* common defines and macros */ #include <mc9s12a512.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "SampleS12" void PLL_init(uchar SYNR_data,uchar REFDV_data); void main(void) { /* put your own code here */ uchar *p; static uchar j=0; struct student { uchar a; uint b; float c; }; union test { struct student d; uchar e[8]; uchar f[1820]; }h; h.d.c = 0.1; h.f[1799]=0x11; h.f[1800]=0x11; h.f[1801]=0x11; EnableInterrupts; p = &h.f[1799]; p++; j = *p; PLL_init(1,1); for(;;) { } } /**************************************************************************** * 名 称:PLL_init * 功 能:PLL初始化程序 * 入口参数:SYNR_data 倍频系数 * REFDV_data 分频系数 * 说 明:PLLCLK = 2*OSCCLK*(SYNR_data+1)/(REFDV_data+1) * 出口参数:无 ****************************************************************************/ void PLL_init(uchar SYNR_data,uchar REFDV_data) { CLKSEL = 0; // 选择外部晶振为时钟源 PLLCTL_PLLON = 0; // 关闭PLL SYNR = SYNR_data; // 选择倍频系数 REFDV = REFDV_data; // 选择分频系数 PLLCTL = 0x70; while(!CRGFLG_LOCK); // 等待PLL锁定 CLKSEL = 0x80; // 选择PLL为时钟源 } 运行这段程序会跑飞,不知道是什么原因?
[此贴子已经被作者于2007-3-14 13:00:20编辑过] |