你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103C8T6运行一段时间后程序会偶尔会出现程序停止的现象

[复制链接]
sam100p 提问时间:2022-1-21 17:56 / 未解决

1 产品由于尺寸比较小,没有硬件复位,复位电路只有上拉10k电阻下拉0.1uf电容,使用过程中需要不停在STOP模式与工作状态切换,STOP模式电流为60uA,工作状态8mA~20mA之间;

2 STOP模式与正常模式切换,通过RTC闹钟唤醒,RTC时钟采用外部晶振;

3 在生产过程总生产了100pcs样品,出现了2pcs中间程序停止的现象,复测一台不能出现,另一台概率出现,在概率出现的样机上,使用外部电源供电,死机后电流为8~9mA;

4 针对重现的样机,初步怀疑是否由于外部晶振原因找出,程序调整为内部晶振后,仍然出现一次;

5 STOP模式唤醒代码如下:

void Low_power_consumption(u16 sec) { //while(1);//14.8mA Power_Ctrl(); //while(1);//4.4mA ADC_DeInit(ADC1); //while(1);//3.4mA RTC_ALARM_SET(sec); Sys_Enter_Stop(); //while(1);//13mA SystemInit(); //while(1);//3.3mA RTC_Init(); //while(1);//13.5mA Power_On(); //while(1);//3.3mA }

收藏 评论6 发布时间:2022-1-21 17:56

举报

6个回答
废鱼 回答时间:2022-1-22 08:42:56

楼主,您好。贴的代码全是屏蔽的。这段代码换成图片也行。分析原因如果是从stop下唤醒后不能休眠,可以看看是不是唤醒后系统时钟配置不过去。再就是分析一下进入STOP之前,代码是否有死循环。可以通过串口或者IO的状态来指示一下唤醒后正常工作过没有。

sam100p 回答时间:2022-1-22 10:47:00
1. 唤醒代码如图所示,唤醒过后不是不能休眠,是产品24小时或者更长时间有某一次出现唤醒后停在那。串口也开着的,正常情况是有数据发送,等到偶尔出现一次没有唤醒后,串口就接受不到数据了。

2. 之前怀疑是晶振偶尔出现问题造成,后程序更改为内部晶振进行RTC计时,12小时也出现了程序停止。同时针对正常的电路板进行晶振短路测试,在睡眠唤醒的过程中,只是STOP模式时间延长,将晶振恢复正常后,产品仍然能够唤醒,正常工作。
唤醒代码.png
废鱼 回答时间:2022-1-22 11:43:08

我看你用的是秒唤醒,计划多长时间唤醒一次,我怀疑是不是因为配置RTC唤醒的当时有问题。你用的是秒、分、时三种同时符合进行唤醒吗?如果唤醒时间很短的话,可以考虑换成以下代码唤醒。

void RTC_WakeUpClockConfig(uint32_t RTC_WakeUpClock); void RTC_SetWakeUpCounter(uint32_t RTC_WakeUpCounter);

sam100p 回答时间:2022-1-24 09:23:03

用的是秒唤醒,有2s唤醒一次,也有30s唤醒一次

废鱼 回答时间:2022-1-24 09:36:24

可以考虑换成我提供的函数试试。

butterflyspring 回答时间:2022-1-24 11:22:02
楼主测试死机后的电流是毫安级别,那么多半是进入STOP 时出现故障。所以建议楼主检查一下进入STOP前的中断和事件处理的是否全面。有些时候恰好某些事件发生在进入STOP时会导致这样的情形方生。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版