[问题]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