|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于定時器變量與主程序循環(huán)while。 |
| 作者:liaosicong 欄目:ARM技術(shù) |
主程序中定義了一個秒變量: uint8 sec,min,hour,sec_bz; sec=0; while(sec<2); while(1) { if(sec_bz==1) { sec_bz=0; //LED亮滅控制; } } 程序執(zhí)行后,如果把while(sec<2);這句去掉,一切正常,如果加上這句,程序一直停在這邊,請問為什么?定時器也有工作啊,這個從sec_bz可以看的出來?定時器程序?qū)懺趖arget.c里邊,具體如下: 在target.c引用了了主程序的幾個變量,啟動定時器T0,程序如下: extern uint8 sec,min,hour,sec_bz,count; void __irq IRQ_Exception(void) { count++; if(count==100) { WDFEED = 0xAA; //feed WDT WDFEED = 0x55; count=0; sec++; sec_bz = 1; if(sec==60) { min++; if(min==60) { min=0; hour++; } } } } |
| 2樓: | >>參與討論 |
| 作者: zlgARM 于 2005/3/9 8:45:00 發(fā)布:
re: 建議: 1。 將sec變量加上修飾符volatile,防止優(yōu)化; 2。 IRQ中斷程序建議放在主程序中,同時還要對VIC進行設(shè)置。 |
|
| 3樓: | >>參與討論 |
| 作者: liaosicong 于 2005/3/9 8:56:00 發(fā)布:
謝謝 加上volatile或放回主程序都可以。 |
|
| 4樓: | >>參與討論 |
| 作者: liaosicong 于 2005/3/9 9:04:00 發(fā)布:
疑問: 還有,為什么例程把他們放在target.c里邊呢? |
|
| 5樓: | >>參與討論 |
| 作者: guxiang 于 2005/3/9 20:33:00 發(fā)布:
死循環(huán) 程序執(zhí)行到while(sec<2);語句時就因條件滿足進入死循環(huán),不可能往下執(zhí)行。建議改成: uint8 sec,min,hour,sec_bz; sec=0; while(sec<2) { sec++; } sec=0; while(1) { if(sec_bz==1) { sec_bz=0; //LED亮滅控制; } } |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |