关于MDK编译器优化产生的一个小问题

偶然间遇到后,滤除了其他无关的代码和模块,在开发板上试了试,是一样的问题

用正点原子的F4开发板和他们的定时器中断例程。

将定时器中断改为20ms一次

截图就是全部代码了。

中断里给TimeFlag++,

在主循环里判断标志是否来临,如果来临LED0翻转,如果超时则打印超时信息。

用示波器看到的波形是这样的。

解决这个问题的办法有很多,但是我不知道这样为什么不行,最后吃菠菜面的时候突然想到会不会是编译器造成的,第二天上班一试果然。

原文地址:https://www.cnblogs.com/schoolmate-li/p/10868910.html

时间: 2024-08-30 14:32:27

关于MDK编译器优化产生的一个小问题的相关文章

MDK编译器内存分配

转:https://blog.csdn.net/zuixin369/article/details/76195186?locationNum=7&fps=1 Keil MDK编译器完成编译链接后,在调试窗口会出现Code,RO,RW,ZI 四种内存分配区域,下面说明其中的意思. Code区:代码区.该区域除了存放指令外,还有全局.静态及局部变量的初始化值.当函数被调用时,该函数用code区内局部变量初始化值来初始化堆栈区内分配的局部变量. RO区:常量区.该区域存放那种类型的数据呢?有字符串常量

关于sql优化的一个小总结

1.数据量大的时候,可以分多次查询2.有些数据的存储可以分主次表,此表存一些不常用的数据3.union all 比union效率要高4.尽量不要用distinct5.不返回不需要的行和列6.根据条件加索引7.可以把like用法换成截取字符串作比较8.检索的时候可以把页数也当做条件(每次查询拿出最大的id),加载下一页的时候从最大的id开始9.尽量不要临时表,table变量,子查询.case等10.用profiler来跟踪查询,得出查询所需时间,找出sql问题所在11.视图尽量少用12.没必要时不

.net: 不能忽视的break——寻找VS2010和VS2012编译器的一个小区别

文中的问题来自于实际开发,但是实际开发中的代码逻辑比较复杂,因此下面的代码去掉了所有逻辑,只保留能体现问题的代码,类和都只为了说明问题,并不具有实际意义.下面首先看看下面的代码和现象. 1. 问题再现 下面的代码重现了场景, 看完这段代码是不有任何问题吗?下面看看输出结果. 1 public class IL 2 { 3 public List<InstanceOne> _instances = new List<InstanceOne>(); 4 public InstanceO

编译器,优化,及目标代码生成.

本文介绍从源文件开始到目标代码生成的过程. 首先,是我们每天都要接触的源文件.源文件是由纯ASCII或者其他字符集组成的文本,由程序员使用文本编辑器创建.它有以下的几种形式 纯文本.好处是易于维护.并且可以使用处理文本文件的程序来处理源文件. 这个就是我们最常见的源代码形式了.甚至可以使用notepad来处理源文件! 记号化的源文件.使用专门的单字节"记号"值来表示源文件中的保留字等语句元素. 好处1:尺寸小,由于使用单字节的符号来"压缩"多字符的保留字,所以比纯文

电商总结(八)如何打造一个小而精的电商网站架构

前面写过一些电商网站相关的文章,这几天有时间,就把之前写得网站架构相关的文章,总结整理一下.把以前的一些内容就连贯起来,这样也能系统的知道,一个最小的电商平台是怎么一步步搭建起来的.对以前的文章感兴趣的朋友可以看这个,http://www.cnblogs.com/zhangweizhong/category/879056.html 本文大纲: 1. 小型电商网站的架构 2. 日志与监控系统的解决方案 3. 构建数据库的主从架构 4. 基于共享存储的图片服务器架构 5. 移动M站建设 6. 系统容

深入理解JVM读书笔记四: (早期)编译器优化

10.1概述 Java 语言的 "编译期" 其实是一段 "不确定" 的操作过程,因为它可能是指一个前端编译器(其实叫 "编译器的前端" 更准确一些)把 .java 文件转变成 .class 文件的过程:也可能是指虚拟机的后端运行期编译器(JIT 编译器,Just In Time Compiler)把字节码转变成机器码的过程:还可能是指使用静态提前编译器(AOT 编译器,Ahead Of Time Compiler)直接把 *.java 文件编译成

用android去写一个小程序

前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云(http://www.cnblogs.com/clyln/),用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对应,缺点:采用java实现过于复杂,工程量过大,需要消耗大量资源,类型转换容易出错. 后期思路设计: 采用二维数组:第一行用于存储用户输入原始数据,第二行用于存储中间数据(第一行的与G值做差的绝对值),第三行用于保存用户得分. 优点:实现简单,易于运算 分

mdk编译器起到的boot作用详解

前几天跟人在某个技术交流群里:  和大家讨论时说了一句话:mdk编译器也会做一部分bootloader的工作,顿时一大群一大堆学友的"声讨和纠正",学友们有些说厂商已经提供了相应的startup文件,就完成了相应bootloader的启动,有些说厂商会固化程序在内部芯片中完成那部分startup没有的bootloader的启动,更有一些离谱的说直接硬件做那部分boot数据搬移的工作.同学们啊,就算你们猜你们也要猜的靠谱些啊!!  当然,这些说法都是错误的,其实在arm-none-liu

js动画--一个小bug处理下

对于上面的课程我们很好的处理了一个小bug,那么我们现在讲程序进行优化一下,前一节的程序中,我们处理处理的属性都是写死了的.为了我们能够很好的对某个属性进行操作的话.我们这样来设置. js文件 window.onload=function(){ var ls=document.getElementsByTagName("li"); for(var i=0,l=ls.length;i<l;i++){ ls[i].timer=null; ls[i].onmouseover=funct