CC2540 如何在BLE协议增加 LED 个数?

2019-07-18 14:53发布

CC2540要控制五个LED灯,并且都需独立控制,包括亮灭,不同次数的闪烁。LED的驱动实在太过精妙复杂,研究了很长时间不得要领。

BLE协议栈定义了四个,我照着添加了一个,但是没有用,以下是修改的地方:

void HalLedInit (void)

{

....

LED5_DDR |= LED5_BV;

...

}

void HalLedOnOff (uint8 leds, uint8 mode)

{

...

if (leds & HAL_LED_5)
{
if (mode == HAL_LED_MODE_ON)
{
HAL_TURN_ON_LED5();
}
else
{
HAL_TURN_OFF_LED5();
}
}

...

}

头文件中:

#define LED5_BV    BV(1)
#define LED5_SBIT   P1_1
#define LED5_DDR    P1DIR
#define LED5_POLARITY    ACtiVE_LOW

#define HAL_LED_5   0x10
#define HAL_LED_ALL    (HAL_LED_1 | HAL_LED_2 | HAL_LED_3 | HAL_LED_4 | HAL_LED_5)

还有一些开关宏如#define HAL_TURN_ON_LED5()        st( LED5_SBIT = LED5_POLARITY (1); )都添加了

调试发现新添加的LED不起作用,比如调用HalLedBlink(HAL_LED_5,3,50,1000);  HAL_LED_5的值没有传递到HalLedOnOff();而前4个LED都正常。

求道友指点,还有什么地方遗漏了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
北上北京
1楼-- · 2019-07-18 19:17
/* Defaults */
#define HAL_LED_DEFAULT_MAX_LEDS      4

這有改成 5 嗎?
jefljel
2楼-- · 2019-07-18 21:00
确实是这个原因,申请的结构体空间不够,控制LED_5时匿名访问了栈空间的某个不为0的值,条件不满足导致无法执行开关宏,谢谢指点

一周热门 更多>