STM32 keil中编译遇到的问题】的更多相关文章

发现 移植的SPI程序 说里面的 SPI_InitTypeDef 所有有关  SPI库函数的都找不到 这是因为 用的是  原子的程序   在 config函数中  把这个注释了…
解决方法: http://zhidao.baidu.com/link?url=DWTVVdALVqPtUt0sWPURD6c1eEppyu9CXocLTeRZlZlhwHOA1P1xdesqmUQNwcNrbqJTVN2rpieEWWBhwxULT_…
使用_at_关键字对存储器进行绝对地址定位程序如下: #include<reg51.h> ] _at_ 0x8000; main() { LED_Data[] = 0x23; } 在keil中运行以上程序可以在存储器窗口中输入 x:0x8000 可以看到0x8000地址中的值为0x23. 说明: 1.在给变量LED_Data[50]定位绝对地址空间时,不能对其赋初值. 2.char xdata LED_Data[50] _at_ 0x8000;   这条语句不能放在主函数中.若在keil中编译…
在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息: Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思:Code :是程序中代码所占字节大小RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only)RW-data :程序中已初始化的变量大小 (个人理解”:Read/Write)ZI-Data :程序中未初始化的变量大小 (个人理解 :Zero Initi…
在keil中仿照别人的程序写了RCC初始化的程序,编译后出现以下问题 .\obj\pro1.axf: Error: L6218E: Undefined symbol FLASH_PrefetchBufferCmd (referred from main.o). .\obj\pro1.axf: Error: L6218E: Undefined symbol RCC_GetFlagStatus (referred from main.o). .\obj\pro1.axf: Error: L6218E…
原文在此:http://www.cnblogs.com/mddblog/p/4920063.html 概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要的环境,比如堆栈初始化,变量初始化等.如果启动文件出现错误,则整个系统就跑不起来,因此研究启动文件非常必要. 在keil中,启动文件由汇编代码编写,一般命名为startup_xxx.s,xxx为支持的某种芯片,比如可以是lpc15xx(NXP的LPC15xx系列).MK60D10(飞思卡尔).stm…
keil中串口的虚拟调试信息在通过View-serial windows-#usart1/2/3/4/debug(printf)可以看到.当然也可以通过虚拟串口VSPD+串口调试助手在外部实现,方法如下: 虚拟 串口使用:步骤 1 下载虚拟串口软件,虚拟2个连接的串口COMA/COMB,这两个串口与PC机的真实物理串口没关系.两边的设置相同 2 打开串口通讯助手,将A分配给串口通讯助手,则B就分配给下面的COMx 2 在MDK中输入命令行或者将下面的做成debug.ini文件加载 MODE CO…
转自关于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的时间显示功能,那么又要多很多函数.这样的话一个程序下来几百行是很正常的事情,对于自己写的程序可能在自己的脑海中比较清晰,不会太乱,…
在KEIL中的模块化程序写法在使用KEIL的时候,我们习惯上在一个.c的文件中把自己要写的东西按照自己思路的顺序进行顺序书写.这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的.但是当程序很长的时候,比如你要用到LCD显示数据,就有几个LCD相关的函数,然后你想在LCD上显示温度,那么就要有DS18B20相关的操作,这又有几个相关的函数,如果你还想加上去DS1302的时间显示功能,那么又要多很多函数.这样的话一个程序下来几百行是很正常的事情,对于自己写的程序可能在自己…
主要介绍Keil C51的预处理方法如宏定义.常用的预处理指令及文件包含指令,C51编译库的选择及代码优化原理,C51与汇编混合编程的方法与实现以及超过64KB空间的地址分页方法的C51实现. 教学目标 1.了解Keil C51的预处理方法,主要有宏定义#define.常用的预处理指令#define.#error.#if .#else.#elif.#endif.#ifdef.#ifndef .#undef .#line .#pragma 及文件包含指令#include. 2.了解small.co…
在keil中,宏定义是一个重要内容.无参数的宏作为常量,而带参数的宏则可以提供比函数更高的调用效率.但预处理只是进行简单的文本代替,而不做语法检查,所以会存在一些问题. 例如:#define BUFSIZE 100 这里的BUFSIZE只是一个名字,并不占用存储空间并且能被放在一个头文件中.在编译期间编译器将用字符串“100”来代替所有的BUFSIZE.这种简单的置换常常会隐藏一些很难发现的错误,并且这种方法还存在类型问题.比如这个BUFSIZE究竟是整数还是浮点数?而使用const,则把值带入…
本学期开了门嵌入式的课程,在实验课上用到了一款基于ARM Cortex-M3处理器的LPC1768的实验板.本来这种课程我觉得应该可以学到很多东西,可是我发现实验课上老师基本只是讲了xx实验课的要求,然后你就拿着人家建好的工程编好的程序跑起来,仅仅只是运行了一下程序就可以结束了这个实验.学生学到的东西真的太少,比如如何调试的问题,你如何能知道你编写的代码输出是不是你想要的?你如何知道你编写的代码的效率是不是符合要求的?这些老师都不会教你.所以我觉得要想真正学到东西,无论什么时候都得靠自己. 见网…
本帖最后由 Cresta 于 2014-1-21 10:49 编辑 看到这篇C51的内存分配和优化的文章,个人觉得分析的十分到位,在这里转给大家   C51的内存分配不同于一般的PC,内存空间有限,采用覆盖和共享技术.在Keil编译器中,经过编译后,会形成一个M51文件,在其内部可以详细的看到内存的分配情况. C51内存常见的两个误区: (1)       变量超过128字节后必须用COMPACT模式. 其实,只要不超过256字节,都可以用SMALL模式 (2)       内部RAM,128字…
这两天仿真遇到的怪事真的是一大堆. 还是读写Flash的代码.keil编译OK,但是仿真就是莫名其妙地挂掉出现一些乱七八糟的事情. 后面发现是keil 中的memory model勾选错了,勾选的是large模式,应该勾选small模式. 上网查了一下large small的区别. Small:变量存储在内部ram里:small模式下,再入函数的堆栈是设在idata中的 Compact:变量存储在外部ram里,使用页8位间接寻址: compact模式下,再入函数堆栈是设在pdata中的 Larg…
Keil 中使用 STM32F4xx 硬件浮点单元一.前言有工程师反应说 Keil 下无法使用 STM32F4xx 硬件浮点单元, 导致当运算浮点时运算时间过长,还有 一些人反应不知如何使用芯片芯片内部的复杂数学运算,比如三角函数运算.针对这个部分本文将详 细介绍如何使用硬件浮点单元以及相关数学运算.二.问题产生原因1. ------对于Keil MDK Version 5 版本, 编译器已经完全支持STM32F4xx 的FPU(浮点运算单元), 可以直接 使用芯片内部的浮点运算单元.2. --…
本文的目的: 使用者在程序运行期间,可以动态的写Java Class,不需要生成任何.Class文件就可以完全在内存中编译,加载,实例化. 1.需要用到的组件介绍 1)JavaCompiler:用于编译Java Code. 2)CharSequenceJavaFileObject:用于保存Java Code,提供方法给JavaCompiler获取String形式的Java Code. 3)ClassFileManager:用于JavaCompiler将编译好后的Class文件保存在指定对象中.…
原文地址:在PLSQL中编译复杂的java PLSQL中可以编译运行JAVA程序. 一个简单的例子: create or replace and compile java source named xxfnd as package xxfnd;public class Test{  public void Test(){  } public static String  helloWorld{            return "success";   }} 但是如果真的想在PLSQ…
VS2012默认是不兼容Windows XP的,编译链接出来的程序只能在Windows Vista及以上版本的操作系统上运行.可是有时需要在Windows XP上运行,又不得不用VS2012(例如用了C++11的<thread>等等).这时,就犯愁了.没关系,这个问题可以搞定. 首先,你的VS2012必须升级到Update 3,否则无法编译出WinXP兼容的程序. 在VS2012集成开发环境中 编译工程时,在VS2012左侧的“解决方案管理器”是单击右键,在右键菜单中单击“属性”,然后在“配置…
在CentOS 6.4中编译安装gcc 4.8.1 分类: C/C++ Linux/Unix2013-11-28 21:02 1877人阅读 评论(0) 收藏 举报 原文链接:http://www.cnblogs.com/codemood/archive/2013/06/01/3113200.html   1. 安装gcc和g++ 新安装的CentOS缺少编译环境,必须先安装旧版本的gcc, 然后再进行自举编译 yum -y install gccyum -y install gcc-c++  …
eclipse中编译时enum出现cannot be resolved to a type错误 通常是因为eclise使用的jdk版本的问题...默认是使用的是jdk1.5 应该去选择成jdk1.6或者更高的版本. 项目右键->properties->Java Compiler->Compiler Compliance level 选择更高的版本 参考: http://stackoverflow.com/questions/3811012/can-not-compile-enums-in…
在我的昨天的博文<[原]我在Windows环境下的首个Libevent测试实例>中介绍了在Windows环境下如何编译一个echo server例子.今天我又试了一下在Linux环境中编译这个例子,遇到了一些问题,学习到了很多知识.这里也顺便记一下,增强一下理解.直接上代码: #include <iostream> #include <sys/socket.h> #include <event2/event.h> #include <event2/bu…
一般说来,我们在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…
转载: http://blog.163.com/libo_5/blog/static/156968520101016102051580/ http://hi.baidu.com/wg_wang/item/f9375c2f00ca75c0ee10f1db debian内核编译 1.到www.kernel.org/pub/liunux/kernel所需要编译的内核源代码 2.安装必要的包,其中kernel-package是debian用以编译内核的工具:fakeroot是一个在系统中创建假root的…
一个好的程序,不仅要有好的算法,同时也需要有良好的书写风格.写出好的算法不容易,但是好的代码风格却并不困难.提到格式化代码,Astyle是一个不能错过的工具,它可以方便的将程序代码格式化成自己想要的样式而不必人工修改,并且它是绿色.免费.开源.关于Astyle的介绍帮助及下载,请参考其官方网站:http://astyle.sourceforge.net/ 下面介绍在Keil uVision4 中添加Astyle的方法,上午参考keil的帮助手册,实现了在Keil中很方便的使用Astyle的方法:…
定义j时应注意其变量类型char,此循环当j=0时,再执行一次则keil中j=0XFF,而不是-1,所以无法跳出循环.但在vc6.0中是可以跳出循环的. 解决办法如下:不能让j的值为负数 uchar j:…
在Eclipse中编译Maven项目,运行 jetty:run 指令的时候会出错,在 JRE选项卡中加入: -Dorg.mortbay.util.URI.charset=GBK-Xms512m -Xmx512m-XX:PermSize=128M 就没事了…
在keil中printf默认是向串口中发送数据的,所以,如果应用该函数,必须先初始化串口,否则可能引起死机的情况,并且在printf之前应该先将TI置位,摘抄原因如下: 1.printf函数是调用putchar函数输入的,而putchar应该是先判断ti是否为1,不为1则等待为1.如果为1则清0,然后送出一个字符.因此你如果直接使用printf函数,你的程序就会在putchar函数中等待ti为1.这时你的程序就相当于直接死掉了.你可以通过改写putchar函数实现自己的目的.TI相当于是初始化~…
1.KEIL中的指针: 基于存储器的指针:数据类型 [指向存储区]  *[ 指针存储区]指针变量 char xdata * px //px本身存在于自动分配的空间,一般位于data中,指向的内容位于xdata char xdata * data px //px本身存在于data空间,指向的内容位于xdata data char xdata * px =char xdata *data px; data空间:内部ram 0-128字节 xdata空间:外部扩展ram, 用movx 及间址访问 一般…
在keil 中 C语言的函数有带参数和不带参数之分. 一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun.这没有错.事实上,不管C语言的函数是否带参数,只要函数在调用过程中不用寄存器传递参数,生成的汇调用址(函数名)都是原来的函数名. 比如:     #pragma noregparms   void fun(unsigned int a,unsigned char b) {   unsigned c;   c = a + b; re…