MDK 4.72a编译器问题
时间:10-02
整理:3721RD
点击:
最近用MDK4.72a编译程序时发现问题很费解
问题如下
问题如下
- 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;
- }
路过学习的。