[問題]C 語言問題

看板C_and_CPP (C/C++)作者 (藍天白雲~~)時間3年前 (2021/03/24 13:34), 3年前編輯推噓2(2012)
留言14則, 6人參與, 3年前最新討論串1/1
請問以下函式 void (* resetFunc) (void) = 0; 這段程式有什麼功用? 然後在程式中,做了判斷如下 if (error == 1) { resetFunc(); } 是否代表程式又從頭執行嗎? 謝謝您的回覆 -- -- 人...有時候是會Orz的... │││││ ▃▅▅▆ ││││ (cat_/ ││ ▊Moon▄▂ │ ─ _▍_ ▃▅  ̄ ◢ *Mooncat~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.72.50.186 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1616564091.A.08C.html

03/24 13:37, 3年前 , 1F
關鍵字: function pointer
03/24 13:37, 1F

03/24 13:48, 3年前 , 2F
要執行位址 0 的程式碼
03/24 13:48, 2F
※ 編輯: kandrew (203.72.50.186 臺灣), 03/24/2021 14:00:10

03/24 15:08, 3年前 , 3F
這應該是出現在單晶片用來做出問題reset的
03/24 15:08, 3F

03/24 15:11, 3年前 , 4F
跳回去並且重新執行 擺在0x0000的程式碼
03/24 15:11, 4F

03/24 15:12, 3年前 , 5F
有點像嵌入式應用的error handling,出錯強制重跑
03/24 15:12, 5F

03/24 15:13, 3年前 , 6F
跑一些register reset/initialization的流程
03/24 15:13, 6F

03/24 15:14, 3年前 , 7F
關鍵字就是一樓講的
03/24 15:14, 7F

03/24 15:15, 3年前 , 8F
你可以試著找找function pointer
03/24 15:15, 8F

03/24 15:16, 3年前 , 9F
推樓上,位置0x0通常是放reset中斷函式的位置,當有
03/24 15:16, 9F

03/24 15:16, 3年前 , 10F
錯誤發生時,手動近reset函式,重新設定系統參數,
03/24 15:16, 10F

03/24 15:16, 3年前 , 11F
再跳到main開始重新跑
03/24 15:16, 11F

03/24 16:20, 3年前 , 12F
對,中斷向量相關的細節可以參考晶片的開發手冊
03/24 16:20, 12F

03/25 12:33, 3年前 , 13F
這行的動作是把program counter這個暫存器填0
03/25 12:33, 13F

03/25 12:33, 3年前 , 14F
記憶體0的位址如推文所說 通常是中斷向量表
03/25 12:33, 14F
文章代碼(AID): #1WMizx2C (C_and_CPP)
文章代碼(AID): #1WMizx2C (C_and_CPP)