@2019-02-15 [问题描述] 使用 KEIL(带灰暗特性版本) 查看头文件代码时,其中有依据不同宏定义对应不同执行语句代码部分,依据灰暗特性呈现生效与失效代码,靠眼睛反应就是灰暗呈现为失效代码即其宏定义未定义,这样就主观认为灰暗代码部分不执行,导致在分析调用该头文件的源文件中使用头文件的宏函数时无对应执行代码,与实际调试结果不否,实际结果呈现是执行了该宏函数的执行代码 [分析解决] 见文<C 头文件.宏.编译问题>中宏解释部分 [结论] KEIL 对这种情况的使用无能为力,其作为工具只…
一个好的程序,不仅要有好的算法,同时也需要有良好的书写风格.写出好的算法不容易,但是好的代码风格却并不困难.提到格式化代码,Astyle是一个不能错过的工具,它可以方便的将程序代码格式化成自己想要的样式而不必人工修改,并且它是绿色.免费.开源.关于Astyle的介绍帮助及下载,请参考其官方网站:http://astyle.sourceforge.net/ 下面介绍在Keil uVision4 中添加Astyle的方法,上午参考keil的帮助手册,实现了在Keil中很方便的使用Astyle的方法:…
在keil 中 C语言的函数有带参数和不带参数之分. 一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun.这没有错.事实上,不管C语言的函数是否带参数,只要函数在调用过程中不用寄存器传递参数,生成的汇调用址(函数名)都是原来的函数名. 比如:     #pragma noregparms   void fun(unsigned int a,unsigned char b) {   unsigned c;   c = a + b; re…
关于Astyle Astyle 的全称是Artistic Style的简称,是一个开源的源代码格式化工具,可以对C,C++,C#以及Java等编程语言的源代码进行缩进.格式化.美化.Home Page: http://astyle.sourceforge.net/Project Page: http://sourceforge.net/projects/astyle/ 在Keil μVision中集成Astyle(以Keil μVison4为例) ①下载Astyle,解压到任意位置(Astyle…
原文在此:http://www.cnblogs.com/mddblog/p/4920063.html 概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要的环境,比如堆栈初始化,变量初始化等.如果启动文件出现错误,则整个系统就跑不起来,因此研究启动文件非常必要. 在keil中,启动文件由汇编代码编写,一般命名为startup_xxx.s,xxx为支持的某种芯片,比如可以是lpc15xx(NXP的LPC15xx系列).MK60D10(飞思卡尔).stm…
第49章     在SRAM中调试代码 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:<STM32F4xx 中文参考手册>.<STM32F4xx规格书>.<Cortex-M3权威指南>.<Cortex-M4 Technical Reference Manual>(跟M3大部分是相同的,读英文不习惯可先参考<Cortex…
一般说来,我们在C语言中定义的每一个变量初始化后都会占用一定的内存(RAM)空间.但是在keil中提供了一个特殊的关键字“code”,这个关键字在标准C中是没有的.其语法举例如下: unsigned char code word[] = {       0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,       0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,       0x0F,0x0C,0xE8,0x03,0x08,0x0C…
转自关于keil中data,idata,xdata,pdata,code的问题 ‍从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述).与ANSI-C稍有不同,它只分SAMLL.COMPACT.LA…
在使用KEIL的时候,我们习惯上在一个.c的文件中把自己要写的东西按照自己思路的顺序进行顺序书写.这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的.但是当程序很长的时候,比如你要用到LCD显示数据,就有几个LCD相关的函数,然后你想在LCD上显示温度,那么就要有DS18B20相关的操作,这又有几个相关的函数,如果你还想加上去DS1302的时间显示功能,那么又要多很多函数.这样的话一个程序下来几百行是很正常的事情,对于自己写的程序可能在自己的脑海中比较清晰,不会太乱,…
关于C语言,我们一般都知道对于RAM定位可以用关键字 _at_,但对于程序代码定位往往感到很迷惑, 其实keil中的程序代码定位功能极为强大 Menu: Options for Target 'Target' -> BL Locate Use Memory Layout from Target Dialog      Code Range: 0X01D3-0XFFFF      Xdata Range: 0X0000--0XFFFFCode: ?C_C51STARTUP(0X1D3),?C_IN…