如何用C语言为AVR-Studio编写自定义reset()函数?

2023-12-12

所以我被分配了为 AVR 编译编写自定义 Reset() 函数的任务。

我得到了这个信息 - “Atmega128 和 Pic24e 在程序地址 0x0 处有复位中断。编写一个函数 Reset() 来复位程序。我还听说强制系统重新启动的一个简单方法是发送它进入无限循环。

你可以说我疯了,但这只是写这么简单吗:

function reset(){
  goto 0x00000000;
}

不确定你是否可以做到这一点,并且不需要寻找复杂的解释,因为我很确定这是一个通用问题。如果可以的话,简短而甜蜜:)


goto 0x00000000重新启动程序,但所有 SFR 均未初始化,中断也未初始化。根据代码的复杂程度,可能会发生错误。你不应该使用goto对于软件重置,这是不好的方法。

Instead AVR Libc 参考手册指定软件复位时看门狗定时器的使用。通过使用avr/wdt您可以轻松启用看门狗定时器。

#include <avr/wdt.h>

#define soft_reset()        \
do                          \
{                           \
    wdt_enable(WDTO_15MS);  \
    for(;;)                 \
    {                       \
    }                       \
} while(0)

来自 AVR Libc

警告!较旧的 AVR 会在重置时禁用看门狗定时器。对于这些较旧的 AVR,通过启用看门狗进行软重置很容易,因为看门狗将在重置后被禁用。在较新的 AVR 上,一旦启用看门狗,即使在重置后,它也会保持启用状态!对于这些较新的 AVR,需要将一个函数添加到 .init3 部分(即在启动代码期间,main() 之前),以尽早禁用看门狗,这样它就不会不断重置 AVR。

在启动时禁用看门狗。

#include <avr/wdt.h>

// Function Pototype
void wdt_init(void) __attribute__((naked)) __attribute__((section(".init3")));


// Function Implementation
void wdt_init(void)
{
    MCUSR = 0;
    wdt_disable();

    return;
}

.init3之前执行过main函数,看一下内存部分更多细节。

我得到了这个信息 - “Atmega128 和 Pic24e 在程序地址 0x0 处有复位中断。

在大多数情况下是的,但如果您使用引导加载程序,起始地址可能会延迟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用C语言为AVR-Studio编写自定义reset()函数? 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • gcc 与 clang:符号剥离

    gcc 和 AMD Open64 opencc 都有一个 s选项 剥离符号表和重定位信息 到目前为止我还没能在 Clang LLVM 中找到相同的选项 它存在吗 您可以使用stripbinutils 中的实用程序 实际上 llvm ld 有
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj

随机推荐

  • 错误 1 ​​运算符“*”不能应用于“方法组”和“双精度”类型的操作数

    我相信我想做的事情非常简单 但我收到了错误 运算符 不能应用于 method group 和 double 类型的操作数 如果选中该复选框 我想将 dayrental 中存储的天数乘以 19 95 我收到错误消息说我不能 因为日租是一种方法
  • MongoDB:如何为集合中的每个文档设置一个新字段等于另一个字段的值[重复]

    这个问题在这里已经有答案了 我需要运行迁移脚本以将值 每个文档中已有的值 插入到同一文档的数组中 必须对我收藏的每个文档执行此操作 不需要选择查询 如何改变这个 id ObjectID 5649a7f1184ebc59094bd8b3 al
  • DirectShow - IAMStreamConfig::SetFormat 和 ICaptureGraphBuilder2::RenderStream 的调用顺序会在某些摄像机中产生问题

    在捕获和处理数据之前 我必须配置摄像机的显示分辨率 最初我是按如下方式进行的 创建了所有必要的接口 添加了相机和渲染器滤镜 RenderStream 是否具有捕获和预览 PIN 类别 然后循环遍历 AM MEDIA TYPE 结构并设置参数
  • 将字节字符串列表转换为字节数组(字节流)

    我有一个表示字节的十六进制字符串列表 其形式为 FF 我想将整个列表转换为字节流 以便我可以通过套接字 Python 3 发送它 看起来字节数组类型可以工作 但我找不到任何方法可以直接将列表转换为字节数组 我可以在循环中手动执行此操作 但我
  • Bash 搜索文件中的模式,将模式替换为包含 Git 分支名称的代码

    我有一个 README md 文件 我想在其中替换文本标识符 CODESHIP CODE 带有一行代码 特别是包含 git 分支名称的构建状态图像代码片段 我想它看起来会是这样的 放置当前分支git rev parse abbrev ref
  • 单击 css 内容属性

    以下代码在标题标记之前添加图像 单击标题之前添加的图像时 如何添加 javascript 或 jquery 代码来处理某些任务 h1 before content url smiley gif Html 代码是 h1 Hi h1 您不能将事
  • 验证两个属性相等

    是否可以验证类型的两个对象属性string是平等的使用Joi I found Joi ref 但我想知道是否还有其他方法可以做到这一点 尤其是作为Joi ref 似乎不支持any error 是的 可以检查对象的两个属性是否相同 并使用Jo
  • C# 调暗屏幕、多个 Windows 窗体的最佳方法?

    因此 我编写了代码来从父级创建一个新的 Windows 窗体 该窗体为全屏 黑色且不透明度为 80 以创建变暗效果 然后上面会显示另一个表格以显示进度 代码目前如下所示 this Enabled false frmDimScreen Bac
  • 如何制作一个脚本在我的默认 sqlite3 数据库 django 中插入数据

    我已经在 Django 中定义了我的模型和所有内容 如果用户通过我的应用程序注册 则用户可以在数据库中注册 问题是我有一个包含大量用户的 JSON 文件 我想做一项工作 允许我读取此文件并将所有用户插入我的数据库中 最好的方法是什么 如何在
  • 无法找到管道“ ” Angular2 自定义管道

    我似乎无法修复这个错误 我有一个搜索栏和一个 ngFor 我正在尝试使用这样的自定义管道来过滤数组 import Pipe PipeTransform from angular core import User from user user
  • Java:运行JAR文件时如何获取文件的路径

    当我使用相对路径时 我可以从 Eclipse 运行我的 Java 程序 但是当我将它作为 JAR 文件运行时 该路径不再起作用 在我的 src components SettingsWindow java 中 我有 ObjectInputS
  • 如何在 pyqt 中使用 Qtableview /QAbstractTableModel 存储和检索自定义数据(使用 QtCore.Qt.UserRole?)?

    我对模型 视图框架的使用还很陌生 并且遇到了一些麻烦 我在小部件上使用 Qtableview 和 QAbstractTableModel 我试图使用 QAbstractTableModel 中的 data 方法在 QModelIndex 中
  • 实数、浮点数、货币

    为什么当我在 SQL Server 中将 40 54 的值保存到 Real 类型的列时 它返回给我的值更像是 40 53999878999 而不是 40 54 我已经见过几次这种情况 但一直不明白为什么会发生这种情况 有其他人遇到过这个问题
  • OpenCV。匹配时绘制矩形

    我使用 OpenCv 来查找与参考图像上的模板匹配的区域 当代码找到与模板匹配的区域时 在该区域周围绘制一个矩形 但我想要的是当代码找不到该区域时 代码不会绘制任何矩形 code IplImage res CvPoint minloc ma
  • R-markdown 自包含

    我正在使用 R markdown 来编写一些报告 我用独立的图形来做 因为我通过电子邮件发送它 这一直有效直到最近 但现在图像不再显示 方框中出现十字错误 可能是我更新了RStudio的版本 我在脚本的顶部使用了这个 title blabl
  • Fluent NHibernate Composite ID表问题

    我对 nhibernate 有点陌生 遇到了一个问题 我有以下表格 Table 1 我在使用复合 id 做事时遇到了很多问题 例如this 我建议做我所做的事情 即创建一个新类型 它只包含复合 id 用于 id 的内容 然后像这样映射它 C
  • Objective-C中如何将字节值转换为int

    请告诉我如何在 iPhone 编程中将 Objective C 中的字节转换为 NSInteger int 字节 是什么意思 如果要将表示整数值的单字节转换为 int 或 NSInteger 类型 只需使用 Byte b 123 NSInt
  • 全套组合组合 3 套

    我需要生成组合三个不同子集所获得的完整组合集 Set 1 从 13 个元素的向量中选择任意 4 个数字 Set 2 从 3 个元素的向量中选择任意 2 个数字 Set 3 从 9 个元素的向量中选择任意 2 个数字 示例 A 组的向量 4
  • 将 DataContractSurrogate 与 WCF REST 结合使用

    如何将 DataContractSurrogate 用于我的 WCF REST 服务 使用 WebServiceHostFactory 托管 我没有看到添加一个的方法 即使我添加自定义 IOperationBehavior WebServi
  • 如何用C语言为AVR-Studio编写自定义reset()函数?

    所以我被分配了为 AVR 编译编写自定义 Reset 函数的任务 我得到了这个信息 Atmega128 和 Pic24e 在程序地址 0x0 处有复位中断 编写一个函数 Reset 来复位程序 我还听说强制系统重新启动的一个简单方法是发送它