我不确定您的应用程序,但这可能只是您遇到相同问题的几个功能中的第一个:我如何让电路板一次做多个事情?有很多解决方案,但一个好的开始是superloop。Michael Pont 写了一本不错的嵌入式 C 编程入门书,名为Embedded C。从他的大学网站上可以找到他关于这个主题的讲座的一些
笔记。
归结起来,您的程序流程应如下所示:
initialization_stuff();
other_inititialization_stuff();
while(1)
{
do_something();
do_something_else();
do_something_also();
} // do it again!
这些do_something()
功能是您的应用程序实际上打算做的事情。您可能会阅读一些传感器,对其做出决定,然后将您的决定结果付诸实践。在几乎所有嵌入式应用程序中,您都想再做一次。该程序将继续运行,直到有人拔掉它。您将在循环中检查该按钮行(if
您在上面编写的语句,尽管没有else
) 。while(1)
您要执行的此特定操作(软件重置)在您的设备上并不简单。没有可以戳的寄存器来引发重置。最好只在 RST 上连接一个接地的按钮。然后,您甚至不必担心对其进行编程。但如果您必须在软件中执行此操作,请查看 ARM 的此文档。你不能再打电话main()
了:
void reset (void)
{
((void (code *) (void)) 0x0000) ();
}
这不会重置您的外围设备,但至少会重新初始化您的代码。