杰里的休眠唤醒和一些别的ic不同,杰里的ic唤醒之后PC指针指向的不是休眠前的一条指令,而是代码的起始地址,类似与复位,所以有些重要的变量需要保存的一定要在休眠前写入VM中,然后再复位的时候读回,include_lib\common\flash_api.h
文件中添加自己的VM枚举,调用接口函数来保存数据。
//include_lib\common\flash_api.h
//------请在次分界线下添加新的VM项-----//
//++++++用户申请flash
user_VM_XM_rtc_task,
user_VM_XM_system_status_flag,
VM_MAX_INDEX,
s32 vm_write(u8 hdl, const void *data_buf, u16 len);
s32 vm_read(u8 hdl, void *data_buf, u16 len);
vm_write(user_VM_XM_system_status_flag,user_system_status_flag_buffer,11);
vm_read(user_VM_XM_system_status_flag,user_system_status_flag_buffer,11);
杰里休眠唤醒有两种,一种是PR口唤醒,另一种是普通IO口唤醒,两种不同的休眠有不同的进入休眠函数,不能互用,及调用enter_sys_soft_poweroff()
之后只能用PR口唤醒,调用enter_sys_sleep_mode();
之后只能使用配置的通道唤醒。
PR口
//初始化成下降沿唤醒
void PR2_configure_wakeUP(void)
{
//PR2 io输出
PORTR_PU (PR2, 1);
PORTR_PD (PR2, 0);
PORTR_DIR(PR2, 1);
PORTR_DIE(PR2, 1);
RTC_SFR_SET(RTC_CON_ADDR04