本帖最后由 zdx818 于 2013-1-31 13:51 编辑
我这里有一个,你参考下:
其实,为了快速地开关中断,CM3 还专门设置了一条CPS 指令,有4 种用法
CPSID I ; PRIMASK=1, ;关中断
CPSIE I ; PRIMASK=0, ;开中断
CPSID F ; FAULTMASK=1, ;关异常
CPSIE F ; FAULTMASK=0 ;开异常
//THUMB指令不支持汇编内联
//采用如下方法实现执行汇编指令WFI
//CHECK OK
//091209
__asm void WFI_SET(void)
{
WFI;
}
WFE 休眠并且在发生事件时被唤醒
WFI 休眠并且在发生中断时被唤醒//进入待机模式
//check ok
//091202
void Sys_Standby(void)
{
SCB->SCR|=1<<2;//使能SLEEPDEEP位 (SYS->CTRL)
RCC->APB1ENR|=1<<28; //使能电源时钟
PWR->CSR|=1<<8; //设置WKUP用于唤醒
PWR->CR|=1<<2; //清除Wake-up 标志
PWR->CR|=1<<1; //PDDS置位
WFI_SET(); //执行WFI指令
}
|