我的cc2541板子能用CCdebugger下载程序,而且下载一切正常,但是不能在线调试,一直停留在第一行HAL_BOARD_INIT();,有谁知道可能是什么原因吗?非常感谢
Yue TANG:
检查晶振,初始化有对晶振的操作,32K和32Mhz的晶振都要检查一下。另外,不会为了省成本,把外部32K晶振给去了吧?
sayno:
回复 Yue TANG:
当然没有省去了!我还需要低功耗!后来用SmartRF Flash Programmer读了一下芯片,一直提示芯片被锁死了!难道是晶振的问题?
Yue TANG:
停在这行,表示你可以进入调试。
#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 */
sayno:
回复 Yue TANG:
多谢,我试试先!
shuzhou wong:
回复 Yue TANG:
你好,
我对CC 2541进行debug,无法进入函数,我step into一下,它就闪一下,闪了几次就到下一个函数,这是怎么回事啊?最关键的是,有些函数是可以进入的。
初始化的函数不能进入,
HAL_BOARD_INIT();这个不能进入
// Initialize board I/O
InitBoard( OB_COLD );这个可以进入!
da qin zheng sheng:
回复 shuzhou wong:
首先确保硬件比如晶振,复位等正确。
TI中文支持网


