我已经看了十几种不同的方法来重置我的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我很乐意尝试)
答案 0 :(得分:0)
在基于 ARM 的微控制器上,您可以调用 NVIC_SystemReset()
。
所有基于 ARM 的微控制器都需要实现这一点。
这很有用,因为地址 0 处的 resetFunc()
可能不适用于较新的基于 ARM 的微控制器。
答案 1 :(得分:-1)
我认为您正在尝试在arduino代码编辑器中编写汇编代码。 我告诉你一件事。默认情况下,Arduino代码编辑器不支持汇编语言代码。您可以通过下面介绍的过程在arduino代码编辑器中编写汇编语言代码:
警告:我们将修改arduino源代码来执行此操作。
获取Arduino IDE的源代码:https://github.com/arduino/arduino
解压缩下载的zip文件,您将获得一个名为Arduino-master的文件夹
在您选择的文本编辑器中打开Sketch.java文件。 sketch.java的位置是:Arduino-master / app / src / processing / app / Sketch.java
插入.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
搜索: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" };
}
保存Sketch.java
在您选择的文本编辑器中打开Compiler.java。 Compiler.java的位置是:Arduino-master / app / src / processing / app / debug / Compiler.java
搜索:compileFiles(
在命令findFilesInFolder()中,将大写S
替换为小写s
。
重复步骤8:3次以上......(总共4次)
保存Compiler.java文件
从http://www.oracle.com下载最新版本的java SE 8u111
下载并安装任何java命令行工具。但我会推荐Apache ANT。
如果您是Windows用户:
您可以在此处下载:http://ant.apache.org/
有关在Windows上下载和安装的更多帮助:https://www.mkyong.com/ant/how-to-install-apache-ant-on-windows/
如果您是Mac用户:
您需要使用Homwbrew安装它:
安装Homebrew:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
然后安装Apache ANT:
brew install ant
在命令行中,转到Arduino-master/build
使用ant build
构建Arduino IDE,它应以Build Successful消息结束。
使用以下代码打包Arduino IDE:ant dist
它会要求您输入版本号并提供建议,例如[0105]。只需用点和asm输入建议的数字即可。例如:如果建议是[0105],则输入:1.0.5.asm
此命令可能需要6-10分钟才能完成。 (取决于您的计算机的速度)
然后你必须得到Build Successful !!!
支持汇编语言编程的Arduino IDE可以在新创建的.zip文件中找到
解压缩文件并安装Arduino IDE应用程序。
现在,您应该能够编写汇编程序而不会在Arduino IDE中出现错误。
如果您有任何问题,请随时询问。