OpenEdv-开源电子网

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

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

[复制链接]

5

主题

21

帖子

0

精华

初级会员

Rank: 2

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

主程序
[mw_shl_code=c,true]#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); } } }[/mw_shl_code]
睡眠函数程序
[mw_shl_code=c,true]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(); } [/mw_shl_code]
中断程序
[mw_shl_code=c,true]void EXTI2_3_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line3) != RESET) {     EXTI_ClearITPendingBit(EXTI_Line3); } }[/mw_shl_code]
请大家指点,谢谢

最佳答案

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

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

使用道具 举报

11

主题

53

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1881
金钱
1881
注册时间
2014-10-4
在线时间
18 小时
发表于 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

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

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2014-11-4
在线时间
4 小时
 楼主| 发表于 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 | 显示全部楼层
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4520
金钱
4520
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-7-12 19:38:43 | 显示全部楼层
应该是没有接RESET线的原因
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 13:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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