[STM8] STM8L使用外部中断从停机模式也唤醒的问题

[复制链接]
 楼主| RF、龙龙 发表于 2016-4-12 10:17 | 显示全部楼层 |阅读模式
我使用一个按键作为外部中断把MCU从停机模式中唤醒,发现唤醒一次后,在进不去停机模式了,我也加了while循环了呀。
while(1)
    {
    asm("halt");
    LED1_ON();
    }

谢谢各位了
 楼主| RF、龙龙 发表于 2016-4-12 11:09 | 显示全部楼层
这个问题解决了,新的问题又来了   进入停机模式,电流尽然50多UA    什么原因啊   
yangshu_mcu 发表于 2016-4-12 16:59 | 显示全部楼层
管脚电平一定要固定好了,先把所有管脚初始化为高阻态,测量管脚是什么电平。休眠之前,所有管脚按照这个方式设置电平,SWIM管脚拉低。你再试试电流。
Rooney30 发表于 2016-4-12 20:32 | 显示全部楼层
RF、龙龙 发表于 2016-4-12 11:09
这个问题解决了,新的问题又来了   进入停机模式,电流尽然50多UA    什么原因啊    ...

50ua是不是已经足够小的电流了啊
 楼主| RF、龙龙 发表于 2016-4-13 09:18 | 显示全部楼层
yangshu_mcu 发表于 2016-4-12 16:59
管脚电平一定要固定好了,先把所有管脚初始化为高阻态,测量管脚是什么电平。休眠之前,所有管脚按照这个方 ...

好的  谢谢    我设置的都是推挽输出,但由于我使用的是外部中断来唤醒,所以用到外部中断那个引脚设置为输入。
 楼主| RF、龙龙 发表于 2016-4-13 09:20 | 显示全部楼层
Rooney30 发表于 2016-4-12 20:32
50ua是不是已经足够小的电流了啊

手册讲  进入停机模式电流不到1ua
 楼主| RF、龙龙 发表于 2016-4-13 11:22 | 显示全部楼层
void GPIO_Init(void)
{
    PA_DDR=0xFF;
    PA_CR1 = 0xFF;  //推挽
    PA_CR2 = 0;  //2MHz
    PA_ODR= 0xFF;
   
    PB_DDR=0xFF;
    PB_CR1 = 0xFF;  //推挽
    PB_CR2 = 0;  //2MHz
    PB_ODR= 0xFF;
   
    PC_DDR=0xFF;
    PC_CR1 = 0xFF;  //推挽
    PC_CR2 = 0;  //2MHz
    PC_ODR= 0xFF;
   
    PD_DDR =0xFF;
    PD_CR1 =0xFF;  //推挽
    PD_CR2 =0;  //2MHz
    PD_ODR= 0xFF;
   
     PD_DDR_DDR2 = 0;  //GIO1 floating input with interrupt
     PD_CR1_C12  = 1;
     PD_CR2_C22  = 1;
     EXTI_CR1 |= 0x20; //Falling only
     
    CLK_PCKENR1=0x00;
    CLK_PCKENR2=0x00;
    PWR_CSR2=0X02;//内部参考电压 关闭 以降低功耗0X03
}

这是我进入停机模式前的IO配置,PD2为外部中断用来唤醒
xmshao 发表于 2016-4-13 12:19 | 显示全部楼层
是不是有中断请求位 没清掉?
 楼主| RF、龙龙 发表于 2016-4-13 12:58 | 显示全部楼层
xmshao 发表于 2016-4-13 12:19
是不是有中断请求位 没清掉?

EXTI_SR1 |= 0x04;     在中断函数中清了
 楼主| RF、龙龙 发表于 2016-4-13 14:12 | 显示全部楼层
xmshao 发表于 2016-4-13 12:19
是不是有中断请求位 没清掉?

EXTI_SR2 = 0xFF就可以了吧;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

173

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

38

主题

173

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部