做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗。而对外接口只有4个按键,也就是唤醒必须要通过这四个按键。
系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码。
使用芯片为stm8s103
1 /***************************************************************** 2 //进入到停机模式 3 *****************************************************************/ 4 void EnterHalt() 5 { 6 int j=255; 7 8 /* 防止定时器中断唤醒了CPU */ 9 TIM1_CR1 &= 0xFE; /* 用户操作计数器关掉 */ 10 11 asm("sim"); 12 13 /* PC3 PC4 PC5 PC6 使能外部中断 */ 14 PC_DDR_DDR3 = 0; 15 PC_CR1_C13 = 1; 16 PC_CR2_C23 = 1; 17 18 PC_DDR_DDR4 = 0; 19 PC_CR1_C14 = 1; 20 PC_CR2_C24 = 1; 21 22 PC_DDR_DDR5 = 0; 23 PC_CR1_C15 = 1; 24 PC_CR2_C25 = 1; 25 26 PC_DDR_DDR6 = 0; 27 PC_CR1_C16 = 1; 28 PC_CR2_C26 = 1; 29 30 EXTI_CR1 = 0x00; //PC端口 低电平和下降沿都中断 31 32 for(j=255;j>0;j--); //延时一会 33 34 asm("rim"); 35 asm("HALT"); /* 进入停机模式 */ 36 }