相对于MSP430的低功耗,可能stm32F10XXX的低功耗模式可能捉襟见肘,但是要考虑到stm32的主频还是高于MSP430很多的,所以我们应该理性的去看待问题。
stm32F10XXX有几种模式:
1.run mode:程序一直运行
2.sleepmode:通过WFI或者WFE指令进入,CPU的时钟停止,其他运行。通过一些中断或者是事件唤醒
3.stop mode:所有的时钟都会停止。
4.standby mode:1.8V的域掉电。
SLEEP MODE
1.进入sleepmode:
WFI:Wait For Interrupt:任意中断都可唤醒,但是中断配置时要注册到NVIC中
WFE:Wait for Event:任意事件可唤醒,其中唤醒可以分为两种,1.普通事件,例如闹钟事件,步骤是使能闹钟事件,然后cotex-M3 系统控制寄存器中SEVONPEND使能,当唤醒的时候要清对应的外设中断挂起位和NVIC对应的中断的IRQ通道挂起位。2。外部中断线上的事件:什么也不需要做。
注意:sleep模式唤醒是没有延时的。
经验:之前在ucos系统的项目中,由于ucos的节拍是由systick中断来产生的,所以几乎对于配置为sleep模式下系统是不会睡下去的,因为systick会唤醒sleep模式。
sleep模式对功耗的影响并不是很大,所以一般还是选择其他