首页 理论教育 另一个PPM的代码版本解析与优化

另一个PPM的代码版本解析与优化

时间:2023-06-23 理论教育 版权反馈
【摘要】:从上面的程序看,本书CD提供了4个不同版本的PPM_ISR代码。我们已经讨论了PPM_ISRs.c的相关部分。这部分实现使用了和PPM_ISRs.c相同的声明和相同功能的UpdateLEDS()函数。程序清单12.3:另一种创建PPM的方法,截取自PPM_ISRs3.c程序清单12.3的解释如下。第5~9行:如果maxOutput的幅度大于32767,LED1、2、3将开启,LED1、2、3的计数器分别设定为14400、9600和4800。这些计数器保持LED1、2分别开启0.2、0.1s。第21~35行:基于LED灯计数器的状态更新LED_Mask。

另一个PPM的代码版本解析与优化

从上面的程序看,本书CD提供了4个不同版本的PPM_ISR代码。我们已经讨论了PPM_ISRs.c的相关部分。我们将讨论PPM_ISRs3.c,你可以自己学习它的变例PPM_ISRs1.c和PPM_ISRs2.c。

这部分实现使用了和PPM_ISRs.c相同的声明和相同功能的UpdateLEDS()函数。PPM_ISRs3.c的接收ISR部分列于程序清单12.3。

程序清单12.3:另一种创建PPM的方法,截取自PPM_ISRs3.c

程序清单12.3的解释如下。

(1)第1~3行:定义了maxOutput(左右通道的绝对数值的最大值)。

(2)第5~9行:如果maxOutput的幅度大于32767,LED1、2、3将开启,LED1、2、3的计数器分别设定为14400、9600和4800。这些计数器分别保持LED1、2、3开启0.3、0.2、0.1s。(www.xing528.com)

(3)第10~15行:如果maxOutput的输出的幅度大于32000。LED1、2开启,LED1、2的计数器分别被设定为9600、4800。这些计数器保持LED1、2分别开启0.2、0.1s。

(4)第16~19行:如果maxOutput的输出的幅度大于28000。LED1开启,LED1的计数器被设定为4800。这些计数器保持LED1开启0.1s。

(5)第21~35行:基于LED灯计数器的状态更新LED_Mask。

(6)第37行:调用UpdateLED()子程序,顾名思义,它用来更新系统LED的状态。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈