[問題]C 語言問題

作者: kandrew (藍天白雲~~)   2021-03-24 13:34:46
請問以下函式
void (* resetFunc) (void) = 0;
這段程式有什麼功用?
然後在程式中,做了判斷如下
if (error == 1)
{
resetFunc();
}
是否代表程式又從頭執行嗎? 謝謝您的回覆
作者: james732 (好人超)   2021-03-24 13:37:00
關鍵字: function pointer
作者: descent (「雄辯是銀,沉默是金」)   2021-03-24 13:48:00
要執行位址 0 的程式碼
作者: james732 (好人超)   2021-03-24 15:08:00
這應該是出現在單晶片用來做出問題reset的
作者: cuteSquirrel (松鼠)   2021-03-24 15:11:00
跳回去並且重新執行 擺在0x0000的程式碼有點像嵌入式應用的error handling,出錯強制重跑跑一些register reset/initialization的流程關鍵字就是一樓講的
作者: TCPipv6 (TCP IPv6)   2021-03-24 15:15:00
你可以試著找找function pointer
作者: a1781781781 (嘎了給給)   2021-03-24 15:16:00
推樓上,位置0x0通常是放reset中斷函式的位置,當有錯誤發生時,手動近reset函式,重新設定系統參數,再跳到main開始重新跑
作者: cuteSquirrel (松鼠)   2021-03-24 16:20:00
對,中斷向量相關的細節可以參考晶片的開發手冊
作者: chuegou (chuegou)   2021-03-25 12:33:00
這行的動作是把program counter這個暫存器填0記憶體0的位址如推文所說 通常是中斷向量表

Links booklink

Contact Us: admin [ a t ] ucptt.com