看板 C_and_CPP 關於我們 聯絡資訊
請問以下函式 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
james732: 關鍵字: function pointer 03/24 13:37
descent: 要執行位址 0 的程式碼 03/24 13:48
※ 編輯: kandrew (203.72.50.186 臺灣), 03/24/2021 14:00:10
james732: 這應該是出現在單晶片用來做出問題reset的 03/24 15:08
cuteSquirrel: 跳回去並且重新執行 擺在0x0000的程式碼 03/24 15:11
cuteSquirrel: 有點像嵌入式應用的error handling,出錯強制重跑 03/24 15:12
cuteSquirrel: 跑一些register reset/initialization的流程 03/24 15:13
cuteSquirrel: 關鍵字就是一樓講的 03/24 15:14
TCPipv6: 你可以試著找找function pointer 03/24 15:15
a1781781781: 推樓上,位置0x0通常是放reset中斷函式的位置,當有 03/24 15:16
a1781781781: 錯誤發生時,手動近reset函式,重新設定系統參數, 03/24 15:16
a1781781781: 再跳到main開始重新跑 03/24 15:16
cuteSquirrel: 對,中斷向量相關的細節可以參考晶片的開發手冊 03/24 16:20
chuegou: 這行的動作是把program counter這個暫存器填0 03/25 12:33
chuegou: 記憶體0的位址如推文所說 通常是中斷向量表 03/25 12:33