CC2541不能debug
我的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 );这个可以进入!
首先确保硬件比如晶振,复位等正确。