我的代码睡眠后唤不醒,是通过电压变化来唤醒的
GP0--------------------KEY1 接开关后直接接地
GP1--------------------KEY2 接开关后直接接地
GP2--------------------LED 经电阻后接LED,接地
void fIoInit()
{
OPTION = 0;
TRIS = 0xf8;
GPIO = 0xff;
}
if(0x03 == (0x03&GPIO)) 需要睡眠的时候,检测一下电平是否正常,LED端口是低,按键端口是高
{
GPIO = GPIO;
GPIO = GPIO; 读IO状态,然后进入睡眠
SLEEP();
}
在工作状态下,KEY1按一下进入睡眠
但醒不过来了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
注:
当TRIS 位清零(= 0)时,相应引脚的电
平变化唤醒和上拉功能都是被禁止的
(即,注意TRIS 的优先级高于GPPU/RBPU 和GPWU/RBWU 选择控制位)。
而
将TRIS 寄存器的某位置1,可
使相应的输出驱动器置于高阻模式。 而将TRIS 寄存器
的某位清零,会将输出数据锁存器的内容送入选定的引
脚并使能输出缓冲器。
不知道是不是这原因了。我的tris一直是0。
一周热门 更多>