z-stack/cc2530协议栈如何修改LED的设置及HalLedBlink的使用

  本文介绍了Z-stack中如何修改默认的LED的设置,并且讲解了HalLedBlink的函数,以及如何使用此函数简便的输出PWM波形。
  Z-stack的中默认的LED是P1_0,P1_1,P1_4,并且是高电平触发,如果自身的板子中与其设计不一样的话,是没有办法直接使用其控制LED的函数HalLedBlink(HAL_LED_2,5,50,200)。当然,还是可以使用直接操作IO口的方法来操作LED灯,不过HalLedBlink()这个函数是十分方便的,所以我这里演示一下如何修改LED。
  由于我手头的板子是低电平触发的,所以首先可以修改触发方式
1修改触发方式,改为低电平触发
找到hal_board_cfg.h
z-stack/cc2530协议栈如何修改LED的设置及HalLedBlink的使用_第1张图片
然后找到116和123,将ACTIVE_HIGH改为ACTIVITY_LOW
z-stack/cc2530协议栈如何修改LED的设置及HalLedBlink的使用_第2张图片
然后我的板子上LED3是P1_7,所以可想而知,修改的方法是把第127,128行改为
#define LED3_BV BV(7)
#define LED3_SBIT P1_7

  注,如果不用这些LED,建议删除这些语句,否则可能会对其它IO口产生影响。以删除LED3为例,除了删除126行

  /* 3 - Yellow */
  #define LED3_BV           BV(7)
  #define LED3_SBIT         P1_7
  #define LED3_DDR          P1DIR
  #define LED3_POLARITY     ACTIVE_HIGH

  在248行左右,还有语句
HAL_TURN_OFF_LED3(); \
LED3_DDR |= LED3_BV; \
  要删除,注意删除整行语句,不要留行间空隙。因为这么多行是同一个define语句

  另介绍Z-stack操作LED的函数HalLedBlink
void HalLedBlink (uint8 leds, uint8 numBlinks, uint8 percent, uint16 period)
函数介绍如下

/***************************************************************************************************
 * @fn      HalLedBlink
 *
 * @brief   Blink the leds
 *
 * @param   leds       - bit mask value of leds to be blinked
 *          numBlinks  - number of blinks
 *          percent    - the percentage in each period where the led
 *                       will be on
 *          period     - length of each cycle in milliseconds
 *
 * @return  None
 ***************************************************************************************************/

  可以看出这些参数分别是,操作哪个LED灯,闪几下,亮的时间的百分比,一个闪烁的周期是多少。之所以说这个函数很好用,是因为可以看出来,除了控制LED灯闪烁的命令之外,通过百分比和周期的设置,这个函数可以直接控制某个IO口输出脉宽调制的波形,也就是这个函数可以用来输出PWM。
如下图是使用CC2530的P1_7(3.3V)控制一个5V的灯,通过PWM来控制灯亮度的办法。HalLedBlink的最后一个参数可以填10,倒数第二个参数就是高电平时间所占总时间的百分比,值越大灯的平均亮度越高。

z-stack/cc2530协议栈如何修改LED的设置及HalLedBlink的使用_第3张图片

你可能感兴趣的:(ZigBee,z-stack,LED,cc2530,HalLedBlin,pwm)