微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541不能debug

CC2541不能debug

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

我的cc2541板子能用CCdebugger下载程序,而且下载一切正常,但是不能在线调试,一直停留在第一行HAL_BOARD_INIT();,有谁知道可能是什么原因吗?非常感谢

检查晶振,初始化有对晶振的操作,32K和32Mhz的晶振都要检查一下。另外,不会为了省成本,把外部32K晶振给去了吧?

当然没有省去了!我还需要低功耗!后来用SmartRF Flash Programmer读了一下芯片,一直提示芯片被锁死了!难道是晶振的问题?

停在这行,表示你可以进入调试。

#define HAL_BOARD_INIT()                                                       \
{                                                                              \
  /* Set to 16Mhz to set 32kHz OSC, then back to 32MHz */                      \
  START_HSOSC_XOSC();                                                          \
  SET_OSC_TO_HSOSC();                                                          \
  SET_32KHZ_OSC();                                                             \
  SET_OSC_TO_XOSC();                                                           \
  STOP_HSOSC();                                                                \
                                                                               \
  /* Enable cache prefetch mode. */                                            \
  PREFETCH_ENABLE();                                                           \
}

把宏去掉则是如下,可以看到有很多while()语句,可以把如下替代拷贝到程序里,再调试下试试,看停在什么地方,就可以定位是哪个晶振没有起来。

你用示波器测测也可以看出来。

  //START_HSOSC_XOSC();
  SLEEPCMD &= ~OSC_PD;              /* start 16MHz RCOSC & 32MHz XOSC */        
  while (!(SLEEPSTA & XOSC_STB)); /* wait for stable 32MHz XOSC */            
                                                                        
   /* Set to 16Mhz to set 32kHz OSC, then back to 32MHz */                                                                                  
    //SET_OSC_TO_HSOSC();                                                         
  CLKCONCMD = (CLKCONCMD & 0x80) | CLKCONCMD_16MHZ;                            
  while ( (CLKCONSTA & ~0x80) != CLKCONCMD_16MHZ );                            
       
  // SET_32KHZ_OSC();    
   CLKCONCMD = (CLKCONCMD & ~0x80) | OSC_32KHZ;                                 
  while ( (CLKCONSTA & 0x80) != OSC_32KHZ );                                   
      
    //SET_OSC_TO_XOSC();                                                            
   CLKCONCMD = (CLKCONCMD & 0x80) | CLKCONCMD_32MHZ;                            
   while ( (CLKCONSTA & ~0x80) != CLKCONCMD_32MHZ );
      
    //STOP_HSOSC();
    SLEEPCMD |= OSC_PD;             /* stop 16MHz RCOSC */   

多谢,我试试先!

你好,

     我对CC 2541进行debug,无法进入函数,我step  into一下,它就闪一下,闪了几次就到下一个函数,这是怎么回事啊?最关键的是,有些函数是可以进入的。

  初始化的函数不能进入,

 HAL_BOARD_INIT();这个不能进入

  // Initialize board I/O

  InitBoard( OB_COLD );这个可以进入!

首先确保硬件比如晶振,复位等正确。

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

网站地图

Top