wxb18k 发表于 2014-6-19 17:55 
我现在改为uart0了,用的是PLL时钟,当我运行进入vlps函数时,功耗降低了5mA,但是SMC_PMSTAT读出来是0x0 ...
这个问题其实是这样的,在VLPS下模式下,core是不运行的,这个时候core是处在static状态的,MCU是不执行指令的,相当于整个芯片是死掉的,只不过没掉电,维持着寄存器的值,所以是没法通过软件手段检查各个寄存器的状态的。
那为什么你能看到SMC_PMSTAT的值呢?因为这个时候已经还原到RUN模式下了,你在debug单步执行的时候,其实是没有真正进去VLPS的,所以SMC_PMSTAT的值是RUN。 如果要验证是否真的进入VLPS,需要直接去run整个代码,而不能debug单步走,同时串联一个电流表,测实际的电流,VLPS下大约4 uA左右,而RUN一般是几个mA。
还有你需要改一下MCG的设置,VLPS下PLL是disable的,只能bypass。
|