问题描述:全局变量,会被莫名其妙更改!打印为50,后面做比较的时候这个值为0了。

第一,我肯定没有犯低级错误,没有其他的更改,搜索全部代码,没有发现这个变量因为我程序问题导致不符合预期,同时找了两位同事检验;第二,volatile肯定是修饰了变量的。

同时在网上搜索了一下,并没有得到满意的答复,但是可以确定的是,在使用keil 对STM32编程的时候,有其他人和我出现了一样的问题。

在国外和国内看到了符合我情况描述,可是最后的原因,我实在不知,也没得到一个满意的答案。

一份程序各个变量跑得好好的,因为增加了代码,然后出现了变量的未知更改。

很荒谬的是,有人说再增加一点代码,它就又能正常跑了。但我确实是这样做了之后,它还真就好了,增加的代码和这个变量无关。

再其次,在使用结构体强制一字节对齐之后,也出现过结构体中的数据不对,之后调整了结构体元素的位置,解决了这个问题,但是我强制一字节对齐,按理说不应该有问题,程序也正常运行了很久,后面增加了代码之后出现了这个问题。依旧迷惑。

我无法理解和解释这个现象。

只能说,之后的强制一字节对齐还是慎用,还有就是遇到C语言语法没有错误的时候,多想想其他办法,看能不能绕过这个问题,先满足目前的需求,当然,我们最后都想知道根本原因,可由于知识的限制。。。

玩ARM的想着单片机的好,玩单片机的时候想着要是arm我就自己完成重定位了。

在学校的时候想着上班,上班了想着学校的好。

对我的这个问题,提出我自己的假设:最可能的还是内存问题,其次操作系统任务切换的问题。希望有一天自己能够明白。

最后说一句,做单片机没有那么简单,做单片机也可以有比较不错的工资,可做单片机,真的没有前途,之后或许不会怎么玩这个了,我还是有追求的!

结题:

还是内存溢出导致的,任务栈倒是够得,只是我的串口缓存数组设置过小(这种情况下偶尔是能正常的,当运行到程序的某个地方的可能出现bug,必然我们要规避掉这种情况),扩大一倍后程序一直运行无该类现象产生了。总结就是,遇到这类问题,多半是数组溢出或者指针乱访问或者系统栈不够或者任务栈不够用。这类问题还可能会导致STM32进入硬件错误中断。以后多留意该类问题。

/*2018.7.15*/

这到底是什么bug?---已结贴的更多相关文章

  1. (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明

    原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...

  2. python 之金玉良言 或许是最后一次给自己系统总结--已结

    jar tvf xxx.jar vim xxx.jar 配置一下 notepad++ F5 cmd /k D:"Program Files (x86)"\python\python ...

  3. python 黑魔法收集--已结

    awesome python 中文大全 Fabric , pip, virtualenv 内建函数好文 awesome python 奇技淫巧 一句话求阶乘 from functools import ...

  4. python 精华梳理(已理解并手写)--全是干货--已结

    基础部分 map,reduce,filter,sort,推导式,匿名函数lambda , 协程,异步io,上下文管理 自定义字符串转数字方法一不使用reduce import re def str2i ...

  5. python 基础部分重点复习整理--从意识那天开始进阶--已结

    pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...

  6. spring boot 文件上传工具类(bug 已修改)

    以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...

  7. 迅雷最新bug已被找到!mac不用登录也可以极速下载了!

    想体验迅雷不限速的快感吗?下载这款迅雷Mac(不限速免vip)免登录版吧!拥有了这款迅雷Mac破解版,电影.游戏等所有大文件都不在话下.体验极速的下载功能,尽在迅雷Mac(不限速免vip)破解版!需要 ...

  8. 软件测试中Bug的生命周期以及Bug的严重等级

    软件测试中Bug的生命周期以及Bug的严重等级 我猜你们都会,但能说专业且全面不? 1.首先当测试人员接到一个项目或产品准备测试的时候,测试人员会根据测试用例一步步的来执行用例进行简单的功能测试.当测 ...

  9. 第三周作业3——Bug Report

    作业要求来自:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/957 要求1: 准备工作:利用老师提供的git 命令,批量pull所有 ...

随机推荐

  1. 解决UEditor将div标签换成p标签的问题

    原文链接 将设计排版好的页面html代码上传到数据库,再读取出来的时候发现所有的div都被替换成了p标签. 解决方法: 首先在ueditor.all.js文件内搜索allowDivTransToP,找 ...

  2. 【struts2】Struts2的异常处理

    在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我 ...

  3. xtrabackup 源码安装

    安装依赖包:这些依赖包必须要先安装好 # yum install cmake libaio-devel ncurses-devel bzip2-devel libxml2-devel libgcryp ...

  4. Python 文件 read() 方法

    概述 Python 文件 read() 方法用于从文件中读取指定的字符数,如果未给定或为负则读取所有. 语法 read() 方法语法如下: fileObject.read([size]) 参数 siz ...

  5. NTC与PTC压敏电阻在电源电路中起的作用

    https://wenku.baidu.com/view/e39beafdfab069dc502201f9.html 压敏电阻的作用 http://www.eepw.com.cn/article/27 ...

  6. [转]java调用外部程序Runtime.getRuntime().exec

    Runtime.getRuntime().exec()方法主要用于执行外部的程序或命令. Runtime.getRuntime().exec共有六个重载方法: public Process exec( ...

  7. IOS 项目的瘦身工具

    http://maniacdev.com/2014/01/tool-a-ruby-gem-allowing-you-to-quickly-find-and-remove-unused-imports- ...

  8. OpenUDID 实现UDID替代

    http://www.cnblogs.com/zhulin/archive/2012/03/26/2417860.html 补充:还有两个比较通用的开源解决方案: OpenUDID:https://g ...

  9. Android开发环境搭建篇详尽的教程实例汇

    原文链接:http://android.eoe.cn/topic/android_sdk 一.android开发环境搭建图文教程整理篇: 1.Android开发环境搭建全程演示(jdk+eclip+a ...

  10. [na]ip数据包格式

    IP Datagram Structure 字段名 解释 版本 IP协议的版本,目前的IP协议版本号为4,下一代IP协议版本号为6. 首部长度 IP报头的长度.固定部分的长度(20字节)和可变部分的长 ...