微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2540 按键和led问题

CC2540 按键和led问题

时间:10-02 整理:3721RD 点击:

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、希望以上回答可以帮到你,并祝你早日找到问题原因 ,并分享一下解决问题的方法,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top