CC2540 按键和led问题
hi,各位!
我用BLE1.3 SDK开发,修改SimpleBLEPeripheral项目,在SimpleBLEPeripheral_Init函数中添加
1、HalLedSet( (HAL_LED_1 | HAL_LED_3), HAL_LED_MODE_ON ); 为什么在系统开始两个LED灯闪下就灭了?然后我把LL_ProcessEvent,LL_Init任务注释掉,重新编译下载到开发板中,上电后,两个LED一直亮。 我看代码中:该项目中其他任务都没有对LED进行操作,为什么出现该现象。
2、而且另外一个问题:如果我把LL_ProcessEvent,LL_Init任务注释掉,按下按键就无法产生中断了, LL_Init是BLE的底层协议任务,跟按键和LED应该没有什么关系吧。
3、在按键消息响应函数中添加led控制函数,如下:
static void simpleBLEPeripheral_HandleKeys( uint8 shift, uint8 keys )
{
if ( keys & HAL_KEY_SW_1 )
{
HalLedSet( HAL_LED_1, HAL_LED_MODE_ON );
}
if ( keys & HAL_KEY_SW_2 )
{
HalLedSet( HAL_LED_2, HAL_LED_MODE_ON );
}
if ( keys & HAL_KEY_SW_3 )
{
HalLedSet( HAL_LED_3, HAL_LED_MODE_ON );
}
if ( keys & HAL_KEY_SW_4 )
{
HalLedSet( HAL_LED_4, HAL_LED_MODE_ON );
}
}当按下按键时,led一直闪,松开按键LED灯灭掉,为什么不是按下按键就点亮对应的LED灯?
请高手解释下,为什么出现这种问题?谢谢!
hi,
1. 闪下就灭, 因为系统一打开, 没有连接, 或者不广播的话系统马上进入sleep模式, 会把LED都关闭.
没事干就会调用osal_pwrmgr_powerconserve(), 如果你追下去, 就会看到调用HalLedEnterSleep(), 在sleep时候关掉所有LED也是为了省电. 你可以把这个注销试试.
2. 我试了一下, 注销LL_Init()跟LL_ProcessEvent(), 一切正常, 按键中断正常产生. 是不是你还修改了代码其他地方, 或者宏定义?
3. 请参照1. 的建议试一下.
hi,
我用的是Ti1.1版本,这个开发发版有三盏灯,可能和TI公司里的开发板不一样,按照原理图,我在hal_board_cfg.h中对IO口进行了配置
按照您在上文发的帖子HalLedSet((HAL_LED_1 | HAL_LED_2 | HAL_LED_3),HAL_LED_MODE_ON);能点亮1和2两盏灯,但第三偶盏灯为什么就不亮呢? 不管怎么设置HalLedSet()的参数,第三盏灯就是没有反应
还有一个问题是在上图中我把宏定义LED3_BV等........改为 LED2_BV.......如图
.结果第三盏灯还是不亮,没有反应。还请您帮我指点一下,,
hi,
我用的是Ti1.1版本,这个开发发版有三盏灯,可能和TI公司里的开发板不一样,按照原理图,我在hal_board_cfg.h中对IO口进行了配置
按照您在上文发的帖子HalLedSet((HAL_LED_1 | HAL_LED_2 | HAL_LED_3),HAL_LED_MODE_ON);能点亮1和2两盏灯,但第三偶盏灯为什么就不亮呢? 不管怎么设置HalLedSet()的参数,第三盏灯就是没有反应
还有一个问题是在上图中我把宏定义LED3_BV等........改为 LED2_BV.......如图
.结果第三盏灯还是不亮,没有反应。还请您帮我指点一下,,
1、首先确保电路图与软件配置的端口一致
2、另外注意软件中端口要初始化,把相应的I/O口设置成输出
3、如果你自己没有设置I/O初始化,请注意修改void HalLedInit (void)这个函数,如下所示:
4、希望以上回答可以帮到你,并祝你早日找到问题原因 ,并分享一下解决问题的方法,谢谢!