IRQ被设置为P2_7。
问题是:
1)如果在逐步调试模式下执行IDE,它会睡眠,并刚刚观察到嗅探器发出一次的广告。但是,如果按下P2_7键,它不会触发恢复或任何其他方法我设置断点。
2)如果退出IDE逐步调试模式,我观察了广告的持续发出,但为什么它即使是我不按按钮触发P2_7,我猜这可能是由于脱髓。更改数字后,它仍然如此。
3)如果我评论出“user_app_adv_start();”从恢复方法中,我没有观察持续发送的广告。
问题是:
1)只有在按下按钮时,才能才能释放一个中断。
2)是否有任何方法可以在“从睡眠中恢复”方法中在IDE调试模式下设置断点?
设置中的代码
wkupct_register_callback(wake_up_cb);
wkupct_enable_irq(0x800000,0x800000,15,20);
唤醒方法
void wake_up_cb(void)
{
if(getBits16(sys_stat_reg,per_is_down))
periph_init();
ARCH_BLE_FORCE_WAKEUP();
ARCH_BLE_EXT_WAKEUP_OFF();
}
从睡梦中恢复
void user_resume_sleep(void)
{
user_app_adv_start();
}
定时回调将设备设置为深睡眠
静态void adv_data_update_timer_cb()
{
app_adv_data_update_timer_ed = 0xffff;
app_easy_gap_advertise_stop();
ARCH_SET_DEEP_SLEEP();
ARCH_BLE_EXT_WAKEUP_ON();
}
设备:
嗨对话框,
有人可以帮忙吗?
彼得
嗨对话框,
有人可以帮忙吗?
彼得
我不知道您正在使用哪个SDK版本,但无论如何都有一些要记住的要点
1.您无法调试深度睡眠模式模式,导致它擦拭SRAM内存,并且应该有OTP内存中的代码来启动
2.您无法调试其干扰JTAG的扩展睡眠模式情况。
但是,Arch_System.c文件有一个小事
if((app_get_sleep_mode()== 2)||(app_get_sleep_mode()== 1))
{
setword16(set_freeeze_reg,frz_wdog);//停止WDOG,直到删除调试器
而((getword16(sys_stat_reg)&dbg_is_up)== dbg_is_up){};
setbits16(sys_ctrl_reg,debugger_enable,0);//关闭调试器
}
此代码在有没有停止调试睡眠模式,因此如果您评论此代码,我认为您可以在扩展睡眠模式下看到断点
3.我不认为你有一个谴责问题,我想从睡眠系统醒来后再次睡觉模式,因此不断广告。您应该在user_resume_sleep中再次启动计时器