TI-RSLK 模块 4 - 讲座视频 - 设计
Loading the player...
将在30s后自动为您播放下一课程
大家好, 我是 在本模块中,我们 我们首先介绍一下 模块是什么, 它同时包含软件和硬件, 所以我们会将它视为 当我们把这些 我们可以从不同的 其中一个角度 这意味着,如果 可以调用针对不同 我们将会绘制这样 这个箭头表示, 这将是低级别。 类似地,如果 可以调用 绘制一个调用图 高级别函数与 因果关系-- 而且,我们会将 所有任务-- 例如,与开关 以及与 封装在独立的模块中。 我们将要 并不复杂, 配备一个开关。 如果按下开关, 则会将发光二极管 状态。 另一种在互连情况下 称为数据流图。 数据流图 这是一个硬件模块。 这里的所有其他模块 关于开关是否 被编码在 所以,数据是向 即使是 数据实际上也是 而在这里,数据则是 因为我想要 然后,在物理层面上, 可以发光的 而且,通过 我们可以定义 系统的模块化, 这也是系统的精华所在-- 是多个模块的函数。 因此,我们希望最大 同时尽量减少 特别是,我们可以 东西,它是每秒 字节数。 因此,我们希望最大 同时尽量减少 针对互联的一个简单的 测量每秒从一个 字节数。 这便是我们将会 那么,让我们开始吧。 当我们讨论如何制造 换句话说, 整体思路就是 可让我们做到这一点的 线程是由正在执行的 所以,引发线程的 我们将会得到一个 其中有一个 而且,我们将会 例如,我可能会有 当我触摸开关时, 我们将会在多个 实际工作方式。 但是在这里,我们只需要 那就是,当您触摸 运行与这个触摸操作 然后,如果我们想要 某个操作,我们 我们将会使用一个频率为, 而且,我们将从这个 我在这里绘制 然后绘制初始化。 然后,我们在这里绘制一些东西。 然后就有了一个循环。 我们之所以 是因为我们可以 一条单一的轨迹。 即使这是一个函数-- 即使这个初始化 我们仍然可以绘制一条-- 我们可以 一笔画出一条代表 这便是我们将其称为线程的原因。 一系列指令, 引起的操作, 但是中断是特殊的。 中断是硬件 操作。 在这里,我们将 从这里开始,因为 执行该软件,然后 然后重新返回这里。 所以线程是由正在 操作。 在本课程中, 单一的前台线程、 在特定事件时 这是增加系统 您要做的最困难的 确定从哪里开始。 我要告诉您一个 您可能也在其他地方 说法-- 需要花费 才能熟练掌握一个技能。 我并不是 如果您坐在电脑前, 编写尽可能优秀的代码, 您可能能够 如果您将这两个 达到一百万行 您将会成为一名 说这些也不是 我的意思是,行动起来。 说这些是为了鼓励您马上 许多的代码。 这张幻灯片讨论的是, 如何完成软件构想。 这涉及到了状态这个概念。 我将状态定义为: 如果您有一个系统, 或者有时候是, 或者您认为什么是真实的, 例如,我可能在这条 我的机器人在这里。 我觉得它在沿着这条路 墙壁太近了。 离右侧墙壁太近-- 这便是我认为 您现在要做的是 考虑这个问题, 并写下您的系统 所有状态。 我在一个小圈子里。 我处于停滞状态。 我撞到墙上了。 我走错方向了。 我赢了比赛。 我到达了终点。 所以,我将会考虑 有些状态是 有些则不是。 例如,您可能 闪烁的状态。 这个状态可能会与 所以,状态之间 但是,您需要 考虑哪些事情是 认为是真实的。 这样做后,您可以 我们从哪里开始? 初始状态是什么? 或者是下面的这个 我需要知道什么? 我要得到什么 我离墙壁太近? 在这种情况下,我可以 输入传感器。 然后它不单单是 更是一个嵌入式系统。 所以它有输出。 我该怎么做? 我会采取哪些操作? 我想移动。 我想转弯。 我想停下来-- 诸如此类。 我将会使用哪些 这些操作,我需要 我们将会看到, 我们将必须单独 然后更难的是,如何从一个 状态? 换句话说,如果 我想要移到中间位置, 移动到理想位置? 然后,很明显, 我们如何在完成后获知已经完成? 所以,这种状态 在实际坐下来 构想您的软件和 另一种思考 将其分解成模块。 下面我们将介绍这种方法。 用于讨论 模块化部分的 它们具有大致 逐次求精、 和系统分解-- 它们都指的是 那就是,我们将会 让我们进行赛跑。 我想要在跑道上 但这太复杂了, 因此,求精的整体 多个片段。 比如,我可能想要移动。 我可能想要进行感测。 我可能想要进行思考。 然后对于上面的 将其分解为更小的部分, 我如何在完成后获知已经完成。 所以,如果我把一个任务 然后子任务 我知道该如何完成-- 我将会实施该子任务, 然后,我可以将其 但如果它仍然太复杂, 我将再次进行分解。 所以我们可以讨论诸如停止、 我可以分解模块。 我可以将其 如果它们太复杂, 我将再次进行分解。 例如,对于 这是我可能会用到的传感器之一。 如果我不知道 我将会将其分解成多个部分, 等待一毫秒, 实施输入, 现在我将这个 分解成了多个子模块, 然后,我将会 然后将其重组回去。 需要注意的是, 这是一个问题-- 我将其分成两部分-- A1 然后我向前走, 但是还有一种可能, 这部分,A1,可能实际上 因此,将一个对象 它就会变简单。 这整整 真的能让您擅长回答, 更有效且更高效的 但是现在,我想 如果在将问题分解后, 更复杂了,我将会 并使用另外一些 我将会持续 直到子部分比初始 然后,我们会将这些子部分 我们知道,不管是 还是调用图-- 我们知道,我们的 不同的部分,从而 但是,我们会有 也就是说, 信息传输速率 最终,与这个 接口将会变得 对于数据流图, 来传递数据。 对于调用图,模块 同样,这个接口 所以,当我将某个东西 这些模块如何重新 有效性和高效性 因此,让我们找出一种 如果该接口 非常重要, 收集有关该接口的 并将其存储在一处。 这便是我们的 同样,系统的 该模块的开关-- 一个是 另一个是 原型。 也就是说, 它包含一个 调用的函数的列表。 这样,我们就可以将 比如,这是一个 从开关进行输入。 您可以将其打开, 您将把这一点与 它连接到什么端口, 它是正逻辑 所有这些低层次细节 这种分离将会 复杂性大有帮助。 这便是我们 复杂性抽象。 换句话说,我们将 所有的低层次细节, 一个可用于使用 同样,包含在 公有函数的原型 也就是该模块的功能 未包含在该模块中的是 模块内容的细节 我们不会将任何 这种私有概念 注意这个头文件-- 本课程中的 都使用了这种奇异的语法, 这是返回参数, 这是有关其功能的 这种语法实际上 doxygen 为整个机器人系统 一种软件文档。 您将会看到, 都代表了您需要 我们将会为您 来支持您开始 所以这个 创建一个美观的 软件的所有功能-- 也就是说, 而不介绍它的 一个模块具有一个 我们说过, 公有函数的原型。 代码文件中包含的是 我们将会在下面的 实际工作方式。 但是在这里,我们只需要 实际的工作方式, 这里。 我们需要变量。 它在 如果我们有任何 它也会在 c 它是如何进行测试的, 一定要非常谨慎地 私有性质。 不要尝试访问 私有信息或 如果您在 您将会看到与该项目 但是如果您查看 例如,这里的这个文件, 这段代码便是在该文件中。 最终,这里的 实际上等效于 调用图。 如果这个函数包含 那么我们便可以 由于这里的这个 所以它可以调用后者的公有函数。 所以这个 这里的这个 这是这个箭头。 所以这种将某个事物 对于简化非常 所以,当我们组建成 您会发现它包含数十个 这个层次结构中。 最后总结一下, 这是一个增加 模块总数的过程。 但是我们希望最大限度地 每秒在不同 传输的字节数。 我们讨论了头文件。 头文件中包含的是 数据的流动方式, 方式。 通过这种方式,我们 高级交互-- 分离其功能和工作方式。 这样,我们将能够打造 所以随着向后面的部分推进, 在本课程开始时, 这时您实际上 但是,当后面变得 您将会看到使用 好的。 在下一个模块中-- 下一个讲座中, 然后,我们将 好的。 稍后回来。
大家好, 我是 在本模块中,我们 我们首先介绍一下 模块是什么, 它同时包含软件和硬件, 所以我们会将它视为 当我们把这些 我们可以从不同的 其中一个角度 这意味着,如果 可以调用针对不同 我们将会绘制这样 这个箭头表示, 这将是低级别。 类似地,如果 可以调用 绘制一个调用图 高级别函数与 因果关系-- 而且,我们会将 所有任务-- 例如,与开关 以及与 封装在独立的模块中。 我们将要 并不复杂, 配备一个开关。 如果按下开关, 则会将发光二极管 状态。 另一种在互连情况下 称为数据流图。 数据流图 这是一个硬件模块。 这里的所有其他模块 关于开关是否 被编码在 所以,数据是向 即使是 数据实际上也是 而在这里,数据则是 因为我想要 然后,在物理层面上, 可以发光的 而且,通过 我们可以定义 系统的模块化, 这也是系统的精华所在-- 是多个模块的函数。 因此,我们希望最大 同时尽量减少 特别是,我们可以 东西,它是每秒 字节数。 因此,我们希望最大 同时尽量减少 针对互联的一个简单的 测量每秒从一个 字节数。 这便是我们将会 那么,让我们开始吧。 当我们讨论如何制造 换句话说, 整体思路就是 可让我们做到这一点的 线程是由正在执行的 所以,引发线程的 我们将会得到一个 其中有一个 而且,我们将会 例如,我可能会有 当我触摸开关时, 我们将会在多个 实际工作方式。 但是在这里,我们只需要 那就是,当您触摸 运行与这个触摸操作 然后,如果我们想要 某个操作,我们 我们将会使用一个频率为, 而且,我们将从这个 我在这里绘制 然后绘制初始化。 然后,我们在这里绘制一些东西。 然后就有了一个循环。 我们之所以 是因为我们可以 一条单一的轨迹。 即使这是一个函数-- 即使这个初始化 我们仍然可以绘制一条-- 我们可以 一笔画出一条代表 这便是我们将其称为线程的原因。 一系列指令, 引起的操作, 但是中断是特殊的。 中断是硬件 操作。 在这里,我们将 从这里开始,因为 执行该软件,然后 然后重新返回这里。 所以线程是由正在 操作。 在本课程中, 单一的前台线程、 在特定事件时 这是增加系统 您要做的最困难的 确定从哪里开始。 我要告诉您一个 您可能也在其他地方 说法-- 需要花费 才能熟练掌握一个技能。 我并不是 如果您坐在电脑前, 编写尽可能优秀的代码, 您可能能够 如果您将这两个 达到一百万行 您将会成为一名 说这些也不是 我的意思是,行动起来。 说这些是为了鼓励您马上 许多的代码。 这张幻灯片讨论的是, 如何完成软件构想。 这涉及到了状态这个概念。 我将状态定义为: 如果您有一个系统, 或者有时候是, 或者您认为什么是真实的, 例如,我可能在这条 我的机器人在这里。 我觉得它在沿着这条路 墙壁太近了。 离右侧墙壁太近-- 这便是我认为 您现在要做的是 考虑这个问题, 并写下您的系统 所有状态。 我在一个小圈子里。 我处于停滞状态。 我撞到墙上了。 我走错方向了。 我赢了比赛。 我到达了终点。 所以,我将会考虑 有些状态是 有些则不是。 例如,您可能 闪烁的状态。 这个状态可能会与 所以,状态之间 但是,您需要 考虑哪些事情是 认为是真实的。 这样做后,您可以 我们从哪里开始? 初始状态是什么? 或者是下面的这个 我需要知道什么? 我要得到什么 我离墙壁太近? 在这种情况下,我可以 输入传感器。 然后它不单单是 更是一个嵌入式系统。 所以它有输出。 我该怎么做? 我会采取哪些操作? 我想移动。 我想转弯。 我想停下来-- 诸如此类。 我将会使用哪些 这些操作,我需要 我们将会看到, 我们将必须单独 然后更难的是,如何从一个 状态? 换句话说,如果 我想要移到中间位置, 移动到理想位置? 然后,很明显, 我们如何在完成后获知已经完成? 所以,这种状态 在实际坐下来 构想您的软件和 另一种思考 将其分解成模块。 下面我们将介绍这种方法。 用于讨论 模块化部分的 它们具有大致 逐次求精、 和系统分解-- 它们都指的是 那就是,我们将会 让我们进行赛跑。 我想要在跑道上 但这太复杂了, 因此,求精的整体 多个片段。 比如,我可能想要移动。 我可能想要进行感测。 我可能想要进行思考。 然后对于上面的 将其分解为更小的部分, 我如何在完成后获知已经完成。 所以,如果我把一个任务 然后子任务 我知道该如何完成-- 我将会实施该子任务, 然后,我可以将其 但如果它仍然太复杂, 我将再次进行分解。 所以我们可以讨论诸如停止、 我可以分解模块。 我可以将其 如果它们太复杂, 我将再次进行分解。 例如,对于 这是我可能会用到的传感器之一。 如果我不知道 我将会将其分解成多个部分, 等待一毫秒, 实施输入, 现在我将这个 分解成了多个子模块, 然后,我将会 然后将其重组回去。 需要注意的是, 这是一个问题-- 我将其分成两部分-- A1 然后我向前走, 但是还有一种可能, 这部分,A1,可能实际上 因此,将一个对象 它就会变简单。 这整整 真的能让您擅长回答, 更有效且更高效的 但是现在,我想 如果在将问题分解后, 更复杂了,我将会 并使用另外一些 我将会持续 直到子部分比初始 然后,我们会将这些子部分 我们知道,不管是 还是调用图-- 我们知道,我们的 不同的部分,从而 但是,我们会有 也就是说, 信息传输速率 最终,与这个 接口将会变得 对于数据流图, 来传递数据。 对于调用图,模块 同样,这个接口 所以,当我将某个东西 这些模块如何重新 有效性和高效性 因此,让我们找出一种 如果该接口 非常重要, 收集有关该接口的 并将其存储在一处。 这便是我们的 同样,系统的 该模块的开关-- 一个是 另一个是 原型。 也就是说, 它包含一个 调用的函数的列表。 这样,我们就可以将 比如,这是一个 从开关进行输入。 您可以将其打开, 您将把这一点与 它连接到什么端口, 它是正逻辑 所有这些低层次细节 这种分离将会 复杂性大有帮助。 这便是我们 复杂性抽象。 换句话说,我们将 所有的低层次细节, 一个可用于使用 同样,包含在 公有函数的原型 也就是该模块的功能 未包含在该模块中的是 模块内容的细节 我们不会将任何 这种私有概念 注意这个头文件-- 本课程中的 都使用了这种奇异的语法, 这是返回参数, 这是有关其功能的 这种语法实际上 doxygen 为整个机器人系统 一种软件文档。 您将会看到, 都代表了您需要 我们将会为您 来支持您开始 所以这个 创建一个美观的 软件的所有功能-- 也就是说, 而不介绍它的 一个模块具有一个 我们说过, 公有函数的原型。 代码文件中包含的是 我们将会在下面的 实际工作方式。 但是在这里,我们只需要 实际的工作方式, 这里。 我们需要变量。 它在 如果我们有任何 它也会在 c 它是如何进行测试的, 一定要非常谨慎地 私有性质。 不要尝试访问 私有信息或 如果您在 您将会看到与该项目 但是如果您查看 例如,这里的这个文件, 这段代码便是在该文件中。 最终,这里的 实际上等效于 调用图。 如果这个函数包含 那么我们便可以 由于这里的这个 所以它可以调用后者的公有函数。 所以这个 这里的这个 这是这个箭头。 所以这种将某个事物 对于简化非常 所以,当我们组建成 您会发现它包含数十个 这个层次结构中。 最后总结一下, 这是一个增加 模块总数的过程。 但是我们希望最大限度地 每秒在不同 传输的字节数。 我们讨论了头文件。 头文件中包含的是 数据的流动方式, 方式。 通过这种方式,我们 高级交互-- 分离其功能和工作方式。 这样,我们将能够打造 所以随着向后面的部分推进, 在本课程开始时, 这时您实际上 但是,当后面变得 您将会看到使用 好的。 在下一个模块中-- 下一个讲座中, 然后,我们将 好的。 稍后回来。
大家好,
我是
在本模块中,我们
我们首先介绍一下
模块是什么,
它同时包含软件和硬件,
所以我们会将它视为
当我们把这些
我们可以从不同的
其中一个角度
这意味着,如果
可以调用针对不同
我们将会绘制这样
这个箭头表示,
这将是低级别。
类似地,如果
可以调用
绘制一个调用图
高级别函数与
因果关系--
而且,我们会将
所有任务--
例如,与开关
以及与
封装在独立的模块中。
我们将要
并不复杂,
配备一个开关。
如果按下开关,
则会将发光二极管
状态。
另一种在互连情况下
称为数据流图。
数据流图
这是一个硬件模块。
这里的所有其他模块
关于开关是否
被编码在
所以,数据是向
即使是
数据实际上也是
而在这里,数据则是
因为我想要
然后,在物理层面上,
可以发光的
而且,通过
我们可以定义
系统的模块化,
这也是系统的精华所在--
是多个模块的函数。
因此,我们希望最大
同时尽量减少
特别是,我们可以
东西,它是每秒
字节数。
因此,我们希望最大
同时尽量减少
针对互联的一个简单的
测量每秒从一个
字节数。
这便是我们将会
那么,让我们开始吧。
当我们讨论如何制造
换句话说,
整体思路就是
可让我们做到这一点的
线程是由正在执行的
所以,引发线程的
我们将会得到一个
其中有一个
而且,我们将会
例如,我可能会有
当我触摸开关时,
我们将会在多个
实际工作方式。
但是在这里,我们只需要
那就是,当您触摸
运行与这个触摸操作
然后,如果我们想要
某个操作,我们
我们将会使用一个频率为,
而且,我们将从这个
我在这里绘制
然后绘制初始化。
然后,我们在这里绘制一些东西。
然后就有了一个循环。
我们之所以
是因为我们可以
一条单一的轨迹。
即使这是一个函数--
即使这个初始化
我们仍然可以绘制一条--
我们可以
一笔画出一条代表
这便是我们将其称为线程的原因。
一系列指令,
引起的操作,
但是中断是特殊的。
中断是硬件
操作。
在这里,我们将
从这里开始,因为
执行该软件,然后
然后重新返回这里。
所以线程是由正在
操作。
在本课程中,
单一的前台线程、
在特定事件时
这是增加系统
您要做的最困难的
确定从哪里开始。
我要告诉您一个
您可能也在其他地方
说法--
需要花费
才能熟练掌握一个技能。
我并不是
如果您坐在电脑前,
编写尽可能优秀的代码,
您可能能够
如果您将这两个
达到一百万行
您将会成为一名
说这些也不是
我的意思是,行动起来。
说这些是为了鼓励您马上
许多的代码。
这张幻灯片讨论的是,
如何完成软件构想。
这涉及到了状态这个概念。
我将状态定义为:
如果您有一个系统,
或者有时候是,
或者您认为什么是真实的,
例如,我可能在这条
我的机器人在这里。
我觉得它在沿着这条路
墙壁太近了。
离右侧墙壁太近--
这便是我认为
您现在要做的是
考虑这个问题,
并写下您的系统
所有状态。
我在一个小圈子里。
我处于停滞状态。
我撞到墙上了。
我走错方向了。
我赢了比赛。
我到达了终点。
所以,我将会考虑
有些状态是
有些则不是。
例如,您可能
闪烁的状态。
这个状态可能会与
所以,状态之间
但是,您需要
考虑哪些事情是
认为是真实的。
这样做后,您可以
我们从哪里开始?
初始状态是什么?
或者是下面的这个
我需要知道什么?
我要得到什么
我离墙壁太近?
在这种情况下,我可以
输入传感器。
然后它不单单是
更是一个嵌入式系统。
所以它有输出。
我该怎么做?
我会采取哪些操作?
我想移动。
我想转弯。
我想停下来--
诸如此类。
我将会使用哪些
这些操作,我需要
我们将会看到,
我们将必须单独
然后更难的是,如何从一个
状态?
换句话说,如果
我想要移到中间位置,
移动到理想位置?
然后,很明显,
我们如何在完成后获知已经完成?
所以,这种状态
在实际坐下来
构想您的软件和
另一种思考
将其分解成模块。
下面我们将介绍这种方法。
用于讨论
模块化部分的
它们具有大致
逐次求精、
和系统分解--
它们都指的是
那就是,我们将会
让我们进行赛跑。
我想要在跑道上
但这太复杂了,
因此,求精的整体
多个片段。
比如,我可能想要移动。
我可能想要进行感测。
我可能想要进行思考。
然后对于上面的
将其分解为更小的部分,
我如何在完成后获知已经完成。
所以,如果我把一个任务
然后子任务
我知道该如何完成--
我将会实施该子任务,
然后,我可以将其
但如果它仍然太复杂,
我将再次进行分解。
所以我们可以讨论诸如停止、
我可以分解模块。
我可以将其
如果它们太复杂,
我将再次进行分解。
例如,对于
这是我可能会用到的传感器之一。
如果我不知道
我将会将其分解成多个部分,
等待一毫秒,
实施输入,
现在我将这个
分解成了多个子模块,
然后,我将会
然后将其重组回去。
需要注意的是,
这是一个问题--
我将其分成两部分--
A1
然后我向前走,
但是还有一种可能,
这部分,A1,可能实际上
因此,将一个对象
它就会变简单。
这整整
真的能让您擅长回答,
更有效且更高效的
但是现在,我想
如果在将问题分解后,
更复杂了,我将会
并使用另外一些
我将会持续
直到子部分比初始
然后,我们会将这些子部分
我们知道,不管是
还是调用图--
我们知道,我们的
不同的部分,从而
但是,我们会有
也就是说,
信息传输速率
最终,与这个
接口将会变得
对于数据流图,
来传递数据。
对于调用图,模块
同样,这个接口
所以,当我将某个东西
这些模块如何重新
有效性和高效性
因此,让我们找出一种
如果该接口
非常重要,
收集有关该接口的
并将其存储在一处。
这便是我们的
同样,系统的
该模块的开关--
一个是
另一个是
原型。
也就是说,
它包含一个
调用的函数的列表。
这样,我们就可以将
比如,这是一个
从开关进行输入。
您可以将其打开,
您将把这一点与
它连接到什么端口,
它是正逻辑
所有这些低层次细节
这种分离将会
复杂性大有帮助。
这便是我们
复杂性抽象。
换句话说,我们将
所有的低层次细节,
一个可用于使用
同样,包含在
公有函数的原型
也就是该模块的功能
未包含在该模块中的是
模块内容的细节
我们不会将任何
这种私有概念
注意这个头文件--
本课程中的
都使用了这种奇异的语法,
这是返回参数,
这是有关其功能的
这种语法实际上
doxygen
为整个机器人系统
一种软件文档。
您将会看到,
都代表了您需要
我们将会为您
来支持您开始
所以这个
创建一个美观的
软件的所有功能--
也就是说,
而不介绍它的
一个模块具有一个
我们说过,
公有函数的原型。
代码文件中包含的是
我们将会在下面的
实际工作方式。
但是在这里,我们只需要
实际的工作方式,
这里。
我们需要变量。
它在
如果我们有任何
它也会在
c
它是如何进行测试的,
一定要非常谨慎地
私有性质。
不要尝试访问
私有信息或
如果您在
您将会看到与该项目
但是如果您查看
例如,这里的这个文件,
这段代码便是在该文件中。
最终,这里的
实际上等效于
调用图。
如果这个函数包含
那么我们便可以
由于这里的这个
所以它可以调用后者的公有函数。
所以这个
这里的这个
这是这个箭头。
所以这种将某个事物
对于简化非常
所以,当我们组建成
您会发现它包含数十个
这个层次结构中。
最后总结一下,
这是一个增加
模块总数的过程。
但是我们希望最大限度地
每秒在不同
传输的字节数。
我们讨论了头文件。
头文件中包含的是
数据的流动方式,
方式。
通过这种方式,我们
高级交互--
分离其功能和工作方式。
这样,我们将能够打造
所以随着向后面的部分推进,
在本课程开始时,
这时您实际上
但是,当后面变得
您将会看到使用
好的。
在下一个模块中--
下一个讲座中,
然后,我们将
好的。
稍后回来。
大家好, 我是 在本模块中,我们 我们首先介绍一下 模块是什么, 它同时包含软件和硬件, 所以我们会将它视为 当我们把这些 我们可以从不同的 其中一个角度 这意味着,如果 可以调用针对不同 我们将会绘制这样 这个箭头表示, 这将是低级别。 类似地,如果 可以调用 绘制一个调用图 高级别函数与 因果关系-- 而且,我们会将 所有任务-- 例如,与开关 以及与 封装在独立的模块中。 我们将要 并不复杂, 配备一个开关。 如果按下开关, 则会将发光二极管 状态。 另一种在互连情况下 称为数据流图。 数据流图 这是一个硬件模块。 这里的所有其他模块 关于开关是否 被编码在 所以,数据是向 即使是 数据实际上也是 而在这里,数据则是 因为我想要 然后,在物理层面上, 可以发光的 而且,通过 我们可以定义 系统的模块化, 这也是系统的精华所在-- 是多个模块的函数。 因此,我们希望最大 同时尽量减少 特别是,我们可以 东西,它是每秒 字节数。 因此,我们希望最大 同时尽量减少 针对互联的一个简单的 测量每秒从一个 字节数。 这便是我们将会 那么,让我们开始吧。 当我们讨论如何制造 换句话说, 整体思路就是 可让我们做到这一点的 线程是由正在执行的 所以,引发线程的 我们将会得到一个 其中有一个 而且,我们将会 例如,我可能会有 当我触摸开关时, 我们将会在多个 实际工作方式。 但是在这里,我们只需要 那就是,当您触摸 运行与这个触摸操作 然后,如果我们想要 某个操作,我们 我们将会使用一个频率为, 而且,我们将从这个 我在这里绘制 然后绘制初始化。 然后,我们在这里绘制一些东西。 然后就有了一个循环。 我们之所以 是因为我们可以 一条单一的轨迹。 即使这是一个函数-- 即使这个初始化 我们仍然可以绘制一条-- 我们可以 一笔画出一条代表 这便是我们将其称为线程的原因。 一系列指令, 引起的操作, 但是中断是特殊的。 中断是硬件 操作。 在这里,我们将 从这里开始,因为 执行该软件,然后 然后重新返回这里。 所以线程是由正在 操作。 在本课程中, 单一的前台线程、 在特定事件时 这是增加系统 您要做的最困难的 确定从哪里开始。 我要告诉您一个 您可能也在其他地方 说法-- 需要花费 才能熟练掌握一个技能。 我并不是 如果您坐在电脑前, 编写尽可能优秀的代码, 您可能能够 如果您将这两个 达到一百万行 您将会成为一名 说这些也不是 我的意思是,行动起来。 说这些是为了鼓励您马上 许多的代码。 这张幻灯片讨论的是, 如何完成软件构想。 这涉及到了状态这个概念。 我将状态定义为: 如果您有一个系统, 或者有时候是, 或者您认为什么是真实的, 例如,我可能在这条 我的机器人在这里。 我觉得它在沿着这条路 墙壁太近了。 离右侧墙壁太近-- 这便是我认为 您现在要做的是 考虑这个问题, 并写下您的系统 所有状态。 我在一个小圈子里。 我处于停滞状态。 我撞到墙上了。 我走错方向了。 我赢了比赛。 我到达了终点。 所以,我将会考虑 有些状态是 有些则不是。 例如,您可能 闪烁的状态。 这个状态可能会与 所以,状态之间 但是,您需要 考虑哪些事情是 认为是真实的。 这样做后,您可以 我们从哪里开始? 初始状态是什么? 或者是下面的这个 我需要知道什么? 我要得到什么 我离墙壁太近? 在这种情况下,我可以 输入传感器。 然后它不单单是 更是一个嵌入式系统。 所以它有输出。 我该怎么做? 我会采取哪些操作? 我想移动。 我想转弯。 我想停下来-- 诸如此类。 我将会使用哪些 这些操作,我需要 我们将会看到, 我们将必须单独 然后更难的是,如何从一个 状态? 换句话说,如果 我想要移到中间位置, 移动到理想位置? 然后,很明显, 我们如何在完成后获知已经完成? 所以,这种状态 在实际坐下来 构想您的软件和 另一种思考 将其分解成模块。 下面我们将介绍这种方法。 用于讨论 模块化部分的 它们具有大致 逐次求精、 和系统分解-- 它们都指的是 那就是,我们将会 让我们进行赛跑。 我想要在跑道上 但这太复杂了, 因此,求精的整体 多个片段。 比如,我可能想要移动。 我可能想要进行感测。 我可能想要进行思考。 然后对于上面的 将其分解为更小的部分, 我如何在完成后获知已经完成。 所以,如果我把一个任务 然后子任务 我知道该如何完成-- 我将会实施该子任务, 然后,我可以将其 但如果它仍然太复杂, 我将再次进行分解。 所以我们可以讨论诸如停止、 我可以分解模块。 我可以将其 如果它们太复杂, 我将再次进行分解。 例如,对于 这是我可能会用到的传感器之一。 如果我不知道 我将会将其分解成多个部分, 等待一毫秒, 实施输入, 现在我将这个 分解成了多个子模块, 然后,我将会 然后将其重组回去。 需要注意的是, 这是一个问题-- 我将其分成两部分-- A1 然后我向前走, 但是还有一种可能, 这部分,A1,可能实际上 因此,将一个对象 它就会变简单。 这整整 真的能让您擅长回答, 更有效且更高效的 但是现在,我想 如果在将问题分解后, 更复杂了,我将会 并使用另外一些 我将会持续 直到子部分比初始 然后,我们会将这些子部分 我们知道,不管是 还是调用图-- 我们知道,我们的 不同的部分,从而 但是,我们会有 也就是说, 信息传输速率 最终,与这个 接口将会变得 对于数据流图, 来传递数据。 对于调用图,模块 同样,这个接口 所以,当我将某个东西 这些模块如何重新 有效性和高效性 因此,让我们找出一种 如果该接口 非常重要, 收集有关该接口的 并将其存储在一处。 这便是我们的 同样,系统的 该模块的开关-- 一个是 另一个是 原型。 也就是说, 它包含一个 调用的函数的列表。 这样,我们就可以将 比如,这是一个 从开关进行输入。 您可以将其打开, 您将把这一点与 它连接到什么端口, 它是正逻辑 所有这些低层次细节 这种分离将会 复杂性大有帮助。 这便是我们 复杂性抽象。 换句话说,我们将 所有的低层次细节, 一个可用于使用 同样,包含在 公有函数的原型 也就是该模块的功能 未包含在该模块中的是 模块内容的细节 我们不会将任何 这种私有概念 注意这个头文件-- 本课程中的 都使用了这种奇异的语法, 这是返回参数, 这是有关其功能的 这种语法实际上 doxygen 为整个机器人系统 一种软件文档。 您将会看到, 都代表了您需要 我们将会为您 来支持您开始 所以这个 创建一个美观的 软件的所有功能-- 也就是说, 而不介绍它的 一个模块具有一个 我们说过, 公有函数的原型。 代码文件中包含的是 我们将会在下面的 实际工作方式。 但是在这里,我们只需要 实际的工作方式, 这里。 我们需要变量。 它在 如果我们有任何 它也会在 c 它是如何进行测试的, 一定要非常谨慎地 私有性质。 不要尝试访问 私有信息或 如果您在 您将会看到与该项目 但是如果您查看 例如,这里的这个文件, 这段代码便是在该文件中。 最终,这里的 实际上等效于 调用图。 如果这个函数包含 那么我们便可以 由于这里的这个 所以它可以调用后者的公有函数。 所以这个 这里的这个 这是这个箭头。 所以这种将某个事物 对于简化非常 所以,当我们组建成 您会发现它包含数十个 这个层次结构中。 最后总结一下, 这是一个增加 模块总数的过程。 但是我们希望最大限度地 每秒在不同 传输的字节数。 我们讨论了头文件。 头文件中包含的是 数据的流动方式, 方式。 通过这种方式,我们 高级交互-- 分离其功能和工作方式。 这样,我们将能够打造 所以随着向后面的部分推进, 在本课程开始时, 这时您实际上 但是,当后面变得 您将会看到使用 好的。 在下一个模块中-- 下一个讲座中, 然后,我们将 好的。 稍后回来。
大家好,
我是
在本模块中,我们
我们首先介绍一下
模块是什么,
它同时包含软件和硬件,
所以我们会将它视为
当我们把这些
我们可以从不同的
其中一个角度
这意味着,如果
可以调用针对不同
我们将会绘制这样
这个箭头表示,
这将是低级别。
类似地,如果
可以调用
绘制一个调用图
高级别函数与
因果关系--
而且,我们会将
所有任务--
例如,与开关
以及与
封装在独立的模块中。
我们将要
并不复杂,
配备一个开关。
如果按下开关,
则会将发光二极管
状态。
另一种在互连情况下
称为数据流图。
数据流图
这是一个硬件模块。
这里的所有其他模块
关于开关是否
被编码在
所以,数据是向
即使是
数据实际上也是
而在这里,数据则是
因为我想要
然后,在物理层面上,
可以发光的
而且,通过
我们可以定义
系统的模块化,
这也是系统的精华所在--
是多个模块的函数。
因此,我们希望最大
同时尽量减少
特别是,我们可以
东西,它是每秒
字节数。
因此,我们希望最大
同时尽量减少
针对互联的一个简单的
测量每秒从一个
字节数。
这便是我们将会
那么,让我们开始吧。
当我们讨论如何制造
换句话说,
整体思路就是
可让我们做到这一点的
线程是由正在执行的
所以,引发线程的
我们将会得到一个
其中有一个
而且,我们将会
例如,我可能会有
当我触摸开关时,
我们将会在多个
实际工作方式。
但是在这里,我们只需要
那就是,当您触摸
运行与这个触摸操作
然后,如果我们想要
某个操作,我们
我们将会使用一个频率为,
而且,我们将从这个
我在这里绘制
然后绘制初始化。
然后,我们在这里绘制一些东西。
然后就有了一个循环。
我们之所以
是因为我们可以
一条单一的轨迹。
即使这是一个函数--
即使这个初始化
我们仍然可以绘制一条--
我们可以
一笔画出一条代表
这便是我们将其称为线程的原因。
一系列指令,
引起的操作,
但是中断是特殊的。
中断是硬件
操作。
在这里,我们将
从这里开始,因为
执行该软件,然后
然后重新返回这里。
所以线程是由正在
操作。
在本课程中,
单一的前台线程、
在特定事件时
这是增加系统
您要做的最困难的
确定从哪里开始。
我要告诉您一个
您可能也在其他地方
说法--
需要花费
才能熟练掌握一个技能。
我并不是
如果您坐在电脑前,
编写尽可能优秀的代码,
您可能能够
如果您将这两个
达到一百万行
您将会成为一名
说这些也不是
我的意思是,行动起来。
说这些是为了鼓励您马上
许多的代码。
这张幻灯片讨论的是,
如何完成软件构想。
这涉及到了状态这个概念。
我将状态定义为:
如果您有一个系统,
或者有时候是,
或者您认为什么是真实的,
例如,我可能在这条
我的机器人在这里。
我觉得它在沿着这条路
墙壁太近了。
离右侧墙壁太近--
这便是我认为
您现在要做的是
考虑这个问题,
并写下您的系统
所有状态。
我在一个小圈子里。
我处于停滞状态。
我撞到墙上了。
我走错方向了。
我赢了比赛。
我到达了终点。
所以,我将会考虑
有些状态是
有些则不是。
例如,您可能
闪烁的状态。
这个状态可能会与
所以,状态之间
但是,您需要
考虑哪些事情是
认为是真实的。
这样做后,您可以
我们从哪里开始?
初始状态是什么?
或者是下面的这个
我需要知道什么?
我要得到什么
我离墙壁太近?
在这种情况下,我可以
输入传感器。
然后它不单单是
更是一个嵌入式系统。
所以它有输出。
我该怎么做?
我会采取哪些操作?
我想移动。
我想转弯。
我想停下来--
诸如此类。
我将会使用哪些
这些操作,我需要
我们将会看到,
我们将必须单独
然后更难的是,如何从一个
状态?
换句话说,如果
我想要移到中间位置,
移动到理想位置?
然后,很明显,
我们如何在完成后获知已经完成?
所以,这种状态
在实际坐下来
构想您的软件和
另一种思考
将其分解成模块。
下面我们将介绍这种方法。
用于讨论
模块化部分的
它们具有大致
逐次求精、
和系统分解--
它们都指的是
那就是,我们将会
让我们进行赛跑。
我想要在跑道上
但这太复杂了,
因此,求精的整体
多个片段。
比如,我可能想要移动。
我可能想要进行感测。
我可能想要进行思考。
然后对于上面的
将其分解为更小的部分,
我如何在完成后获知已经完成。
所以,如果我把一个任务
然后子任务
我知道该如何完成--
我将会实施该子任务,
然后,我可以将其
但如果它仍然太复杂,
我将再次进行分解。
所以我们可以讨论诸如停止、
我可以分解模块。
我可以将其
如果它们太复杂,
我将再次进行分解。
例如,对于
这是我可能会用到的传感器之一。
如果我不知道
我将会将其分解成多个部分,
等待一毫秒,
实施输入,
现在我将这个
分解成了多个子模块,
然后,我将会
然后将其重组回去。
需要注意的是,
这是一个问题--
我将其分成两部分--
A1
然后我向前走,
但是还有一种可能,
这部分,A1,可能实际上
因此,将一个对象
它就会变简单。
这整整
真的能让您擅长回答,
更有效且更高效的
但是现在,我想
如果在将问题分解后,
更复杂了,我将会
并使用另外一些
我将会持续
直到子部分比初始
然后,我们会将这些子部分
我们知道,不管是
还是调用图--
我们知道,我们的
不同的部分,从而
但是,我们会有
也就是说,
信息传输速率
最终,与这个
接口将会变得
对于数据流图,
来传递数据。
对于调用图,模块
同样,这个接口
所以,当我将某个东西
这些模块如何重新
有效性和高效性
因此,让我们找出一种
如果该接口
非常重要,
收集有关该接口的
并将其存储在一处。
这便是我们的
同样,系统的
该模块的开关--
一个是
另一个是
原型。
也就是说,
它包含一个
调用的函数的列表。
这样,我们就可以将
比如,这是一个
从开关进行输入。
您可以将其打开,
您将把这一点与
它连接到什么端口,
它是正逻辑
所有这些低层次细节
这种分离将会
复杂性大有帮助。
这便是我们
复杂性抽象。
换句话说,我们将
所有的低层次细节,
一个可用于使用
同样,包含在
公有函数的原型
也就是该模块的功能
未包含在该模块中的是
模块内容的细节
我们不会将任何
这种私有概念
注意这个头文件--
本课程中的
都使用了这种奇异的语法,
这是返回参数,
这是有关其功能的
这种语法实际上
doxygen
为整个机器人系统
一种软件文档。
您将会看到,
都代表了您需要
我们将会为您
来支持您开始
所以这个
创建一个美观的
软件的所有功能--
也就是说,
而不介绍它的
一个模块具有一个
我们说过,
公有函数的原型。
代码文件中包含的是
我们将会在下面的
实际工作方式。
但是在这里,我们只需要
实际的工作方式,
这里。
我们需要变量。
它在
如果我们有任何
它也会在
c
它是如何进行测试的,
一定要非常谨慎地
私有性质。
不要尝试访问
私有信息或
如果您在
您将会看到与该项目
但是如果您查看
例如,这里的这个文件,
这段代码便是在该文件中。
最终,这里的
实际上等效于
调用图。
如果这个函数包含
那么我们便可以
由于这里的这个
所以它可以调用后者的公有函数。
所以这个
这里的这个
这是这个箭头。
所以这种将某个事物
对于简化非常
所以,当我们组建成
您会发现它包含数十个
这个层次结构中。
最后总结一下,
这是一个增加
模块总数的过程。
但是我们希望最大限度地
每秒在不同
传输的字节数。
我们讨论了头文件。
头文件中包含的是
数据的流动方式,
方式。
通过这种方式,我们
高级交互--
分离其功能和工作方式。
这样,我们将能够打造
所以随着向后面的部分推进,
在本课程开始时,
这时您实际上
但是,当后面变得
您将会看到使用
好的。
在下一个模块中--
下一个讲座中,
然后,我们将
好的。
稍后回来。
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
TI-RSLK 模块 4 - 讲座视频 - 设计
所属课程:TI-RSLK 模块 4 - 使用 MSP432 进行软件设计
发布时间:2018.08.27
视频集数:5
本节视频时长:00:19:50
通过调用图、数据流程图、逐步求精、抽象(函数)和模块化设计(页眉文件/代码文件)来学习软件设计。
//=$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'])?>