源:http://blog.163.com/zhaojun_xf/blog/static/300505802011291384721/

使用Keil/MDK这么多年了,一直都没有使用它的代码优化功能。总是觉得在容量可以容纳的情况下没有必要。最近在做一个摄像头项目时,总是只能在TFT上显示大约2/3的图像。其余1/3没有显示。当按键时,整个TFT都能显示,那么按照分析,应该是因为代码是速度太慢造成的。但是分析了一下代码实在没有可以更改的地方了。那么是单片机运行速度问题吗?

本代码本来是用IAR编写的,而且在单片机上实现了,效果非常不错。所以完全能够排除上面的问题。那么只能说明是编译平台在生成代码的过程中,造成了速度问题。

既然如此,那就优化一下代码吧,通过更改MDK的优化选项,编译下载后,问题搞定。看了优化功能还是不错的。

为了保证你的代码在优化后能正确运行,一定要注意在不能被优化的变量前加上:volatile。

MDK的优化应用(转)的更多相关文章

  1. MDK的优化应用

    MDK的优化应用 http://blog.163.com/zhaojun_xf/blog/static/300505802011291384721/ 使用Keil/MDK这么多年了,一直都没有使用它的 ...

  2. MDK编译优化笔记

    在一次使用MDk的编译优化等级比较高的时候发现编译不优化时功能正常,开了优化等级02就出现异常,调试中看了很多博客总结一下. 一个变量,如果你的主程序要用到,同时中断还要用到,要加volatile修饰 ...

  3. MDK编译器内存分配

    转:https://blog.csdn.net/zuixin369/article/details/76195186?locationNum=7&fps=1 Keil MDK编译器完成编译链接 ...

  4. STM32内存知识

    在了解STM32内存之前需要了解 MCU 的型号和MDK 中的.map 文件,很多刚学习 stm32 时都不会过多的去了解 MCU 的选型,是在太枯燥了.这里在从新了解一下,久了就熟悉了. 一.STM ...

  5. keil mdk中如何确保某一段程序不被优化掉

    使用mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认方式下,将会把这个函数从整个程序总删除掉,以节省ROM. 比如,你在ROM的0x00002000处定位了一个函数,假设为vo ...

  6. keil mdk中如何确保某一段程序不被优化掉(转)

    源:keil mdk中如何确保某一段程序不被优化掉 使用mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认方式下,将会把这个函数从整个程序总删除掉,以节省ROM. 比如,你在RO ...

  7. MDK C++中对内联的极度优化

    先来看看我们SmartIRQ的具体实现 // 智能IRQ,初始化时备份,销毁时还原 class SmartIRQ { public: force_inline SmartIRQ(bool enable ...

  8. Keil MDK 无法设置断点【worldsing】

    要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果:   1.keil 不能设置断点,每 ...

  9. MDK建立STM32F103*开发模板

    一.整体流程 1.获取ST库--STM32F10x_StdPeriph_Lib_V3.5.0 2.新建文件夹并加载文件 3.新建工程 4.给工程添加组 5.设置"Target Option& ...

随机推荐

  1. websphere安装验证报错 忘记密码的配置

    http://blog.csdn.net/yulimin/article/details/4048897 ADMU7704E: 在尝试启动与服务器相关联的 Windows 服务时失败:server1: ...

  2. 让上下两个DIV块之间有一定距离或没有距离

    1.若想上下DIV块之间距离,只需设定:在CSS里设置DIV标签各属性参数为0div{margin:0;border:0;padding:0;}这里就设置了DIV标签CSS属性相当于初始化了DIV标签 ...

  3. 常见的jquery一些效果

    1.CSS渐变:background: linear-gradient(to bottom right, #999 , #eee);

  4. μCos-ii学习笔记2_任务管理

    二.任务管理 任务管理是ucos-ii操作系统的核心内容.这一章大致就以下流程来介绍和总结任务管理的相关知识. 要实现复杂任务管理,必然要定义众多数据来描述任务状态,为了精简,建立了许多不同的数据结构 ...

  5. swap in java?

    Is it possible to write a swap method in java? these two variables will be primitives. It's not poss ...

  6. Qt 5简介

    Qt 5简介 Qt 5概要介绍 在Qt 5这个版本中,Qt Quick成为了Qt的核心.但是Qt 5也继续提供了本地C++强大的功能来完成更好的用户体验,也提供了对OpenGL/OpenGL ES图形 ...

  7. mongodb 慢SQL查询

    在 MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是Mongo Database Profiler.不仅有,而且还有一些比MySQL ...

  8. zf-关于更换页面,的各种问题。

    问题1:找不到common 这个变量(集合)与layer这个js文件. 这里的common 就是一个方法集合,声明var common;  common.abc = function(参数1,参数2, ...

  9. display:table表格合并单元格

    直接上代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...

  10. 在Activity之间使用Intent传值和Bundle传值的区别和方式

    两者本质上没有任何区别.Bundle只是一个信息的载体 将内部的内容以键值对组织 Intent负责Activity之间的交互 自己是带有一个Bundle的Intent.putExtras(Bundle ...