程序停在 ZMacInit() 函数
如果不用jtag调试,程序是会停在 ZMacInit() 中的 MAC_Init () 函数, 直到触发了某个按键才往下执行。 该帖子的使用方法在应用层修改,应该不科学,因为 ZMacInit() 在osal初始化之前。
请问您现在使用的例程及协议栈版本是什么?另外能否给出您现在IAR工程的预编译选项呢?
一般停在MacInit,都是外部晶振什么硬件不正常导致的,遇到过好几次了,都是这样解决的
协议版本是 Z-Stack Home 1.2.2a.44539,预编译选项如下;
SECURE=1
TC_LINKKEY_JOIN
NV_INIT
NV_RESTORE
xHOLD_AUTO_START
ZTOOL_P1 MT_TASK MT_APP_FUNC MT_SYS_FUNC MT_ZDO_FUNC xLCD_SUPPORTED=DEBUG MULTICAST_ENABLED=FALSE ZCL_READ xZCL_WRITE ZCL_REPORT xZCL_EZMODE ZCL_BASIC ZCL_IDENTIFY ZCL_ON_OFF ZCL_SCENES ZCL_GROUPS xZCL_LEVEL_CTRL ZCL_DIAGNOSTIC FEATURE_SYSTEM_STATS SINGLE_KEY KEY WDT_IN_PM1 MANAGED_SCAN
完美解决了.
默认的就是外部时钟源噢。如果外部没有接32K的,需要更改hal_board_cfg.cfg文件里面的设置。
* hal_board_cfg.h
/* ------------------------------------------------------------------------------------------------
* Clock Speed
* ------------------------------------------------------------------------------------------------
*/
#define HAL_CPU_CLOCK_MHZ 32
#define OSC32K_CRYSTAL_INSTALLED FALSE // 插入此行!!!!!!!!!!!!!!!!
/* 32 kHz clock source select in CLKCONCMD */
#if !defined (OSC32K_CRYSTAL_INSTALLED) || (defined (OSC32K_CRYSTAL_INSTALLED) && (OSC32K_CRYSTAL_INSTALLED == TRUE))
#define OSC_32KHZ 0x00 /* external 32 KHz xosc */
#else
#define OSC_32KHZ 0x80 /* internal 32 KHz rcosc */
#endif