历史上的今天
今天是:2024年11月07日(星期四)
2019年11月07日 | STM8L低功耗HALT模式一些总结
2019-11-07 来源:eefocus
进入HALT注意事项
将未使用到的IO口设置为输出低;
关闭所有用到的外设时钟(如 ADC、USART等);
失能所使用到的外设;
实测进入HALT模式待机约为0.3uA
下面列出示例代码,如有错误,还请广大网友指出。 ^_^
#include "stm8l15x.h"
uint8_t sys_1ms_flg = 0;
uint16_t SleepTime = 0;
/*LED工作2S灭 进入HALT模式 外部唤醒 */
void main(void){
CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,ENABLE); /* 使能外设时钟 */
TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_Prescaler_8, 0xfa); /* 16M/8/8=250K,0xfa=250,250*(1/250)=1mS */
TIM4_ITConfig(TIM4_IT_Update, ENABLE); /* 向上溢出中断使能,中断向量号25 */
TIM4_Cmd(ENABLE); /* TIM4使能 */
GPIO_Init(GPIOD,GPIO_Pin_0,GPIO_Mode_Out_PP_High_Slow); /* 初始化LED端口 */
GPIO_Init(GPIOB, GPIO_Pin_1, GPIO_Mode_In_PU_IT); /* 配置GPIB PIN1脚为外部中断脚 */
EXTI_DeInit (); /* 恢复中断的所有设置 */
EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling);/* 配置外部中断 唤醒Halt模式 */
PWR_FastWakeUpCmd(ENABLE); /* 快速唤醒使能 */
PWR_UltraLowPowerCmd(ENABLE); /* */
enableInterrupts(); /* 开启中断总开关 */
while (1){
if(sys_1ms_flg){
sys_1ms_flg = 0;
GPIO_ResetBits(GPIOD, GPIO_Pin_0);
SleepTime++;
if(SleepTime==2000){
SleepTime = 0;
/* 进入HALT前 需把所有为用到的端口设置为低*/
GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
/* 我的板子LED是低点亮 所以置高 */
GPIO_SetBits(GPIOD, GPIO_Pin_0);
/* 上面把端口配置为输出低 但是不是我们想要的 所配置回来GPIB PIN1脚为外部中断脚 */
GPIO_Init(GPIOB, GPIO_Pin_1, GPIO_Mode_In_PU_IT);
/* 先失能Tim4 在禁用tim4时钟 */
/* 个人理解 先把外设时钟禁止了 那它怎么配置其他寄存器呢 不知道理解的正不正确 */
TIM4_Cmd(DISABLE);
CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,DISABLE);
halt(); /* 进入停机模式 实测0.3uA */
nop();
CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,ENABLE);
TIM4_Cmd(ENABLE);
}
}
}
}
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 RT,不包括功放也好 崩溃了有点。。。 [ 本帖最后由 plich 于 2009-9-5 10:53 编辑 ] … 查看全部问答> |
|
2440 5.0 串口移植到 6.0。 加载串口驱动后,启动出现INFO: CReg2440Uart::CReg2440Uart using processor frequency reported by the OAL (0). 然后系统就死了。 也就是这一段 CReg2440Uart::CReg2440Uart()中 if (!KernelIoC ...… 查看全部问答> |
|
在做PDA应用程序时碰到: D:\\WebService2\\WebService2\\TestWebService\\Form1.cs(26,13): 错误 CS0012: 类型“System.Web.Services.WebService”在未被引用的程序集中定义。必须添加对程序集“System.Web.Services, Version=2.0.0.0, Culture=n ...… 查看全部问答> |
|
我用麻宝华老师的Snooper 是否要用你们专用的读卡器呢?我有SIM卡读卡器 但软件连不上 我想查看 执行 STK菜单所发出去的短信内容 要怎么操作呢 谢谢 比如STK彩单 “移动梦网”下的“天气预报” 就会发送出去一条短信 我怎么能知道这条短信的 ...… 查看全部问答> |
|
想问下,下面这个KernelIoControl调用什么意思啊,查了下pb下的解释看不怎么明白啊 #define IOCTL_POCKETSTOREII_CMD CTL_CODE(FILE_DEVICE_HAL, 4080, METHOD_BUFFERED, FILE_ANY_ACCESS) typedef struct { ...… 查看全部问答> |




