打印
[STM32F1]

systick中断唤醒stop模式求助

[复制链接]
1771|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jin5821|  楼主 | 2015-12-20 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位专家,目前用stm32做一个低功耗的项目,遇到一些问题向各位求教。
​​
​目前需求:
​1、休眠1秒,唤醒工作一次,周而复始。
​2、工作时,需要ns级的delay来支撑IIC通信,从而与外围芯片建立IIC连接。

​目前现象是:
​1、在不初始化systick的情况下,系统可进入stop模式,并在1s后由rtc唤醒,但不基于systick没想到办法实现ns级delay来支持iic。(唤醒后功耗46ma,休眠后功耗300ua)
​2、在初始化systick的情况下,系统进入stop模式后,瞬间会被systick中断唤醒(关闭sysick中断休眠正常),失去休眠效果​。

​需要请教的是:
​1、如何解决systick唤醒stop的问题
​2、若不用systick,如何实现ns级delay从而支撑iic通信
​3、stop模式下,如何进一步降低功耗(stop配置代码下附)
​4、正常工作状态下,有何降低功耗的办法。
​5、为降低功耗,如何将jtag设为普通io,且如何实现程序烧写

​问题有点多,多谢大家

​附 stop代码:
​void Sys_Stop(void)
{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphResetCmd(0X01FC,DISABLE);  //复位所有IO

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
//GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_Init(GPIOC, &GPIO_InitStructure);


RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1|
                               RCC_APB2Periph_ADC1|RCC_APB2Periph_ADC2,
                               DISABLE);   // RCC_APB1Periph_SPI1
​ RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2|RCC_APB1Periph_TIM2|RCC_APB1Periph_USART3,
                               DISABLE);

NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);        //使能PWR和BKP外设时钟

//     RTC_ITConfig(RTC_IT_ALR, ENABLE);
//         RTC_WaitForLastTask();

SetAlarm(RTC_GetCounter() + 950);
    RTC_WaitForLastTask();



   PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

RCC_Configurationb();

//        SysTick_Configuration();
  
}
沙发
花落成尘眼泪| | 2019-12-18 19:32 | 只看该作者
在进入休眠模式前清空systick中断标志位,关闭定时器中断,且关闭systick定时器

使用特权

评论回复
板凳
airwill| | 2019-12-18 22:00 | 只看该作者
stop 模式没有了系统时钟,  systick 已经不工作, 如何唤醒?

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝