欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4950|回復: 21
收起左側

C語言mail里多個while(1)循環 程序分析

  [復制鏈接]
ID:476652 發表于 2022-3-12 18:29 | 顯示全部樓層 |閱讀模式
各位大神,看到一個程序,在主函數mail里有多個while(1)循環,對嗎?這是什么操作啊,請有知道的大神科普科普。
51hei截圖_20220312182614.png
51hei截圖_20220312182638.png

回復

使用道具 舉報

ID:401564 發表于 2022-3-12 23:13 | 顯示全部樓層
我也不曉得,前幾天看STM32的書,里頭就是這個樣子的
回復

使用道具 舉報

ID:311903 發表于 2022-3-13 09:10 | 顯示全部樓層
while(1)
{
     if(condition)
          break;
}
....
while(1)
{
     if(condition)
          break;
}
....
while(1)
{
  ...
}


這種吧
回復

使用道具 舉報

ID:142059 發表于 2022-3-13 09:18 來自觸屏版 | 顯示全部樓層
Y_G_G 發表于 2022-3-12 23:13
我也不曉得,前幾天看STM32的書,里頭就是這個樣子的

等待下一步,應該有break的條件的
回復

使用道具 舉報

ID:476652 發表于 2022-3-13 10:37 | 顯示全部樓層
咋回事啊,這也沒有懂得的大神難嗎?
那只能懇請大神的師傅們出來給大家科普了,
一直說main里只能有1個while(1)循環,這回好家伙,冒出一大堆while(1)循環來,顛覆認知!
回復

使用道具 舉報

ID:401564 發表于 2022-3-13 15:42 | 顯示全部樓層
溫柔的郎 發表于 2022-3-13 10:37
咋回事啊,這也沒有懂得的大神難嗎?
那只能懇請大神的師傅們出來給大家科普了,
一直說main里只能有1個w ...

找到了,這是嵌入式里面的多任務,跟8051的單片機還是有差別的
估計是跑系統的時候用的吧
我也沒有認真看,還沒有學到,知道怎么回事就行
沒有break條件的,想象中應該是多個任務可以一直執行,就好比這個while(1)一直在檢測,還有另外一條main的程序本身還在執行
并不是C的一條一條詩句的執行的
回復

使用道具 舉報

ID:401564 發表于 2022-3-13 15:43 | 顯示全部樓層
https://www.cnblogs.com/ansersion/p/4328800.html
你上這看一下就知道了
回復

使用道具 舉報

ID:290373 發表于 2022-3-13 15:50 | 顯示全部樓層
板凳和地板說的應該沒問題。
這個像是8266配置相關的內容,邏輯應該是如果某一個AT操作沒有完成,就重復這個操作直到完成,當完成該操作后break一下,跳出死循環,執行下一步。

至于操作系統內一般能接觸到的while(1)是存在于任務函數(暫時這樣稱呼它)中的。
由于在操作系統中任務是由操作系統劃分時間片進行執行的,故不需要考慮其他問題,若用戶希望任務一直運行下去,就在任務函數中寫上while(1),交由操作系統執行。
回復

使用道具 舉報

ID:544776 發表于 2022-3-13 16:17 | 顯示全部樓層
可以去看一下rtos的代碼,每個任務都寫死的
回復

使用道具 舉報

ID:139866 發表于 2022-3-16 16:56 | 顯示全部樓層
Y_G_G 發表于 2022-3-13 15:43
https://www.cnblogs.com/ansersion/p/4328800.html
你上這看一下就知道了

這個不是多任務,上面并沒有配置的函數,這就是簡簡單單一個51程序,樓主折疊了while內的部分,這個程序看起來像是在AT模式配置ESP8266,while的作用是等待8266應答,收到應答才跳出進入下一個while,最后一個或者倒數第二個while才是平常運行的循環
回復

使用道具 舉報

ID:962286 發表于 2022-3-16 21:07 | 顯示全部樓層
任何單片機main里邊都可以有多個while(1)。有些可以由相應條件而break,有些則用不break,比如程序發生一些錯誤,檢測到相應的標志位,則打印相關錯誤,同時直接一個while(1)不出來了,也就不再繼續執行任務,這種情況多發生在調試程序,方便知道哪里錯了。
回復

使用道具 舉報

ID:844772 發表于 2022-3-17 09:18 | 顯示全部樓層
天ノ憶 發表于 2022-3-16 16:56
這個不是多任務,上面并沒有配置的函數,這就是簡簡單單一個51程序,樓主折疊了while內的部分,這個程序 ...

贊同這個回復。ESP8266的這幾個AT指令好麻煩,下個執行失敗會要求從頭來,所以看起來就是while(1)的嵌套了,就是在反復的復位-連接-建立服務器,你仔細找一下,都搞好了會有直接全部跳出的語句。
回復

使用道具 舉報

ID:160500 發表于 2022-3-17 11:45 | 顯示全部樓層
你這發個半殘的程序叫人來給你分析問題
回復

使用道具 舉報

ID:476652 發表于 2022-3-17 15:00 | 顯示全部樓層
上次發帖時,為了讓大家看到程序的全貌,所以折疊了,但有影響到大家的判斷了,在這,把程序再詳細展現出來

1.png
2.png
3.png
4.png
5.png

回復

使用道具 舉報

ID:476652 發表于 2022-3-17 15:17 | 顯示全部樓層
       感謝各位大神的各種辨析和討論,我按7樓大神的引導,進入到另一個殿堂看了看,才發現這個多while(1)程序,其實是一個比51高好多維度的世界,是1個帶操作系統的程序。
      按我目前的認知水平,肯定理解不了了,不過擴大自己的見識,是很有價值的,
回復

使用道具 舉報

ID:446406 發表于 2022-3-17 15:21 | 顯示全部樓層
前面的while()都是等待,收到應答后自動退出了。程序沒有什么大問題!
回復

使用道具 舉報

ID:514901 發表于 2022-3-18 09:14 | 顯示全部樓層
16樓正解,扯不上什么操作系統
回復

使用道具 舉報

ID:956872 發表于 2022-3-18 21:16 | 顯示全部樓層
這就是51單片機用AT指令操作8266聯網等待反饋結果吧,如果成功執行,跳入下一下while,錯誤的話,串口打印失敗,一直錯誤一直在該步死循環,有開門狗就會自動復位了。
回復

使用道具 舉報

ID:1007106 發表于 2022-3-19 20:04 | 顯示全部樓層
由于在操作系統中任務是由操作系統劃分時間片進行執行的,故不需要考慮其他問題,若用戶希望任務一直運行下去,就在任務函數中寫上while(1),交由操作系統執行。
回復

使用道具 舉報

ID:712493 發表于 2022-5-8 09:29 | 顯示全部樓層
1517347243 發表于 2022-3-19 20:04
由于在操作系統中任務是由操作系統劃分時間片進行執行的,故不需要考慮其他問題,若用戶希望任務一直運行下 ...

這里的程序跟操作系統沒關系吧
回復

使用道具 舉報

ID:1026496 發表于 2022-5-15 22:49 | 顯示全部樓層
建議把代碼全部以文件的方式分享出來。
回復

使用道具 舉報

ID:1026496 發表于 2022-5-15 23:09 | 顯示全部樓層
溫柔的郎 發表于 2022-3-17 15:00
上次發帖時,為了讓大家看到程序的全貌,所以折疊了,但有影響到大家的判斷了,在這,把程序再詳細展現出來 ...

一個while(1)可以看著一個狀態可以用一個switch case 來替換
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表