我正在尝试将我的主板设置为暂停模式,然后将其唤醒并将其设置为运行模式。
我阅读了 AN3316 并编写了这段代码,但它不起作用。
如果(pal_lld_readpad(PORT_E,按钮)==0)
{
停止模式标志 = 1U;
pal_lld_togglepad(PORT_H,LEDTEST);
osalThreadDelayMilliseconds(100);
pal_lld_togglepad(PORT_H,LEDTEST);
}
如果(停止模式标志 == 1U){
/*(模式设置为 HALT)dar safhe 25 Applica
tion noteSPC560B power and mode management*/
ME.HALT0.B.CFLAON=2; //(低功耗模式下的代码闪存)
ME.HALT0.B.DFLAON=2; //(低功耗模式下的数据闪存)
ME.HALT0.B.FXOSC0ON = 1; //(打开XTAL)
ME.HALT0.B.FMPLLON = 1; //(打开PLL)
ME.HALT0.B.SYSCLK = 4; //(将 PLL 设置为设备系统时钟)
/*(外设模式设置HALT模式:)*/
ME.LPPC[0].B.HALT0 = 1; //(在 HALT 中激活低功耗外设配置“0”)
ME.PCTL[4].B.LP_CFG = 0; // 为偏移 = 4 标识的 DSPI0 选择低功耗外设配置“0”(参见图 x)
ME.PCTL[32].B.LP_CFG = 0; //为偏移 = 32 标识的 ADC 选择低功耗外设配置“0”(参见图 x)
ME.PCTL[48].B.LP_CFG = 0; //为偏移 = 48 标识的 lin 选择低功耗外设配置“0”(参见图 x)
ME.PCTL[16].B.LP_CFG = 0; //为偏移 = 16 标识的 FlexCAN0 选择低功耗外设配置“0”(参见图 x)
/*定时器设置:参见第 5 步(RUN0 到 HALT 模式)*/
/*请求转换到 RUN0 模式:因此,在 RUN0 到 HALT 转换的情况下,应该完成这两个寄存器写入:*/
ME.MCTL.R = 0x80005AF0;
ME.MCTL.R = 0x8000A50F;
而 (ME.GS.B.S_MTRANS != 0){}
而 (ME.IS.B.I_MTC != 0){}
}
void ConfigureWKPU(void) {
/* 启用 WKPU PCTL */
SPCSetPeripheralClockMode(69,
SPC5_ME_PCTL_RUN(2) | SPC5_ME_PCTL_LP(3));
INTC_PSR(46) = 7;
WKUP.WRER.R = (1U << 0); // 启用唤醒引脚 o
f:n
WKUP.WIREER.R = (1U << 0); //启用上升沿中断
WKUP.WISR.R = 0xFFFFFFFFU;// 清除外部中断发生的中断标志
}