OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4792|回复: 3

systick 唤醒stop问题求助

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-12-20
在线时间
0 小时
发表于 2015-12-20 12:07:51 | 显示全部楼层 |阅读模式
5金钱
各位专家,目前用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();



   WR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

RCC_Configurationb();

// SysTick_Configuration();
  
}

最佳答案

查看完整内容[请看2#楼]

1,关闭systick时钟,再进入stop模式 2,用i++,示波器慢慢看,挑一个合适值。 3,见4: 4,用不到的外设,时钟全部关闭。IO口的上下拉电阻,尽量取值大一点。 5,和低功耗无关。和正常一样的设置。
菜鸟
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-20 12:07:52 | 显示全部楼层
1,关闭systick时钟,再进入stop模式
2,用i++,示波器慢慢看,挑一个合适值。
3,见4:
4,用不到的外设,时钟全部关闭。IO口的上下拉电阻,尽量取值大一点。
5,和低功耗无关。和正常一样的设置。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-12-20
在线时间
0 小时
 楼主| 发表于 2015-12-20 23:07:11 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,对于问题2,我是否能够用一个定时器来实现delay,然后在进如stop前disable掉这个tim,这样可行么,是否能避免systick中stop被唤醒的问题。
菜鸟
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-20 23:26:25 | 显示全部楼层
回复【3楼】5821:
---------------------------------
肯定可以的。
你试试就知道了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 12:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表