基于项目“DA1458x_DSPS_v_5.150.2”,我只是修改了一些配置,看下面:
1.“user_config.h”
const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF;
静态const struct default_handlers_configuration user_default_hnd_conf = {
//配置缺省处理程序使用的advertise操作
/ /可能的值:
/ /——DEF_ADV_FOREVER
/ /——DEF_ADV_WITH_TIMEOUT
.adv_scenario = DEF_ADV_WITH_TIMEOUT,
//配置DEF_ADV_WITH_TIMEOUT的通告时间。
//以10ms为计时单位。使用MS_TO_TIMERUNITS宏进行转换
//从毫秒(ms)到定时器单位。
.advertise_period = MS_TO_TIMERUNITS (10000),
//配置默认处理程序的安全启动操作
//如果启用了安全性(CFG_APP_SECURITY)
.security_request_scenario = DEF_SEC_REQ_NEVER
};
2.“da1458x_config_basic.h”
#定义CFG_WDOG
# undef CFG_MEM_MAP_EXT_SLEEP
# undef CFG_MEM_MAP_DEEP_SLEEP
#定义CFG_DEVELOPMENT_DEBUG
然后我开始调试,在10s之后,程序将进入函数是NMI_HandlerC()。
为什么它要进入NMI_HandlerC() ?
请帮帮我,谢谢!
关键词:
设备:
嗨z0806020433,
这是因为您已经定义了监管机构和您已经设置.adv_scenario = DEF_ADV_WITH_TIMEOUT禁用睡眠模式,这意味着在某种程度上设备将停止广告(DEF_ADV_WITH_TIMEOUT),由于设备将无事可做,它将在WFI()中等待中断,而看门狗仍在计数(因为你启用了它并删除了睡眠,在睡眠模式下看门狗将在设备处于睡眠模式时被禁用)。因为看门狗在计数,你最终会得到一个NMI中断,这意味着看门狗经过了。
你也不必禁用CFG_MEM_MAP_EXT_SLEEP,这只是内存配置,如果你想禁用睡眠,只需ARCH_SLEEP_OFF定义就可以了。
由于MT_dialog
非常感谢!