TI-RSLK 模块 10 - 讲座视频 - 调试实时系统 - 中断
Loading the player...
将在30s后自动为您播放下一课程
大家好, 我是 在本视频中, 现在,我们要介绍它们是什么、 我们如何使用它们。 我们将讨论中断向量 然后,我们将 我们如何同步中断 线程。 这将是一种 软件工具,它帮助 系统的复杂性。 什么是中断? 从根本上说, 它像是函数调用, 因此,计算机中一个 一个物理事件, 因此,它将是一个称为 函数,它会得到 这就是中断 现在,我们要 因为我们将有 通常具有的主程序。 我们将具有 此类中断驱动线程, 物理事件。 那么,通过这种方法, 软件的 把我们软件的所有 主程序中。 因此,这将是一种 技术,它称为多线程 我们将把它们 我们可以把它们 或者当电机过载将 用于触发中断的警报 这些事件。 某些计算机把它们 内部事件。 我们的系统中不会 但我们将有 换句话说, 一个会触发中断的计时器, 执行某段程序。 这在我们的实时 在系统 将讨论 触发器是导致 因此,我们可以提出 对于一个嵌入式系统,哪些 我们通常可以非常 也就是说,如果 某个事件需要 触发一个中断。 例如,如果我们 并且新数据已经 那么我们将处理它。 新数据的到达 如果我们有一个输出 将在输出设备 换句话说,它需要一个 正如我说过的, 具体来说,我们将 来生成周期性中断。 我们为什么使用中断? 这是因为,如果我们考虑 如果我必须执行两件 事情,如果我必须把它们 那么我们现在 操作 我的软件必须执行的 任务现在相互 这样一来,如果执行 c 或者,如果 而利用中断, 我将为其中的每项 无论它是周期性触发器、 触发器,都没有关系。 现在,我已经 完成的是,我现在已经分离了 并行运行。 这称为并发。 只有一个 我们将看到这是如何发生的。 但是,它们在逻辑上是分离的。 如果我想把这些 我将使用一个消息 我们在线程 数据。 但它允许我 使用而言很自然的方式 我们将反复不断地实践中断的方式。 对中断来说 是对重要事件 例如小车撞到墙壁了。 这时,最好停止电机。 这就是 执行的操作。 撞墙,停止电机, 此外,中断还用于处理我们 从不会预期 但如果它们 快速处理它们。 好的。 那么让我们讨论一下细节。 正如我说过的, 线程是正在 执行或操作。 在一个双线程 前台线程、主程序 服务程序。 再说一次,后台线程 软件的特征。 中断就是这么回事儿。 那么,如果它是 这意味着所有 都尝试解决同一个 在线程之间共享同步 那么,我们要实现 共享全局变量。 无论它们是全局变量 它永久性地 好的。 那么,我们将在 我们将使用一个线程对它 对它进行读取。 或者,通过这个线程对它进行 我们要将该全局变量 数据的方法。 如果我们 将要发生的是, 触发器将触发。 那么正在执行的该软件将挂起。 另一个线程在这里执行。 它从该位置发生的 因此,如果这是 那么接下来要 这个东西将恢复运行。 这就是我如何 计数器在系统上 我们要把该数据 更改程序计数器, 当需要恢复 将从堆栈 因此,几微秒 在这里返回。 让我们更深入地进行探究 发生的实际步骤。 那么,我们有触发事件。 在本例中,它将是 过程。 它将设置 从而触发 将要发生的是,它会 完成它的 将一组 我们将在下一张 把连接寄存器 这里的代码意味着 有几百个 因此有一个寄存器, 设置,然后它将 该中断服务子程序。 这就是整个过程。 请记住它。 这就是目的。 中断就是这么回事儿 一个硬件触发器。 它用作一个硬件标志。 它将被设置。 它将触发 事件的执行。 这就是 当我们运行中断服务程序时, 在这里,我们把它 我们将执行需要 比如与全局 那么我们完成了。 我们将执行 编译器 那么,如果在我 连接寄存器是 使八个 从而使我返回到 完成的指令。 好的。 那么,这里是一些更多细节。 这些还是 当我们完成 会使寄存器入栈。 这些是实际的 程序状态寄存器, 旧程序计数器, R12,R3,R2,R1,R0。 您会注意到它没有 如果需要,编译器 它执行向量获取。 有一大堆向量, 我们将在下一张 这是位于低位 它是一个存储在 32 中断服务 SysTick 我们再次把它 那么,基本来说,它要 更改 现在,主掩码中的 中断而言 事实上,即使我 它也不会 这里允许一个中断 我们一会儿 总之,当发生 这意味着从前台 它将使八个 从而保存它所处 然后,当它执行 寄存器会重新放置到 然后在它中断的 好的。 那么,我说过 有很多的中断 我们将在本章中 它是中断向量号15。 我们将使用一系列的 我们将在后续 当我们开始使用 我们可以使用这些 实验 因此,当小车 将会有一个端口产生IRQ 如果您想在您的 请在CCS.C中查找这个称为 的文件中进行查看。 该文件中给出了所有向量。 中断向量表 起始处。 为了使用中断, 在您的系统中使用 那么,如果您定义一个称为 它将成为在发生 SysTick 我曾提到过优先级。 中断的作用 是使我们的 那么,我们有一个主程序 我们始终有该程序 同时我们可以有 我们看过这张幻灯片。 我在这里有五个线程。 其中的某些线程 比其他线程更重要。 比如小车撞到墙。 这是一件糟糕的事情。 我们应快速地 因此,我要做的是, 线程分配 我可以使它们 这样,我平等地 没有任何线程 但是,我们其实 其中0为最高优先级,7 我可以,或者说必须为我的 因此,如果我 那么我将为我的每个 现在,它所做的 假设 因此我要使它具有优先级一。 b 它具有优先级二。 假设 但它们的优先级相同。 那么它们不必是唯一的。 那么现在,如果我正在 这四个中断中的任何一个 中断的作用。 但是,如果我正在运行 是的,它最重要。 此时发生了其他 该中断将延迟,直到 然后才允许它执行。 另一方面, 一个优先级为三的 现在,一个优先级为二的 当它完成后, 但是,如果我正在执行 并且另一个优先级 它将延迟。 因此,如果某个中断具有 打断或中断另一个中断。 它其实是 想弄清编译器 中断处理的机制, 但 最高有效字节中, 在该编译器中, 存储该寄存器的 这将指定 在其他中断之中, 语法稍有不同。 因此,如果我想设串行端口A2的优先级, 我将访问一个 按照这种方法 您可以看到, 都会将它们对应的 这有点儿高, 因此,当我们具有多个 它使系统能够确定一个中断 如果您想使它变得很简单, 优先级设置为彼此相等。 这样就没有中断会 这就是您想要的结果。 您也可以通过这种方法来实现它。 我们讨论了中断。 它是一个被执行的线程。 我们将在本课程中 数据结构,我们在处理 这些数据结构可能仅仅是一个标志。 如果一个线程设置一个 变量中写入 然后其他线程 并看到该标志 我们要在该试验中 是一个邮箱,它其实 如果我们 比如 如果中断读取了 我们将获取 把它存储在一个 称为 它是一个全局变量。 然后,我们要 然后,将处理它的 该标志, 数据是否有效。 如果该标志已设置,那么 可以在下一次清除该标志。 那么,指示一个信号量。 现在,如果您了解 并不需要的 或者在我们开始执行 在我们开始执行 将使用另一种称为 该结构允许数据 方法的方式流入。 但是,我们直到开始执行实验 总之,中断是一种 它允许我们 我们将使用堆栈 中断向量是硬编码 所有中断 何处。 再说一次, 是针对触发器 该向量是此中断 它将一组 设置连接寄存器。 该来自中断的 函数的返回值类似, 等于 此时该返回值 出栈。 现在,存在 我们将对我们感兴趣的 如果我们有多个中断, 分配优先级。 此外,处理器中 它位于主掩码 将通过执行启用中断 那么,启用中断 如果您想 还有一个 这是一个内置在 它将设置 它只是延迟中断。 再说一次,我们 全局变量或私有 来共享数据。 本实验比较难于实施, 本章而言,实际上它 因此,我们 了解如何使用 今天就开始。 好的。 祝您愉快。
大家好, 我是 在本视频中, 现在,我们要介绍它们是什么、 我们如何使用它们。 我们将讨论中断向量 然后,我们将 我们如何同步中断 线程。 这将是一种 软件工具,它帮助 系统的复杂性。 什么是中断? 从根本上说, 它像是函数调用, 因此,计算机中一个 一个物理事件, 因此,它将是一个称为 函数,它会得到 这就是中断 现在,我们要 因为我们将有 通常具有的主程序。 我们将具有 此类中断驱动线程, 物理事件。 那么,通过这种方法, 软件的 把我们软件的所有 主程序中。 因此,这将是一种 技术,它称为多线程 我们将把它们 我们可以把它们 或者当电机过载将 用于触发中断的警报 这些事件。 某些计算机把它们 内部事件。 我们的系统中不会 但我们将有 换句话说, 一个会触发中断的计时器, 执行某段程序。 这在我们的实时 在系统 将讨论 触发器是导致 因此,我们可以提出 对于一个嵌入式系统,哪些 我们通常可以非常 也就是说,如果 某个事件需要 触发一个中断。 例如,如果我们 并且新数据已经 那么我们将处理它。 新数据的到达 如果我们有一个输出 将在输出设备 换句话说,它需要一个 正如我说过的, 具体来说,我们将 来生成周期性中断。 我们为什么使用中断? 这是因为,如果我们考虑 如果我必须执行两件 事情,如果我必须把它们 那么我们现在 操作 我的软件必须执行的 任务现在相互 这样一来,如果执行 c 或者,如果 而利用中断, 我将为其中的每项 无论它是周期性触发器、 触发器,都没有关系。 现在,我已经 完成的是,我现在已经分离了 并行运行。 这称为并发。 只有一个 我们将看到这是如何发生的。 但是,它们在逻辑上是分离的。 如果我想把这些 我将使用一个消息 我们在线程 数据。 但它允许我 使用而言很自然的方式 我们将反复不断地实践中断的方式。 对中断来说 是对重要事件 例如小车撞到墙壁了。 这时,最好停止电机。 这就是 执行的操作。 撞墙,停止电机, 此外,中断还用于处理我们 从不会预期 但如果它们 快速处理它们。 好的。 那么让我们讨论一下细节。 正如我说过的, 线程是正在 执行或操作。 在一个双线程 前台线程、主程序 服务程序。 再说一次,后台线程 软件的特征。 中断就是这么回事儿。 那么,如果它是 这意味着所有 都尝试解决同一个 在线程之间共享同步 那么,我们要实现 共享全局变量。 无论它们是全局变量 它永久性地 好的。 那么,我们将在 我们将使用一个线程对它 对它进行读取。 或者,通过这个线程对它进行 我们要将该全局变量 数据的方法。 如果我们 将要发生的是, 触发器将触发。 那么正在执行的该软件将挂起。 另一个线程在这里执行。 它从该位置发生的 因此,如果这是 那么接下来要 这个东西将恢复运行。 这就是我如何 计数器在系统上 我们要把该数据 更改程序计数器, 当需要恢复 将从堆栈 因此,几微秒 在这里返回。 让我们更深入地进行探究 发生的实际步骤。 那么,我们有触发事件。 在本例中,它将是 过程。 它将设置 从而触发 将要发生的是,它会 完成它的 将一组 我们将在下一张 把连接寄存器 这里的代码意味着 有几百个 因此有一个寄存器, 设置,然后它将 该中断服务子程序。 这就是整个过程。 请记住它。 这就是目的。 中断就是这么回事儿 一个硬件触发器。 它用作一个硬件标志。 它将被设置。 它将触发 事件的执行。 这就是 当我们运行中断服务程序时, 在这里,我们把它 我们将执行需要 比如与全局 那么我们完成了。 我们将执行 编译器 那么,如果在我 连接寄存器是 使八个 从而使我返回到 完成的指令。 好的。 那么,这里是一些更多细节。 这些还是 当我们完成 会使寄存器入栈。 这些是实际的 程序状态寄存器, 旧程序计数器, R12,R3,R2,R1,R0。 您会注意到它没有 如果需要,编译器 它执行向量获取。 有一大堆向量, 我们将在下一张 这是位于低位 它是一个存储在 32 中断服务 SysTick 我们再次把它 那么,基本来说,它要 更改 现在,主掩码中的 中断而言 事实上,即使我 它也不会 这里允许一个中断 我们一会儿 总之,当发生 这意味着从前台 它将使八个 从而保存它所处 然后,当它执行 寄存器会重新放置到 然后在它中断的 好的。 那么,我说过 有很多的中断 我们将在本章中 它是中断向量号15。 我们将使用一系列的 我们将在后续 当我们开始使用 我们可以使用这些 实验 因此,当小车 将会有一个端口产生IRQ 如果您想在您的 请在CCS.C中查找这个称为 的文件中进行查看。 该文件中给出了所有向量。 中断向量表 起始处。 为了使用中断, 在您的系统中使用 那么,如果您定义一个称为 它将成为在发生 SysTick 我曾提到过优先级。 中断的作用 是使我们的 那么,我们有一个主程序 我们始终有该程序 同时我们可以有 我们看过这张幻灯片。 我在这里有五个线程。 其中的某些线程 比其他线程更重要。 比如小车撞到墙。 这是一件糟糕的事情。 我们应快速地 因此,我要做的是, 线程分配 我可以使它们 这样,我平等地 没有任何线程 但是,我们其实 其中0为最高优先级,7 我可以,或者说必须为我的 因此,如果我 那么我将为我的每个 现在,它所做的 假设 因此我要使它具有优先级一。 b 它具有优先级二。 假设 但它们的优先级相同。 那么它们不必是唯一的。 那么现在,如果我正在 这四个中断中的任何一个 中断的作用。 但是,如果我正在运行 是的,它最重要。 此时发生了其他 该中断将延迟,直到 然后才允许它执行。 另一方面, 一个优先级为三的 现在,一个优先级为二的 当它完成后, 但是,如果我正在执行 并且另一个优先级 它将延迟。 因此,如果某个中断具有 打断或中断另一个中断。 它其实是 想弄清编译器 中断处理的机制, 但 最高有效字节中, 在该编译器中, 存储该寄存器的 这将指定 在其他中断之中, 语法稍有不同。 因此,如果我想设串行端口A2的优先级, 我将访问一个 按照这种方法 您可以看到, 都会将它们对应的 这有点儿高, 因此,当我们具有多个 它使系统能够确定一个中断 如果您想使它变得很简单, 优先级设置为彼此相等。 这样就没有中断会 这就是您想要的结果。 您也可以通过这种方法来实现它。 我们讨论了中断。 它是一个被执行的线程。 我们将在本课程中 数据结构,我们在处理 这些数据结构可能仅仅是一个标志。 如果一个线程设置一个 变量中写入 然后其他线程 并看到该标志 我们要在该试验中 是一个邮箱,它其实 如果我们 比如 如果中断读取了 我们将获取 把它存储在一个 称为 它是一个全局变量。 然后,我们要 然后,将处理它的 该标志, 数据是否有效。 如果该标志已设置,那么 可以在下一次清除该标志。 那么,指示一个信号量。 现在,如果您了解 并不需要的 或者在我们开始执行 在我们开始执行 将使用另一种称为 该结构允许数据 方法的方式流入。 但是,我们直到开始执行实验 总之,中断是一种 它允许我们 我们将使用堆栈 中断向量是硬编码 所有中断 何处。 再说一次, 是针对触发器 该向量是此中断 它将一组 设置连接寄存器。 该来自中断的 函数的返回值类似, 等于 此时该返回值 出栈。 现在,存在 我们将对我们感兴趣的 如果我们有多个中断, 分配优先级。 此外,处理器中 它位于主掩码 将通过执行启用中断 那么,启用中断 如果您想 还有一个 这是一个内置在 它将设置 它只是延迟中断。 再说一次,我们 全局变量或私有 来共享数据。 本实验比较难于实施, 本章而言,实际上它 因此,我们 了解如何使用 今天就开始。 好的。 祝您愉快。
大家好,
我是
在本视频中,
现在,我们要介绍它们是什么、
我们如何使用它们。
我们将讨论中断向量
然后,我们将
我们如何同步中断
线程。
这将是一种
软件工具,它帮助
系统的复杂性。
什么是中断?
从根本上说,
它像是函数调用,
因此,计算机中一个
一个物理事件,
因此,它将是一个称为
函数,它会得到
这就是中断
现在,我们要
因为我们将有
通常具有的主程序。
我们将具有
此类中断驱动线程,
物理事件。
那么,通过这种方法,
软件的
把我们软件的所有
主程序中。
因此,这将是一种
技术,它称为多线程
我们将把它们
我们可以把它们
或者当电机过载将
用于触发中断的警报
这些事件。
某些计算机把它们
内部事件。
我们的系统中不会
但我们将有
换句话说,
一个会触发中断的计时器,
执行某段程序。
这在我们的实时
在系统
将讨论
触发器是导致
因此,我们可以提出
对于一个嵌入式系统,哪些
我们通常可以非常
也就是说,如果
某个事件需要
触发一个中断。
例如,如果我们
并且新数据已经
那么我们将处理它。
新数据的到达
如果我们有一个输出
将在输出设备
换句话说,它需要一个
正如我说过的,
具体来说,我们将
来生成周期性中断。
我们为什么使用中断?
这是因为,如果我们考虑
如果我必须执行两件
事情,如果我必须把它们
那么我们现在
操作
我的软件必须执行的
任务现在相互
这样一来,如果执行
c
或者,如果
而利用中断,
我将为其中的每项
无论它是周期性触发器、
触发器,都没有关系。
现在,我已经
完成的是,我现在已经分离了
并行运行。
这称为并发。
只有一个
我们将看到这是如何发生的。
但是,它们在逻辑上是分离的。
如果我想把这些
我将使用一个消息
我们在线程
数据。
但它允许我
使用而言很自然的方式
我们将反复不断地实践中断的方式。
对中断来说
是对重要事件
例如小车撞到墙壁了。
这时,最好停止电机。
这就是
执行的操作。
撞墙,停止电机,
此外,中断还用于处理我们
从不会预期
但如果它们
快速处理它们。
好的。
那么让我们讨论一下细节。
正如我说过的,
线程是正在
执行或操作。
在一个双线程
前台线程、主程序
服务程序。
再说一次,后台线程
软件的特征。
中断就是这么回事儿。
那么,如果它是
这意味着所有
都尝试解决同一个
在线程之间共享同步
那么,我们要实现
共享全局变量。
无论它们是全局变量
它永久性地
好的。
那么,我们将在
我们将使用一个线程对它
对它进行读取。
或者,通过这个线程对它进行
我们要将该全局变量
数据的方法。
如果我们
将要发生的是,
触发器将触发。
那么正在执行的该软件将挂起。
另一个线程在这里执行。
它从该位置发生的
因此,如果这是
那么接下来要
这个东西将恢复运行。
这就是我如何
计数器在系统上
我们要把该数据
更改程序计数器,
当需要恢复
将从堆栈
因此,几微秒
在这里返回。
让我们更深入地进行探究
发生的实际步骤。
那么,我们有触发事件。
在本例中,它将是
过程。
它将设置
从而触发
将要发生的是,它会
完成它的
将一组
我们将在下一张
把连接寄存器
这里的代码意味着
有几百个
因此有一个寄存器,
设置,然后它将
该中断服务子程序。
这就是整个过程。
请记住它。
这就是目的。
中断就是这么回事儿
一个硬件触发器。
它用作一个硬件标志。
它将被设置。
它将触发
事件的执行。
这就是
当我们运行中断服务程序时,
在这里,我们把它
我们将执行需要
比如与全局
那么我们完成了。
我们将执行
编译器
那么,如果在我
连接寄存器是
使八个
从而使我返回到
完成的指令。
好的。
那么,这里是一些更多细节。
这些还是
当我们完成
会使寄存器入栈。
这些是实际的
程序状态寄存器,
旧程序计数器,
R12,R3,R2,R1,R0。
您会注意到它没有
如果需要,编译器
它执行向量获取。
有一大堆向量,
我们将在下一张
这是位于低位
它是一个存储在
32
中断服务
SysTick
我们再次把它
那么,基本来说,它要
更改
现在,主掩码中的
中断而言
事实上,即使我
它也不会
这里允许一个中断
我们一会儿
总之,当发生
这意味着从前台
它将使八个
从而保存它所处
然后,当它执行
寄存器会重新放置到
然后在它中断的
好的。
那么,我说过
有很多的中断
我们将在本章中
它是中断向量号15。
我们将使用一系列的
我们将在后续
当我们开始使用
我们可以使用这些
实验
因此,当小车
将会有一个端口产生IRQ
如果您想在您的
请在CCS.C中查找这个称为
的文件中进行查看。
该文件中给出了所有向量。
中断向量表
起始处。
为了使用中断,
在您的系统中使用
那么,如果您定义一个称为
它将成为在发生
SysTick
我曾提到过优先级。
中断的作用
是使我们的
那么,我们有一个主程序
我们始终有该程序
同时我们可以有
我们看过这张幻灯片。
我在这里有五个线程。
其中的某些线程
比其他线程更重要。
比如小车撞到墙。
这是一件糟糕的事情。
我们应快速地
因此,我要做的是,
线程分配
我可以使它们
这样,我平等地
没有任何线程
但是,我们其实
其中0为最高优先级,7
我可以,或者说必须为我的
因此,如果我
那么我将为我的每个
现在,它所做的
假设
因此我要使它具有优先级一。
b
它具有优先级二。
假设
但它们的优先级相同。
那么它们不必是唯一的。
那么现在,如果我正在
这四个中断中的任何一个
中断的作用。
但是,如果我正在运行
是的,它最重要。
此时发生了其他
该中断将延迟,直到
然后才允许它执行。
另一方面,
一个优先级为三的
现在,一个优先级为二的
当它完成后,
但是,如果我正在执行
并且另一个优先级
它将延迟。
因此,如果某个中断具有
打断或中断另一个中断。
它其实是
想弄清编译器
中断处理的机制,
但
最高有效字节中,
在该编译器中,
存储该寄存器的
这将指定
在其他中断之中,
语法稍有不同。
因此,如果我想设串行端口A2的优先级,
我将访问一个
按照这种方法
您可以看到,
都会将它们对应的
这有点儿高,
因此,当我们具有多个
它使系统能够确定一个中断
如果您想使它变得很简单,
优先级设置为彼此相等。
这样就没有中断会
这就是您想要的结果。
您也可以通过这种方法来实现它。
我们讨论了中断。
它是一个被执行的线程。
我们将在本课程中
数据结构,我们在处理
这些数据结构可能仅仅是一个标志。
如果一个线程设置一个
变量中写入
然后其他线程
并看到该标志
我们要在该试验中
是一个邮箱,它其实
如果我们
比如
如果中断读取了
我们将获取
把它存储在一个
称为
它是一个全局变量。
然后,我们要
然后,将处理它的
该标志,
数据是否有效。
如果该标志已设置,那么
可以在下一次清除该标志。
那么,指示一个信号量。
现在,如果您了解
并不需要的
或者在我们开始执行
在我们开始执行
将使用另一种称为
该结构允许数据
方法的方式流入。
但是,我们直到开始执行实验
总之,中断是一种
它允许我们
我们将使用堆栈
中断向量是硬编码
所有中断
何处。
再说一次,
是针对触发器
该向量是此中断
它将一组
设置连接寄存器。
该来自中断的
函数的返回值类似,
等于
此时该返回值
出栈。
现在,存在
我们将对我们感兴趣的
如果我们有多个中断,
分配优先级。
此外,处理器中
它位于主掩码
将通过执行启用中断
那么,启用中断
如果您想
还有一个
这是一个内置在
它将设置
它只是延迟中断。
再说一次,我们
全局变量或私有
来共享数据。
本实验比较难于实施,
本章而言,实际上它
因此,我们
了解如何使用
今天就开始。
好的。
祝您愉快。
大家好, 我是 在本视频中, 现在,我们要介绍它们是什么、 我们如何使用它们。 我们将讨论中断向量 然后,我们将 我们如何同步中断 线程。 这将是一种 软件工具,它帮助 系统的复杂性。 什么是中断? 从根本上说, 它像是函数调用, 因此,计算机中一个 一个物理事件, 因此,它将是一个称为 函数,它会得到 这就是中断 现在,我们要 因为我们将有 通常具有的主程序。 我们将具有 此类中断驱动线程, 物理事件。 那么,通过这种方法, 软件的 把我们软件的所有 主程序中。 因此,这将是一种 技术,它称为多线程 我们将把它们 我们可以把它们 或者当电机过载将 用于触发中断的警报 这些事件。 某些计算机把它们 内部事件。 我们的系统中不会 但我们将有 换句话说, 一个会触发中断的计时器, 执行某段程序。 这在我们的实时 在系统 将讨论 触发器是导致 因此,我们可以提出 对于一个嵌入式系统,哪些 我们通常可以非常 也就是说,如果 某个事件需要 触发一个中断。 例如,如果我们 并且新数据已经 那么我们将处理它。 新数据的到达 如果我们有一个输出 将在输出设备 换句话说,它需要一个 正如我说过的, 具体来说,我们将 来生成周期性中断。 我们为什么使用中断? 这是因为,如果我们考虑 如果我必须执行两件 事情,如果我必须把它们 那么我们现在 操作 我的软件必须执行的 任务现在相互 这样一来,如果执行 c 或者,如果 而利用中断, 我将为其中的每项 无论它是周期性触发器、 触发器,都没有关系。 现在,我已经 完成的是,我现在已经分离了 并行运行。 这称为并发。 只有一个 我们将看到这是如何发生的。 但是,它们在逻辑上是分离的。 如果我想把这些 我将使用一个消息 我们在线程 数据。 但它允许我 使用而言很自然的方式 我们将反复不断地实践中断的方式。 对中断来说 是对重要事件 例如小车撞到墙壁了。 这时,最好停止电机。 这就是 执行的操作。 撞墙,停止电机, 此外,中断还用于处理我们 从不会预期 但如果它们 快速处理它们。 好的。 那么让我们讨论一下细节。 正如我说过的, 线程是正在 执行或操作。 在一个双线程 前台线程、主程序 服务程序。 再说一次,后台线程 软件的特征。 中断就是这么回事儿。 那么,如果它是 这意味着所有 都尝试解决同一个 在线程之间共享同步 那么,我们要实现 共享全局变量。 无论它们是全局变量 它永久性地 好的。 那么,我们将在 我们将使用一个线程对它 对它进行读取。 或者,通过这个线程对它进行 我们要将该全局变量 数据的方法。 如果我们 将要发生的是, 触发器将触发。 那么正在执行的该软件将挂起。 另一个线程在这里执行。 它从该位置发生的 因此,如果这是 那么接下来要 这个东西将恢复运行。 这就是我如何 计数器在系统上 我们要把该数据 更改程序计数器, 当需要恢复 将从堆栈 因此,几微秒 在这里返回。 让我们更深入地进行探究 发生的实际步骤。 那么,我们有触发事件。 在本例中,它将是 过程。 它将设置 从而触发 将要发生的是,它会 完成它的 将一组 我们将在下一张 把连接寄存器 这里的代码意味着 有几百个 因此有一个寄存器, 设置,然后它将 该中断服务子程序。 这就是整个过程。 请记住它。 这就是目的。 中断就是这么回事儿 一个硬件触发器。 它用作一个硬件标志。 它将被设置。 它将触发 事件的执行。 这就是 当我们运行中断服务程序时, 在这里,我们把它 我们将执行需要 比如与全局 那么我们完成了。 我们将执行 编译器 那么,如果在我 连接寄存器是 使八个 从而使我返回到 完成的指令。 好的。 那么,这里是一些更多细节。 这些还是 当我们完成 会使寄存器入栈。 这些是实际的 程序状态寄存器, 旧程序计数器, R12,R3,R2,R1,R0。 您会注意到它没有 如果需要,编译器 它执行向量获取。 有一大堆向量, 我们将在下一张 这是位于低位 它是一个存储在 32 中断服务 SysTick 我们再次把它 那么,基本来说,它要 更改 现在,主掩码中的 中断而言 事实上,即使我 它也不会 这里允许一个中断 我们一会儿 总之,当发生 这意味着从前台 它将使八个 从而保存它所处 然后,当它执行 寄存器会重新放置到 然后在它中断的 好的。 那么,我说过 有很多的中断 我们将在本章中 它是中断向量号15。 我们将使用一系列的 我们将在后续 当我们开始使用 我们可以使用这些 实验 因此,当小车 将会有一个端口产生IRQ 如果您想在您的 请在CCS.C中查找这个称为 的文件中进行查看。 该文件中给出了所有向量。 中断向量表 起始处。 为了使用中断, 在您的系统中使用 那么,如果您定义一个称为 它将成为在发生 SysTick 我曾提到过优先级。 中断的作用 是使我们的 那么,我们有一个主程序 我们始终有该程序 同时我们可以有 我们看过这张幻灯片。 我在这里有五个线程。 其中的某些线程 比其他线程更重要。 比如小车撞到墙。 这是一件糟糕的事情。 我们应快速地 因此,我要做的是, 线程分配 我可以使它们 这样,我平等地 没有任何线程 但是,我们其实 其中0为最高优先级,7 我可以,或者说必须为我的 因此,如果我 那么我将为我的每个 现在,它所做的 假设 因此我要使它具有优先级一。 b 它具有优先级二。 假设 但它们的优先级相同。 那么它们不必是唯一的。 那么现在,如果我正在 这四个中断中的任何一个 中断的作用。 但是,如果我正在运行 是的,它最重要。 此时发生了其他 该中断将延迟,直到 然后才允许它执行。 另一方面, 一个优先级为三的 现在,一个优先级为二的 当它完成后, 但是,如果我正在执行 并且另一个优先级 它将延迟。 因此,如果某个中断具有 打断或中断另一个中断。 它其实是 想弄清编译器 中断处理的机制, 但 最高有效字节中, 在该编译器中, 存储该寄存器的 这将指定 在其他中断之中, 语法稍有不同。 因此,如果我想设串行端口A2的优先级, 我将访问一个 按照这种方法 您可以看到, 都会将它们对应的 这有点儿高, 因此,当我们具有多个 它使系统能够确定一个中断 如果您想使它变得很简单, 优先级设置为彼此相等。 这样就没有中断会 这就是您想要的结果。 您也可以通过这种方法来实现它。 我们讨论了中断。 它是一个被执行的线程。 我们将在本课程中 数据结构,我们在处理 这些数据结构可能仅仅是一个标志。 如果一个线程设置一个 变量中写入 然后其他线程 并看到该标志 我们要在该试验中 是一个邮箱,它其实 如果我们 比如 如果中断读取了 我们将获取 把它存储在一个 称为 它是一个全局变量。 然后,我们要 然后,将处理它的 该标志, 数据是否有效。 如果该标志已设置,那么 可以在下一次清除该标志。 那么,指示一个信号量。 现在,如果您了解 并不需要的 或者在我们开始执行 在我们开始执行 将使用另一种称为 该结构允许数据 方法的方式流入。 但是,我们直到开始执行实验 总之,中断是一种 它允许我们 我们将使用堆栈 中断向量是硬编码 所有中断 何处。 再说一次, 是针对触发器 该向量是此中断 它将一组 设置连接寄存器。 该来自中断的 函数的返回值类似, 等于 此时该返回值 出栈。 现在,存在 我们将对我们感兴趣的 如果我们有多个中断, 分配优先级。 此外,处理器中 它位于主掩码 将通过执行启用中断 那么,启用中断 如果您想 还有一个 这是一个内置在 它将设置 它只是延迟中断。 再说一次,我们 全局变量或私有 来共享数据。 本实验比较难于实施, 本章而言,实际上它 因此,我们 了解如何使用 今天就开始。 好的。 祝您愉快。
大家好,
我是
在本视频中,
现在,我们要介绍它们是什么、
我们如何使用它们。
我们将讨论中断向量
然后,我们将
我们如何同步中断
线程。
这将是一种
软件工具,它帮助
系统的复杂性。
什么是中断?
从根本上说,
它像是函数调用,
因此,计算机中一个
一个物理事件,
因此,它将是一个称为
函数,它会得到
这就是中断
现在,我们要
因为我们将有
通常具有的主程序。
我们将具有
此类中断驱动线程,
物理事件。
那么,通过这种方法,
软件的
把我们软件的所有
主程序中。
因此,这将是一种
技术,它称为多线程
我们将把它们
我们可以把它们
或者当电机过载将
用于触发中断的警报
这些事件。
某些计算机把它们
内部事件。
我们的系统中不会
但我们将有
换句话说,
一个会触发中断的计时器,
执行某段程序。
这在我们的实时
在系统
将讨论
触发器是导致
因此,我们可以提出
对于一个嵌入式系统,哪些
我们通常可以非常
也就是说,如果
某个事件需要
触发一个中断。
例如,如果我们
并且新数据已经
那么我们将处理它。
新数据的到达
如果我们有一个输出
将在输出设备
换句话说,它需要一个
正如我说过的,
具体来说,我们将
来生成周期性中断。
我们为什么使用中断?
这是因为,如果我们考虑
如果我必须执行两件
事情,如果我必须把它们
那么我们现在
操作
我的软件必须执行的
任务现在相互
这样一来,如果执行
c
或者,如果
而利用中断,
我将为其中的每项
无论它是周期性触发器、
触发器,都没有关系。
现在,我已经
完成的是,我现在已经分离了
并行运行。
这称为并发。
只有一个
我们将看到这是如何发生的。
但是,它们在逻辑上是分离的。
如果我想把这些
我将使用一个消息
我们在线程
数据。
但它允许我
使用而言很自然的方式
我们将反复不断地实践中断的方式。
对中断来说
是对重要事件
例如小车撞到墙壁了。
这时,最好停止电机。
这就是
执行的操作。
撞墙,停止电机,
此外,中断还用于处理我们
从不会预期
但如果它们
快速处理它们。
好的。
那么让我们讨论一下细节。
正如我说过的,
线程是正在
执行或操作。
在一个双线程
前台线程、主程序
服务程序。
再说一次,后台线程
软件的特征。
中断就是这么回事儿。
那么,如果它是
这意味着所有
都尝试解决同一个
在线程之间共享同步
那么,我们要实现
共享全局变量。
无论它们是全局变量
它永久性地
好的。
那么,我们将在
我们将使用一个线程对它
对它进行读取。
或者,通过这个线程对它进行
我们要将该全局变量
数据的方法。
如果我们
将要发生的是,
触发器将触发。
那么正在执行的该软件将挂起。
另一个线程在这里执行。
它从该位置发生的
因此,如果这是
那么接下来要
这个东西将恢复运行。
这就是我如何
计数器在系统上
我们要把该数据
更改程序计数器,
当需要恢复
将从堆栈
因此,几微秒
在这里返回。
让我们更深入地进行探究
发生的实际步骤。
那么,我们有触发事件。
在本例中,它将是
过程。
它将设置
从而触发
将要发生的是,它会
完成它的
将一组
我们将在下一张
把连接寄存器
这里的代码意味着
有几百个
因此有一个寄存器,
设置,然后它将
该中断服务子程序。
这就是整个过程。
请记住它。
这就是目的。
中断就是这么回事儿
一个硬件触发器。
它用作一个硬件标志。
它将被设置。
它将触发
事件的执行。
这就是
当我们运行中断服务程序时,
在这里,我们把它
我们将执行需要
比如与全局
那么我们完成了。
我们将执行
编译器
那么,如果在我
连接寄存器是
使八个
从而使我返回到
完成的指令。
好的。
那么,这里是一些更多细节。
这些还是
当我们完成
会使寄存器入栈。
这些是实际的
程序状态寄存器,
旧程序计数器,
R12,R3,R2,R1,R0。
您会注意到它没有
如果需要,编译器
它执行向量获取。
有一大堆向量,
我们将在下一张
这是位于低位
它是一个存储在
32
中断服务
SysTick
我们再次把它
那么,基本来说,它要
更改
现在,主掩码中的
中断而言
事实上,即使我
它也不会
这里允许一个中断
我们一会儿
总之,当发生
这意味着从前台
它将使八个
从而保存它所处
然后,当它执行
寄存器会重新放置到
然后在它中断的
好的。
那么,我说过
有很多的中断
我们将在本章中
它是中断向量号15。
我们将使用一系列的
我们将在后续
当我们开始使用
我们可以使用这些
实验
因此,当小车
将会有一个端口产生IRQ
如果您想在您的
请在CCS.C中查找这个称为
的文件中进行查看。
该文件中给出了所有向量。
中断向量表
起始处。
为了使用中断,
在您的系统中使用
那么,如果您定义一个称为
它将成为在发生
SysTick
我曾提到过优先级。
中断的作用
是使我们的
那么,我们有一个主程序
我们始终有该程序
同时我们可以有
我们看过这张幻灯片。
我在这里有五个线程。
其中的某些线程
比其他线程更重要。
比如小车撞到墙。
这是一件糟糕的事情。
我们应快速地
因此,我要做的是,
线程分配
我可以使它们
这样,我平等地
没有任何线程
但是,我们其实
其中0为最高优先级,7
我可以,或者说必须为我的
因此,如果我
那么我将为我的每个
现在,它所做的
假设
因此我要使它具有优先级一。
b
它具有优先级二。
假设
但它们的优先级相同。
那么它们不必是唯一的。
那么现在,如果我正在
这四个中断中的任何一个
中断的作用。
但是,如果我正在运行
是的,它最重要。
此时发生了其他
该中断将延迟,直到
然后才允许它执行。
另一方面,
一个优先级为三的
现在,一个优先级为二的
当它完成后,
但是,如果我正在执行
并且另一个优先级
它将延迟。
因此,如果某个中断具有
打断或中断另一个中断。
它其实是
想弄清编译器
中断处理的机制,
但
最高有效字节中,
在该编译器中,
存储该寄存器的
这将指定
在其他中断之中,
语法稍有不同。
因此,如果我想设串行端口A2的优先级,
我将访问一个
按照这种方法
您可以看到,
都会将它们对应的
这有点儿高,
因此,当我们具有多个
它使系统能够确定一个中断
如果您想使它变得很简单,
优先级设置为彼此相等。
这样就没有中断会
这就是您想要的结果。
您也可以通过这种方法来实现它。
我们讨论了中断。
它是一个被执行的线程。
我们将在本课程中
数据结构,我们在处理
这些数据结构可能仅仅是一个标志。
如果一个线程设置一个
变量中写入
然后其他线程
并看到该标志
我们要在该试验中
是一个邮箱,它其实
如果我们
比如
如果中断读取了
我们将获取
把它存储在一个
称为
它是一个全局变量。
然后,我们要
然后,将处理它的
该标志,
数据是否有效。
如果该标志已设置,那么
可以在下一次清除该标志。
那么,指示一个信号量。
现在,如果您了解
并不需要的
或者在我们开始执行
在我们开始执行
将使用另一种称为
该结构允许数据
方法的方式流入。
但是,我们直到开始执行实验
总之,中断是一种
它允许我们
我们将使用堆栈
中断向量是硬编码
所有中断
何处。
再说一次,
是针对触发器
该向量是此中断
它将一组
设置连接寄存器。
该来自中断的
函数的返回值类似,
等于
此时该返回值
出栈。
现在,存在
我们将对我们感兴趣的
如果我们有多个中断,
分配优先级。
此外,处理器中
它位于主掩码
将通过执行启用中断
那么,启用中断
如果您想
还有一个
这是一个内置在
它将设置
它只是延迟中断。
再说一次,我们
全局变量或私有
来共享数据。
本实验比较难于实施,
本章而言,实际上它
因此,我们
了解如何使用
今天就开始。
好的。
祝您愉快。
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
TI-RSLK 模块 10 - 讲座视频 - 调试实时系统 - 中断
所属课程:TI-RSLK 模块 10 - 调试实时系统
发布时间:2018.08.27
视频集数:4
本节视频时长:00:19:59
在该实验中,你将学习如何利用SysTick产生周期性中断。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>