windows mobile之LED驱动之结构体NLED_SETTINGS_INFO,可控亮度,占空比。搞了好久,终于跟到本质了。
如下:
struct NLED_SETTINGS_INFO
{
UINT LedNum; // @FIELD LED number, 0 is first LED
INT OffOnBlink; // @FIELD 0 == off, 1 == on, 2 == blink
LONG TotalCycleTime; // @FIELD total cycle time of a blink in microseconds
LONG OnTime; // @FIELD on time of a cycle in microseconds
LONG OffTime; // @FIELD off time of a cycle in microseconds
INT MetaCycleOn; // @FIELD number of on blink cycles
INT MetaCycleOff; // @FIELD number of off blink cycles
};
故名思义:
LedNum——LED的ID号,也就是CPU的管脚号。
OffOnBlink——LED的状态。ON为常亮,OFF为常关。
当状态为ON和OFF时,下边的所有参数均失效,因为它们都是为Blink这个状态配置的。
Blink为闪烁状态。用以下几个参数来配置闪烁的时间分配。
TotalCycleTime——电平变化周期。电平一高一低的时间长度为周期(这里的电平高低并不代表亮灭,因为可能工作在PWM半亮状态,以电平周期为准)。这个周期跟51的时钟周期类似。
TotalCycleTime=OnTime+OffTime;
OnTime——一个电平周期中,电平为ON的时间。(均微秒为单位)
OffTime——一个电平周期中,电平为OFF的时间。
MetaCycleOn——这个东西比较难理解。
假设LED工作在PWM模式。每个方波的周期就是电平周期。
当需要三个方波用来设置亮度(半亮状态),后五个方波用来熄灭LED灯时。
这时,MetaCycleOn就等于3。MetaCycleOff就等于5。
MetaCycleOff——当理解了MetaCycleOn,这个也就理解了。
直观图如下: