CC2530在IAR下单步调试

IAR下无法调试解决方案

本文针对的情况是CC-Debugger调试线已经接好,用SmartRF Flash programmer可以编程。

但是用IAR IDE环境在此输入图片描述

的单步调试无法运行,出现下面情况的解决方法。

CC2530在IAR下单步调试_第1张图片

这明显是由于驱动文件匹配不正确导致的。

在win7下打开设备管理器,会看见Cebal Controlled devices里面有一个CC-Debugger。它对应的驱动在8051\drivers\Texas Instruments目录下面。有这些文件:
CC2530在IAR下单步调试_第2张图片

ref04eb.inf对应的是旧版的驱动2.0.0.0,这个才能在IAR下进行调试。而新版本的驱动只能用SmartRF进行下载。

CC2530在IAR下单步调试_第3张图片

程序实例

下面对Zigbee无线点对点的线透明传输程序进行调试。

参见http://my.oschina.net/lvyi/blog/201548,我想开机就自启Coordinator的端口绑定,因为我的PCB电路上没有按键去触发按键事件来实现绑定,先写下列程序进行测试。

<!-- lang: cpp -->
 /**************************************************************************************************
 * 函数名称:SerialApp_ProcessEvent
 *
 * 功能描述:用户应用层任务处理函数
 *
 * 参    数:task_id - 任务ID
 *           events - 当前需处理的事件
 *
 * 返 回 值:未处理的事件
 **************************************************************************************************/
UINT16 SerialApp_ProcessEvent( uint8 task_id, UINT16 events )
{
  (void)task_id;  

  if ( events & SYS_EVENT_MSG )    //用户层处理函数的系统事件
  {
    afIncomingMSGPacket_t *MSGpkt;

    while ( (MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SerialApp_TaskID )) )
    {
      switch ( MSGpkt->hdr.event )
      { 
      case ZDO_CB_MSG:             //ZDO层收到新的任务信息回调处理事件
    SerialApp_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt );  
    break;

    case KEY_CHANGE:             //按键事件
    SerialApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
    break;

    case AF_INCOMING_MSG_CMD:   

    SerialApp_ProcessMSGCmd( MSGpkt ); //执行进来消息命令的回调函数
    break;

     default:
      SerialApp_HandleKeys(0,11);//测试,默认就行发起绑定
    }

    osal_msg_deallocate( (uint8 *)MSGpkt );
  }

  return ( events ^ SYS_EVENT_MSG );
}

if ( events & SERIALAPP_SEND_EVT )  //串口发送请求,这里是指串口通过CC2530发送到另一个无线设备
{
SerialApp_Send();
return ( events ^ SERIALAPP_SEND_EVT );
}

if ( events & SERIALAPP_RESP_EVT )  //发送回复信息事件
{
SerialApp_Resp();
return ( events ^ SERIALAPP_RESP_EVT );
}

return ( 0 );  

}

我自己加了SerialApp_HandleKeys(0,11),默认发起绑定。因为还没弄清楚Zstack的函数程序执行顺序,在这个处理函数的default中加入这句话进行自动绑定测试。

实测发现可以进行通信。但是一个存在的问题是,每次进入循环判断switch ( MSGpkt->hdr.event )时,如果没有其他事件,会再次发生绑定请求。还有待于进一步研究,最好是去除断电绑定这种机制,让它们全自动组网。

你可能感兴趣的:(CC2530在IAR下单步调试)