首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

数组与指针的问题

数组与指针的问题

程序如下:

#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编辑过]

迷途的羔羊!
外部晶振起振了吗?信号稳定吗?
海纳百川  有容乃大
起振了,信号也稳定。
如果把那些指针删掉,程序就正常了
迷途的羔羊!
我试过把数组弄小点,也是可以的,不知道数组的大小跟编译器有没有什么关联?

[此贴子已经被作者于2007-3-14 14:17:37编辑过]

迷途的羔羊!
http://bbs.eccn.com/uploadImages/test111.rar
迷途的羔羊!
你的数组定义的是局部变量,可能使堆栈溢出了。你定义成全局变量试试。
海纳百川  有容乃大
是堆栈问题!谢谢版主
迷途的羔羊!
为什么会这样呢?局部变量的大小怎么定呢?
暗暗暗暗啊
堆栈的大小是可以设定的。
海纳百川  有容乃大
返回列表