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