OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 4245|回复: 8

STM32F051C8进入睡眠唤醒后不能再次SWD下载程序,要重新按复位按键后才能下载

[复制链接]

  离线 

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-11-4
在线时间
2 小时
发表于 2014-11-17 11:21:59 | 显示全部楼层 |阅读模式
5金钱
在做STM32F051C8的睡眠测试时发现一个问题,请大家指点下
问题描述:
单片机可以进入睡眠,也能被外部中断唤醒,唤醒后程序也接着往下运行,但是程序不能下载了,需要再次按一下复位按键才能下载
这是什么原因,要怎么排除?请大家指点

主程序
[C] 纯文本查看 复制代码
#include \"stm32f0xx.h\"
#include \"delay.h\"
#include \"led.h\"
#include \"lpm.h\"

void Delay(uint32_t t)
{
	while(t--)
	{
		;
	}
}

int main(void)
{
  uint8_t i;
	
  Delay_Init(48);
  LED_Init();
	
  LED_Open(0);	//启动标志
	
  //延时10秒
  for(i=0; i<10; i++)
  {
	Delay_ms(1000);
  }
	
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
    
  PWR_BackupAccessCmd(ENABLE);
    
  RCC_BackupResetCmd(ENABLE);
  RCC_BackupResetCmd(DISABLE);
	
	LED_Close(0);	//进入模式标志
	Delay_ms(500);
	SleepMode_Measure();
	LED_Init();	

	while(1)
	{
		for(i=0; i<4; i++)
		{
			LED_Not(i);
			Delay(0x8FFFF);
		}
	}
}
睡眠函数程序
[C] 纯文本查看 复制代码
void Ekey_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 
	EXTI_InitTypeDef EXTI_InitStructure;
	NVIC_InitTypeDef   NVIC_InitStructure;
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	/* Enable and set EXTI0 Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI2_3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  /* Enable SYSCFG clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  /* Connect EXTI0 Line to PA0 pin */
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource3);

  /* Configure EXTI0 line */
  EXTI_InitStructure.EXTI_Line = EXTI_Line3;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

}

void SleepMode_Measure(void)
{
  __IO uint32_t index = 0;
  GPIO_InitTypeDef GPIO_InitStructure;
	//开启所有的时钟
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC, ENABLE);
  //对所有的IO进行设置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_Init(GPIOC, &GPIO_InitStructure);
	
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC, DISABLE);
	//使能外部中断使其可以唤醒MCU
  Ekey_Init();
	//进入睡眠模式
  __WFI();
	
}
中断程序
[C] 纯文本查看 复制代码
void EXTI2_3_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line3) != RESET)
  {    
    EXTI_ClearITPendingBit(EXTI_Line3);
  }
}
请大家指点,谢谢

最佳答案

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

我用过STOP模式,唤醒之后,貌似没有这个问题。 即使是进入了STOP模式,也可以用SWD接口下载程序。 请问你的SWD接口,有没有接reset引脚,如果没有,建议接上。 试试看是否就能解决 。
回复

使用道具 举报

  离线 

10

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2014-10-4
在线时间
7 小时
发表于 2014-11-17 11:22:00 | 显示全部楼层
我用过STOP模式,唤醒之后,貌似没有这个问题。
即使是进入了STOP模式,也可以用SWD接口下载程序。

请问你的SWD接口,有没有接reset引脚,如果没有,建议接上。
试试看是否就能解决
回复

使用道具 举报

  离线 

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
发表于 2014-11-17 11:22:00 | 显示全部楼层
嗯,你这个应该是把SW下载口设置设置改了。SW下载口默认是下载口,如果你不小心把他设置成其他模式,那么你就要外加一根RESET共5根线来激活下载口。
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

  离线 

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-11-4
在线时间
2 小时
 楼主| 发表于 2014-11-17 11:22:00 | 显示全部楼层
原来如此,我明白了,其实我在开板的时候SWD是有RESET的,但是下载的时候一般都没有接这个线,也没有问题,今天查看了下手册,看到手册中写着  “复位后,这些引脚被配置为SWDAT和SWCLK备用功能,对SWDAT引脚的内部上拉和对SWCLK脚的内部下拉功能是打开的”原来本身就要求复位后才能下载只是奇怪之前没用也行
回复

使用道具 举报

  离线 

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-11-4
在线时间
2 小时
 楼主| 发表于 2014-11-17 11:23:33 | 显示全部楼层
单片机可以进入睡眠,也能被外部中断唤醒,唤醒后程序也接着往下运行,但是程序不能下载了,需要再次按一下复位按键才能下载
这是什么原因,要怎么排除?请大家指点
回复

使用道具 举报

  离线 

0

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2017-10-5
在线时间
3 小时
发表于 2017-10-20 16:20:34 | 显示全部楼层
确实遇到过这种问题。九块邮官网  新百伦正品折扣店
回复

使用道具 举报

  离线 

0

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2017-10-5
在线时间
3 小时
发表于 2017-10-25 09:45:37 | 显示全部楼层
感谢感谢分享
回复

使用道具 举报

  离线 

0

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2017-10-5
在线时间
3 小时
发表于 2018-7-12 17:23:01 | 显示全部楼层
回复

使用道具 举报

  离线 

24

主题

1172

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1947
金钱
1947
注册时间
2018-5-11
在线时间
368 小时
发表于 2018-7-12 19:38:43 | 显示全部楼层
应该是没有接RESET线的原因
https://github.com/ShuifaHe/STM32.git
回复

使用道具 举报

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

本版积分规则




关闭

必看,必学:"原子哥”力荐上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-9-21 12:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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