打印
[STM8]

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

[复制链接]
2460|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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是不是已经足够小的电流了啊

使用特权

评论回复
5
RF、龙龙|  楼主 | 2016-4-13 09:18 | 只看该作者
yangshu_mcu 发表于 2016-4-12 16:59
管脚电平一定要固定好了,先把所有管脚初始化为高阻态,测量管脚是什么电平。休眠之前,所有管脚按照这个方 ...

好的  谢谢    我设置的都是推挽输出,但由于我使用的是外部中断来唤醒,所以用到外部中断那个引脚设置为输入。

使用特权

评论回复
6
RF、龙龙|  楼主 | 2016-4-13 09:20 | 只看该作者
Rooney30 发表于 2016-4-12 20:32
50ua是不是已经足够小的电流了啊

手册讲  进入停机模式电流不到1ua

使用特权

评论回复
7
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为外部中断用来唤醒

使用特权

评论回复
8
xmshao| | 2016-4-13 12:19 | 只看该作者
是不是有中断请求位 没清掉?

使用特权

评论回复
9
RF、龙龙|  楼主 | 2016-4-13 12:58 | 只看该作者
xmshao 发表于 2016-4-13 12:19
是不是有中断请求位 没清掉?

EXTI_SR1 |= 0x04;     在中断函数中清了

使用特权

评论回复
10
RF、龙龙|  楼主 | 2016-4-13 14:12 | 只看该作者
xmshao 发表于 2016-4-13 12:19
是不是有中断请求位 没清掉?

EXTI_SR2 = 0xFF就可以了吧;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

173

帖子

0

粉丝