历史上的今天
今天是:2025年02月28日(星期五)
2020年02月28日 | stm8 停机模式与外部中断唤醒中一个小问题
2020-02-28 来源:eefocus
做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗。而对外接口只有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 }
先关闭中断,配置IO口为外部中断,开中断,进入低功耗。
在外部中断中,配置IO口为普通IO。
1 #pragma vector = 7
2 __interrupt void EXTI_PORTC_IRQHandler(void)
3 {
4 ExitHalt(); //开定时器 配置Lock键为普通IO
5 }
6
7 /****************************************************************
8 //退出停机模式
9 *****************************************************************/
10 void ExitHalt()
11 {
12 TIM1_CR1 |= 0x01; /* 开用户操作定时器 */
13
14 //PC3 PC4 PC5 PC6配置为普通IO口 输入 用于按键检测
15 PC_DDR_DDR3 = 0;
16 PC_CR1_C13 = 1;
17 PC_CR2_C23 = 0;
18
19 PC_DDR_DDR4 = 0;
20 PC_CR1_C14 = 1;
21 PC_CR2_C24 = 0;
22
23 PC_DDR_DDR5 = 0;
24 PC_CR1_C15 = 1;
25 PC_CR2_C25 = 0;
26
27 PC_DDR_DDR6 = 0;
28 PC_CR1_C16 = 1;
29 PC_CR2_C26 = 0;
30
31 EXTI_CR1 = 0x00;
32 }
流程如上,实际会出现一个小问题,就是配置IO口为外部中断,开了中断以后,就立即进入了中断程序(中断条件为低电平和下降沿)。进入了中断程序后,IO口配置又将IO口配置为普通引脚,接着进入低功耗。再按按键怎么也不能唤醒了。如果你也遇到这样的问题,请参照上面的进入低功耗的代码,在配置IO口为中断引脚后,延时一会,再开中断。
使用stm8的停机模式后,在3.0V供电的情况下,电路板整体功耗为5.6uA。使用电池供电,待机也能使用1年以上。
史海拾趣
|
大家好: 在程序中为什么要设置IE和IP?有一段程序这样写,请大家帮忙看下 MOV TMOD,#00100001B;波特率发生T1定时工作模式2(自动装载), T0定时工作模式1(16位), MOV TL0,#0caH ...… 查看全部问答> |
|
单片机控制系统 需求:1点输入,3点输出(其中2点控制电磁阀输出,1点控制继电器输出) 功能:对输入点记数 输入 输出 1次 电磁阀1输出 2次 电 ...… 查看全部问答> |
|
像单片机怎么来阅读它的数据手册来写它的一些程序呢? 比如说STC15F204EA这款单片机,要使用它的ADC模块,不知道怎么怎么写它的程序。这部分手册 看的是说要设置些寄存器,但是具体要怎么写ADC程序且无从入手。 这个芯片手册该如何阅读,头疼, ...… 查看全部问答> |
|
实物展示: 电路功能与优势 图中所示电路是一个完全隔离式低功耗pH传感器信号调理器和数字化仪,并且带有自动温度补偿以实现高精度。 该电路可为0至14范围内的pH值提供精度为0.5%的读数,无噪声代码分辨率大于14 ...… 查看全部问答> |




