欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

mdk2.72a编译器有关问题

更新时间: 2014-01-05 03:15:01 责任编辑: Author_N1

 

MDK2.72a编译器问题
最近用MDK4.72a写ATMEL ARM9(SAM9G45)裸机程序出现BUG
问题如下


extern unsigned int timeCnt;

//-----------------------------------------
//         Global Functions
//-----------------------------------------
extern void RTC_Tester(void);


void Tester_Init(void)
{
TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK);
    printf("-- Basic EMAC lwIP Project %s --\r\n", SOFTPACK_VERSION);
    printf("-- %s\r\n", BOARD_NAME);
    printf("-- Compiled: %s %s --\r\n", __DATE__, __TIME__);

    sys_init_timing();
}



/* The main() function. */
/*功能
定时器每隔10ms进一次中断,timeCnt值加1
主函数中判断每10秒读取一次RTC时钟并输出*/
int main(void)
{
#if 0
TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK);
    printf("-- Basic EMAC lwIP Project %s --\r\n", SOFTPACK_VERSION);
    printf("-- %s\r\n", BOARD_NAME);
    printf("-- Compiled: %s %s --\r\n", __DATE__, __TIME__);
    sys_init_timing();
/*用以上部分初始化程序运行正常*/

#else
volatile unsigned int i;
i = 0xFFFF;
while(i--);
/* 该初始化如果不加此部分程序运行到
RTC_Tester()之后跑飞到0x10(有时会在0x04,0x08或0x0C)地址死循环 */


Tester_Init();
/*用此方法初始化发现timeCnt<100时也会执行RTC_Tester函数
运行结果如下:
timeCnt=1
-I- RTC DateTime: 2007-01-01 00:01:33 Week:1

timeCnt=9
-I- RTC DateTime: 2007-01-01 00:01:33 Week:1

timeCnt=2
-I- RTC DateTime: 2007-01-01 00:01:34 Week:1

timeCnt=1
-I- RTC DateTime: 2007-01-01 00:01:34 Week:1

timeCnt=1
-I- RTC DateTime: 2007-01-01 00:01:34 Week:1

timeCnt=4
-I- RTC DateTime: 2007-01-01 00:01:34 Week:1
*/
/*试过将timeCnt定义为volatile变量效果一样*/
/*如果将>=改为==却能正常执行*/
/*如果不将timeCnt清零,程序运行到timeCnt==100后跑飞*/

#endif

while(1)
{

if(timeCnt >= 100)
{
printf("timeCnt=%d\r\n", timeCnt);
timeCnt = 0;
RTC_Tester();
}
}

    return 0;
}

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:15:01
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20107/
本文WWW.DOC100.NET DOC100.NET版权所有。