点击重置按钮后、我想运行一个小例程、然后跳转到代码中的特定行。 是否有人可以分享如何做到这一点?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
点击重置按钮后、我想运行一个小例程、然后跳转到代码中的特定行。 是否有人可以分享如何做到这一点?
也许您应该解释您的目标是什么。 如果说 C 已经提供了这个代码,那只需要稍微的 glib——特定的代码行是 main()的第一行。
如果要在调用 main 之前执行某些操作、可以使用其中一个"引导挂钩"、例如_system_pre_init [参考 CC 用户指南(SLAU132S)第6.9.1]节。
C 不允许您从某个函数中的某一行跳转到另一个函数中的某个(其他)行。 您可以编写汇编代码来执行此操作、但处理栈和寄存器分配是您的问题。
我有一个对讲机上有一个组 ID。 此 ID 也存在于 MSP 中。 我在 MSP 中有一个特定位置、在该位置、如果用户希望执行"重新启动"排序并重新开始、则还存在默认组 ID。 我想按重置、但在 MSP 上、跳转至 NMI (或类似矢量)、此时我清除现有组 ID 并将默认组 ID 重新加载到对讲机上... 我已经有一个例程来写入对讲机。 我希望在 ISR 内我可以清空 FRAM 空间,然后我可以跳转到 main,并且从这里有一个标志可以调用无线电例程来重新配置该特定的无线电寄存器.....
1. 我想使用哪种 ISR?
2. 我是否可以让 ISR 在内部执行一些小任务、然后跳转到 main、或者我基本上需要将所有这些都放在 main 的条件中?
谢谢
虽然 C 确实提供了一种可以跳转到任何位置的机制,但它要求您首先执行 setjum(),以便它可以存储执行该跳转所需的信息。
但您真正需要的是一种在复位时执行特殊操作的方法。 我处理这个问题的方法是在复位后检查一个特殊条件。 例如、我有4个按钮供用户按下、但通常一次按下一个。 在上电时、我检查是否按下了两个特定的按钮。 如果是、我调用配置代码。 一旦完成、操作将照常恢复。
这听起来像是恢复出厂设置、或者可能是一次性注册的机制。 对于这些、您不希望它定期或意外发生。 系统重置(假定)始终发生-电池电量耗尽、有人在附近产生火花、猫在重置按钮上行走。
还有其他按钮吗? 我看到的一件事是、您按下该按钮、然后按下"Reset"按钮;main 将查看该按钮是否被按下(可能持续一段时间)并相应地执行操作。 如果您有一个 UART 命令解释器、则可能有一个命令擦除相关 FRAM、然后生成一个软件生成的复位(通过您最近的问题之一)。 目标是使它变得足够麻烦、以免意外发生。