外部中断0接了一个轻触按键到地,程序进入空闲后打开外部中0下降沿唤醒功能并进入掉电模式。
电压高于3V时,没问题,低于3V时,有时需要按3-5次能唤醒一次,大部分无法正常唤醒。
以下是该新款STC MCU的简介:
正好我近期也拿了10片ST8G1K08 TSSOP20测试,下载程序时允许低压复位,则MCU在2.0~5.5V唤醒均正常,下载程序时禁止低压复位,则MCU在1.8~5.5V唤醒均正常,没有碰到楼主的情况。
我测试的代码,希望对楼主和大家有参考:
#define MAIN_Fosc 11059200L //定义主时钟
#include "..\..\STC8Gxxx.h"
/************* 功能说明 **************
演示INT0下降沿唤醒MCU。
唤醒后P1.0电量LED指示.
******************************************/
void delay_ms(u8 ms);
void main(void)
{
P1n_standard(0xff); //P1口设置为准双向口
P3n_standard(0xff); //P3口设置为准双向口
P5n_standard(0x30); //P5.4 P5.5口设置为准双向口
EA = 1; //Enable all interrupt
while(1)
{
P10 = 0; //取反指示引脚
delay_ms(50); //delay 20ms, 相当于去抖动 (按用户程序需要)
P10 = 1; //取反指示引脚
while(!INT0); //等待外中断为高电平 (按用户程序需要)
delay_ms(20); //delay 20ms, 相当于去抖动 (按用户程序需要)
IT0 = 1; //INT0 下降沿中断
IE0 = 0; //清除外中断0标志位
_nop_();
_nop_();
EX0 = 1; //INT0 允许中断
_nop_();
_nop_();
PCON |= 0x02; //Sleep
_nop_();
_nop_();
_nop_();
EX0 = 0; //INT0 禁止中断 (按用户程序需要)
}
}
/********************* INT0中断函数 *************************/
void INT0_int (void) interrupt 0 //进中断时已经清除标志
{
}
//========================================================================
// 函数: void delay_ms(u8 ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数.
// 返回: none.
// 版本: VER1.0
// 日期: 2020-3-25
// 备注:
//========================================================================
void delay_ms(u8 ms)
{
u16 i;
do
{
i = MAIN_Fosc / 10000L;
while(--i) ;
}while(--ms);
}
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |