问题描述:全局变量,会被莫名其妙更改!打印为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. [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'beginTime';

    依照https://stackoverflow.com/questions/23702041/failed-to-convert-property-value-of-type-java-lang-st ...

  2. SDL操作笔记

    原文地址:https://blog.csdn.net/qq_38124598/article/details/73543184 这里总结一下个人对SDL的一些函数,方便以后查询.   v1.0.1 1 ...

  3. systemd的程序自启动脚本编写

    以FreeSWITCH的自启动脚本为例. 一. 编写freeswitch.service文件 [Unit] Description=FreeSWITCH After=syslog.target net ...

  4. 常用的apache commons工具,直接使用,便于快速开发

    详情 :http://commons.apache.org/ Components Description Latest Version Released Attributes Runtime API ...

  5. python标准库介绍——32 Queue 模块详解

    Queue 模块 ``Queue`` 模块提供了一个线程安全的队列 (queue) 实现, 如 [Example 3-2 #eg-3-2] 所示. 你可以通过它在多个线程里安全访问同个对象. ==== ...

  6. haproxy 同一域名下分发请求

    http://www.th7.cn/Program/java/201608/936162.shtml https://my.oschina.net/lockupme/blog/733375 还有一点要 ...

  7. AdminLTE, Color Admin

    AdminLTE, Color Adminhttps://github.com/almasaeed2010/AdminLTE/http://www.seantheme.com/color-admin- ...

  8. ES6模块的import和export用法

    ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范.commonjs主要应用于服务器,实现同步加载,如nodejs.AMD规范应用于浏览器,如requirejs,为异步加载 ...

  9. 菜鸟教程之工具使用(三)——Maven自动部署到Tomcat

    书接上回,上一篇博客介绍了如何用Maven将项目打包,这篇文章就说一下如何用Maven将打完的war包部署到Tomcat,而不是手动的copy过去. 目前比较流行的方式有两种:一种是利用Tomcat官 ...

  10. Why-are-GPUs-well-suited-to-deep-learning

    https://www.quora.com/Why-are-GPUs-well-suited-to-deep-learning http://timdettmers.com/2015/03/09/de ...