ADV超时后,程序进入NMI_HandlerC()

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
3个帖子/ 0个新
最后发表
z0806020433
离线
最后看到:1年1个月前
加入:2016-05-05 13:32
ADV超时后,程序进入NMI_HandlerC()

基于项目“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() ?

请帮帮我,谢谢!

关键词:
设备:
MT_dialog
离线
最后看到:4个月2周之前
工作人员
加入:2015-06-08 34
嗨z0806020433,

嗨z0806020433,

这是因为您已经定义了监管机构和您已经设置.adv_scenario = DEF_ADV_WITH_TIMEOUT禁用睡眠模式,这意味着在某种程度上设备将停止广告(DEF_ADV_WITH_TIMEOUT),由于设备将无事可做,它将在WFI()中等待中断,而看门狗仍在计数(因为你启用了它并删除了睡眠,在睡眠模式下看门狗将在设备处于睡眠模式时被禁用)。因为看门狗在计数,你最终会得到一个NMI中断,这意味着看门狗经过了。

你也不必禁用CFG_MEM_MAP_EXT_SLEEP,这只是内存配置,如果你想禁用睡眠,只需ARCH_SLEEP_OFF定义就可以了。

由于MT_dialog

z0806020433
离线
最后看到:1年1个月前
加入:2016-05-05 13:32
非常感谢!

非常感谢!