硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1524|回复: 7
收起左侧

程序中遇到一个很奇怪的BUG

[复制链接]

5

主题

20

回帖

35

积分

新手上路

积分
35
发表于 2019-1-26 11:08:15 | 显示全部楼层 |阅读模式


这个是一个boot程序
int main(void) {    int32u n;
    n = RTC_ReadBackupRegister(BKP_1);  读取备份寄存器中的值
   if(n< 2) {
       进入APP程序;
    }

   初始化函数;

   RTC_WriteBackupRegister(BKP_1,0);  //对该寄存器清零

  for(;;) {
        boot升级程序函数;


  }
  当n在APP函数中被累计到2时,手动断电再上电 ,发现程序在main中由于n不小于2跳过了进APP程序,执行寄存器清零,却没进for循环中,而是n =0,又去执行了进APP程序,这是咋回事啊

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2019-1-26 11:14:03 | 显示全部楼层
帮顶。
回复

使用道具 举报

5

主题

20

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2019-1-26 11:46:28 | 显示全部楼层

硬哥你也无能为力吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2019-1-26 11:53:19 | 显示全部楼层
嘿啦_OpDfP 发表于 2019-1-26 11:46
硬哥你也无能为力吗

是的,看看群友有了解的不。
回复

使用道具 举报

5

主题

20

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2019-1-26 11:57:03 | 显示全部楼层
eric2013 发表于 2019-1-26 11:53
是的,看看群友有了解的不。

很奇怪 感觉main在循环,如果我升级程序后再清备份寄存器的值就不会出现这情况
回复

使用道具 举报

5

主题

20

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2019-1-28 14:10:42 | 显示全部楼层
问题已解决,在进main之后加段小延时就不会出现复位现象,个人怀疑可能是因为断电上电是冷复位,这时候单片机刚上电  状态不稳,因为之前看门狗复位是正常的 不会说执行一次又跳回main的,看门狗是热复位,单片机的状态是稳定的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2019-1-29 01:56:24 | 显示全部楼层
嘿啦_OpDfP 发表于 2019-1-28 14:10
问题已解决,在进main之后加段小延时就不会出现复位现象,个人怀疑可能是因为断电上电是冷复位,这时候单片 ...

谢谢告知最后原因。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-1-29 09:09:08 | 显示全部楼层
嘿啦_OpDfP 发表于 2019-1-28 14:10
问题已解决,在进main之后加段小延时就不会出现复位现象,个人怀疑可能是因为断电上电是冷复位,这时候单片 ...

虽然工作上我只负责软件。但是近半年我留意公司的产品返修现象做了分析和归类:
1.现在很多物料都确实是新时代的省成本工艺,没有以前那么耐操。
2.多个元器件的公差重叠,会导致以往的设计时序稳定性也会有偏差。
3.现在深入研究协议规则的耐心欠缺,软件搭配不够精准,新时代的异常情况兼容性考虑较少。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 05:07 , Processed in 0.290515 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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