通过代码重置Arduino

时间:2016-12-01 18:08:25

标签: arduino

我已经看了十几种不同的方法来重置我的arduino,从连接引脚到复位引脚和陪审团操纵奇怪的代码。 他们都没有工作。

每个人似乎都在使用的一点代码是

void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile ("  jmp 0");  
} 

我的arduino回应

  

C:\ Users \ Leonardo \ AppData \ Local \ Temp \ ccGUYdTQ.s:2259:错误:错误   指令`jmp 0'

然后无法上传代码。我不知道该怎么做。我的完整代码可以在http://pastebin.com/CA2Ms2hB找到,但它很大,我不确定它是否会有所帮助。

如果有人能帮助我理解为什么要使用software_Reset();我真的很感激,我在这里结束了。

(如果你有其他方法可以重置arduino我很乐意尝试)

2 个答案:

答案 0 :(得分:0)

在基于 ARM 的微控制器上,您可以调用 NVIC_SystemReset()

所有基于 ARM 的微控制器都需要实现这一点。

这很有用,因为地址 0 处的 resetFunc() 可能不适用于较新的基于 ARM 的微控制器。

答案 1 :(得分:-1)

我认为您正在尝试在arduino代码编辑器中编写汇编代码。 我告诉你一件事。默认情况下,Arduino代码编辑器不支持汇编语言代码。您可以通过下面介绍的过程在arduino代码编辑器中编写汇编语言代码:

警告:我们将修改arduino源代码来执行此操作。

  1. 获取Arduino IDE的源代码:https://github.com/arduino/arduino

  2. 解压缩下载的zip文件,您将获得一个名为Arduino-master的文件夹

  3. 在您选择的文本编辑器中打开Sketch.java文件。 sketch.java的位置是:Arduino-master / app / src / processing / app / Sketch.java

  4. 插入.s功能:

    一个。搜索:sc.isExtension(“c”);

    你会看到类似的东西:

    //3. then loop over the code[] and save each .java file
    
    for (SketchCode sc : code){
        if(sc.isExtension("c") || sc.isExtension("cpp") || sc.isExtension("h")){
            //no pre-processing services necessary for java files
    

    湾在if条件的末尾添加sc.isExtension(“s”)。现在您的代码应如下所示:

    //3. then loop over the code[] and save each .java file
    
    for (SketchCode sc : code){
        if(sc.isExtension("c") || sc.isExtension("cpp") || sc.isExtension("h") || sc.isExtension("s")){
            //no pre-processing services necessary for java files
    
  5. 搜索:String [] getExtensions()

    你会看到一些像这样的代码:

    /**
      * Returns a String[] array of proper extensions.
      */
    public String[] getExtensions() {
        return new String[] { "ino", "pde", "c", "cpp", "h" };
    }
    

    在返回的数组中插入“s”。所以,现在你的代码应该是这样的:

    /**
      * Returns a String[] array of proper extensions.
      */
    public String[] getExtensions() {
        return new String[] { "ino", "pde", "c", "cpp", "h", "s" };
    }
    
  6. 保存Sketch.java

  7. 在您选择的文本编辑器中打开Compiler.java。 Compiler.java的位置是:Arduino-master / app / src / processing / app / debug / Compiler.java

  8. 搜索:compileFiles(

    在命令findFilesInFolder()中,将大写S替换为小写s

  9. 重复步骤8:3次以上......(总共4次)

  10. 保存Compiler.java文件

  11. http://www.oracle.com下载最新版本的java SE 8u111

  12. 下载并安装任何java命令行工具。但我会推荐Apache ANT。

    如果您是Windows用户:

    如果您是Mac用户:

    • 您需要使用Homwbrew安装它:

    • 安装Homebrew:

      ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
      
    • 然后安装Apache ANT:

      brew install ant
      
  13. 在命令行中,转到Arduino-master/build

  14. 的目录
  15. 使用ant build构建Arduino IDE,它应以Build Successful消息结束。

  16. 使用以下代码打包Arduino IDE:ant dist

    它会要求您输入版本号并提供建议,例如[0105]。只需用点和asm输入建议的数字即可。例如:如果建议是[0105],则输入:1.0.5.asm

    此命令可能需要6-10分钟才能完成。 (取决于您的计算机的速度)

    然后你必须得到Build Successful !!!

  17. 支持汇编语言编程的Arduino IDE可以在新创建的.zip文件中找到

  18. 解压缩文件并安装Arduino IDE应用程序。

  19. 现在,您应该能够编写汇编程序而不会在Arduino IDE中出现错误。

    如果您有任何问题,请随时询问。