简短的回答…是的,我相信你走对了,vibemac.1;也就是说,我很想听一些更有经验的Harmony人员如何评价你的代码,因为这正是我走的路径。你读过help_.ony.pdf(或者你喜欢的任何格式,选择:pdf,.)吗?OWS帮助,还是HTML?有一个章节叫做第三卷:MPLAB和谐发展,它对基本的、关键的概念有一些很好的描述。它直接关系到你在这里的问题。甚至还有一个关于状态机编程的章节。文档本身目前有7777页长,这似乎令人畏惧,所以我每次只阅读它的部分。如果你的编程是和谐的,我建议你把这个文档变成你的朋友。无论如何,那个代码看起来确实很熟悉。许多并发状态机…就像我正在生产的代码一样。创建好的模块时,我发现自己在完成这些小小的学习练习时,从一个项目到另一个项目剪切和粘贴状态机。有时,我觉得制造可重用的模块是有意义的,其中包含了一些独立的状态机。这些可重用的模块将有自己的.c文件和它们自己的.h文件或文件。在这些可重用模块中,可能会有一些(可能相当多的)函数将您的模块与它的CLIENTS进行交互,其中之一就是您的应用程序。您可能创建的这些可重用模块将很容易在您编写的其他项目中使用。接口函数和状态机设计得非常巧妙,以便使这个新模块尽可能灵活,并且不针对具体项目,从而抽象出其客户端,而不必担心细节。模块不知道它使用的应用程序的任何内容。它只是轮询硬件并通过它的接口函数提供有关硬件的信息。和谐也是一样的,不是吗?因此,我们可以通过创建一个可移植的、可重用的按钮驱动程序来模拟和声(我认为和谐并不真正具备)。不管您正在构建什么东西,或者谁构建的,如果这个东西是Microchip或Digilent教练板套件,或者它是一个数十亿美元的国防项目中的一个组件;如果该东西有一个按钮,或者您想使用的一串按钮,您的应用程序可能希望知道一些点亮的比如,按钮是否被按下,释放了多久,按了多久,按钮快速重复了多少次,双击过吗,按钮按下器是否打算像键盘键一样调用自动重复功能?假设一个创建的按钮处理模块可能需要使用一些和声提供的东西,例如定时器。然后,按钮模块(或者我可以说按钮驱动程序)必须充当Harmony的计时器驱动程序和/或系统服务计时器模块的附加客户端;因此,您需要使用Harmony的计时器驱动程序(而不是STATIC)的DYNAMIC实现——这就是Harmony的美——所以,它可以防止项目中众多模块之间的冲突,这些模块还需要定时器用于其他目的。这是对代码工程非常有逻辑和独创性的方法,很好很和谐地工作。使用您自己的CALLBACKS OF Your OWNAn这张图片的重要部分,我没提到的是回调函数的概念。它们是和谐环境下工作的重要组成部分。回调函数允许模块不知道应用程序。根据到目前为止使用按钮驱动程序模块的经验,我发现处理按钮按下、按钮释放和按钮自动重复事件的最有效的方法是使用回调函数(在某种程度上类似于事件驱动编程)。因此,在初始化模块时,给模块提供回调函数指针。当按下按钮时,驱动程序所做的不仅仅是简单地在某个地方设置一些标志,实际上,(首先检查是否已经提供了回调,然后如果是…),调用回调函数,以便应用程序可以快速地对磁盘上的输入做任何它想做的事情奥弗里这是Harmony框架反复使用的相同概念。POLLING VS.INTERRUPT DRIVENY状态匹配可能不是从您的应用程序调用的,或者从使用Configurator时Harmony生成的SYS_Tasks()函数调用的;可以从中断v调用新模块的护目镜。如果使用Orthor并创建一个包含基于中断的USAT实现的项目,您将看到一个例子,其中生成并放置在SythyStudio.C中的中断服务路由直接调用一些…任务(…)类型函数。我预见到我们的代码可能做同样的事情。像你一样,我有时会想,我是否走在正确的道路上,这感觉好像我明白了,但我不确定。我想知道:专家们有什么要说的?他们的批评和建议是什么?我是偏离轨道还是正轨?希望这些小部分有助于…干杯!
简短的回答…是的,我相信你走对了,vibemac.1;也就是说,我很想听一些更有经验的Harmony人员如何评价你的代码,因为这正是我走的路径。你读过help_.ony.pdf(或者你喜欢的任何格式,选择:pdf,.)吗?OWS帮助,还是HTML?有一个章节叫做第三卷:MPLAB和谐发展,它对基本的、关键的概念有一些很好的描述。它直接关系到你在这里的问题。甚至还有一个关于状态机编程的章节。文档本身目前有7777页长,这似乎令人畏惧,所以我每次只阅读它的部分。如果你的编程是和谐的,我建议你把这个文档变成你的朋友。无论如何,那个代码看起来确实很熟悉。许多并发状态机…就像我正在生产的代码一样。创建好的模块时,我发现自己在完成这些小小的学习练习时,从一个项目到另一个项目剪切和粘贴状态机。有时,我觉得制造可重用的模块是有意义的,其中包含了一些独立的状态机。这些可重用的模块将有自己的.c文件和它们自己的.h文件或文件。在这些可重用模块中,可能会有一些(可能相当多的)函数将您的模块与它的CLIENTS进行交互,其中之一就是您的应用程序。您可能创建的这些可重用模块将很容易在您编写的其他项目中使用。接口函数和状态机设计得非常巧妙,以便使这个新模块尽可能灵活,并且不针对具体项目,从而抽象出其客户端,而不必担心细节。模块不知道它使用的应用程序的任何内容。它只是轮询硬件并通过它的接口函数提供有关硬件的信息。和谐也是一样的,不是吗?因此,我们可以通过创建一个可移植的、可重用的按钮驱动程序来模拟和声(我认为和谐并不真正具备)。不管您正在构建什么东西,或者谁构建的,如果这个东西是Microchip或Digilent教练板套件,或者它是一个数十亿美元的国防项目中的一个组件;如果该东西有一个按钮,或者您想使用的一串按钮,您的应用程序可能希望知道一些点亮的比如,按钮是否被按下,释放了多久,按了多久,按钮快速重复了多少次,双击过吗,按钮按下器是否打算像键盘键一样调用自动重复功能?假设一个创建的按钮处理模块可能需要使用一些和声提供的东西,例如定时器。然后,按钮模块(或者我可以说按钮驱动程序)必须充当Harmony的计时器驱动程序和/或系统服务计时器模块的附加客户端;因此,您需要使用Harmony的计时器驱动程序(而不是STATIC)的DYNAMIC实现——这就是Harmony的美——所以,它可以防止项目中众多模块之间的冲突,这些模块还需要定时器用于其他目的。这是对代码工程非常有逻辑和独创性的方法,很好很和谐地工作。使用您自己的CALLBACKS OF Your OWNAn这张图片的重要部分,我没提到的是回调函数的概念。它们是和谐环境下工作的重要组成部分。回调函数允许模块不知道应用程序。根据到目前为止使用按钮驱动程序模块的经验,我发现处理按钮按下、按钮释放和按钮自动重复事件的最有效的方法是使用回调函数(在某种程度上类似于事件驱动编程)。因此,在初始化模块时,给模块提供回调函数指针。当按下按钮时,驱动程序所做的不仅仅是简单地在某个地方设置一些标志,实际上,(首先检查是否已经提供了回调,然后如果是…),调用回调函数,以便应用程序可以快速地对磁盘上的输入做任何它想做的事情奥弗里这是Harmony框架反复使用的相同概念。POLLING VS.INTERRUPT DRIVENY状态匹配可能不是从您的应用程序调用的,或者从使用Configurator时Harmony生成的SYS_Tasks()函数调用的;可以从中断v调用新模块的护目镜。如果使用Orthor并创建一个包含基于中断的USAT实现的项目,您将看到一个例子,其中生成并放置在SythyStudio.C中的中断服务路由直接调用一些…任务(…)类型函数。我预见到我们的代码可能做同样的事情。像你一样,我有时会想,我是否走在正确的道路上,这感觉好像我明白了,但我不确定。我想知道:专家们有什么要说的?他们的批评和建议是什么?我是偏离轨道还是正轨?希望这些小部分有助于…干杯!
举报