![]() |
發(fā)布時間: 2019-2-16 11:09
正文摘要:我誤以為程序運行的時候會一直停在這個while(1);循環(huán),但這個while(1);如果去掉的話程序就無法正常運行,不去掉卻能正常運行,求大佬詳解 |
形成死循環(huán),你應(yīng)該多看看函數(shù)的定義 |
先學(xué)學(xué)基礎(chǔ)的C語言再說其它的吧。走路沒學(xué)會,還想飛! |
while(1)是循環(huán)執(zhí)行的,去掉后也可以加延時函數(shù)試下定時器中斷。 C語言也是學(xué)習(xí)單片機的基礎(chǔ),有時間還要多看下單片機例程,根據(jù)進(jìn)度一點一點學(xué)起來。 |
您的理解是有一定道理的,while語句的作用就是讓他一直在此處運行,有while(1),程序一直運行中,等待定時器中斷的產(chǎn)生,沒有while(1),程序直接運行結(jié)束,定時器中斷就沒有作用了,自然無法正常工作。 |
你還是先學(xué)學(xué)基礎(chǔ)的C語言再說其它的吧。走路沒學(xué)會,還想快跑? |
yun8808 發(fā)表于 2019-2-16 12:39 main()函數(shù)是自循環(huán)函數(shù),程序不會結(jié)束,但是會反復(fù)中斷初始化而形成死循環(huán) |
2樓說得對,你的程序功能是靠中斷完成的,去掉while(1)后,主函數(shù)一直在不停的進(jìn)行中斷的初始化,無法響應(yīng)中斷! |
有while(1),程序一直運行中,會進(jìn)定時器中斷,沒有while(1),程序運行結(jié)束,不會進(jìn)定時器,工作就不正常了。 |
while確實會把程序停在那里,你沒理解錯,但是這里while的作用是讓定時器只初始化一次,如果不加while,定時器會反復(fù)初始化(main本身就是一個循環(huán)),也就沒辦法進(jìn)入中斷,你就看不到現(xiàn)象 |
Powered by 單片機教程網(wǎng)