This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2541不能debug

Other Parts Discussed in Thread: CC2541

我的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 );这个可以进入!

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