1.提示 UNRESOLVED EXTERNAL SYMBOL SYMBOL:?C
很大可能相应代码忘记加入到代码组里面!
2、一直提示我重复定义函数,搜了一下网上,似乎只有变量的重复定义的问题啊,怎么函数也有重复定义的问题!!!最后删了uart.c和uart.h,然后编译成功。。。
最后仔细一看,竟然main.c中头文件包含的是uart.c
3、error C267: '××': requires ANSI-style prototype
×× - 通常是函数,缺少函数原型。
有时候自己明明有声明的,这个时候就要注意了,可能是后来稍微变了传入参数或者返回类型,注意再修改一下!
4、 warning C276: constant in condition expression
看错误地方就明白了。
5、*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
未调用的片段,注意区分和未调用函数的区别。*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
通常是常量段,比如我这次的LedChar定义了未调用。
5、CALLER1: ?PR?INTERRUPTTIMER0?MAIN
不仅仅未调用的函数会出现这种情况,定义了未调用的数组也同样会!
6、*** WARNING L15: MULTIPLE CALL TO SEGMENT
很大可能中断程序和main函数同时调用了,注意查看!
关键字:keil 错误处理
引用地址:
keil 常犯错误处理
推荐阅读最新更新时间:2024-03-16 16:19
keil5和keil5 mdk有什么区别?
从Keil C51都Keil5 MDK,不知不觉已经用了Keil十几年。 虽然现在新增了一些开发环境,不过keil对于老工程师来说,应该是最亲切的了… Keil出过很多个版本,很多人最熟悉的是Keil C51和Keil5 MDK。 我们在做STM32程序开发编译的时候,基本上都是用keil5这个软件。 Keil5和Keil5 MDK(Microcontroller Development Kit)是 同一个软件的不同版本 。 Keil5是Keil公司推出的一款嵌入式开发工具,包括了MDK、DS-MDK和MDK-Lite三个版本,其中MDK是最全面的版本,支持最多的器件和功能。 Keil5提供了一个完整的开发环境,包括编辑器、编
[单片机]
Keil Cx51编译器编译模式
Keil Cx51编译器提供三条编译模式控制命令:SMALL,COMPACT,LARGE,它们对变量存储器空间的影响如下。 SMALL:所有变量都被定义在8051单片机的片内RAM中,对这种变量的访问速度最快。另外,堆栈也必须位于片内RAM中,而堆栈的长度是很重要的,实际栈长取决与不同函数的嵌套深度。采用SMALL编译模式与定义变量时指定data存储器类型具有相同效果。 COMPACT:所有变量被定义在分页寻址的片外XRAM中,每一页片外XRAM的长度为256字节。这时对变量的访问是通过寄存器间接寻址(MOVX @R0,MOVX @R1)进行的,变量的低8位地址由R0和R1确定,变量的高8位地址由P2口确定。采用这种模式时,必须适
[单片机]
stm32f407discovery 的keil 4.60ST-linkII不能用解决方法
1 、用资源中的STLink文件替换 C:\Keil\ARM\STLink, 记得备份原来的文件, 2、C:\Keil\TOOLS.INI改成如下的 ORGANIZATION= cs2c NAME= jianzhong , cui EMAIL= cjzswust@gmail.com ARMSEL=1 BOOK0=UV4\RELEASE_NOTES.HTM( uVision Release Notes ) PATH= C:\Keil\ARM VERSION=4.60 PATH1= C:\Program Files\arm-none-eabi-gcc-4_6\ TOOLPR
[单片机]
Keil的软件仿真和硬件仿真
一、软件仿真 Keil有很强大的软件仿真功能,通过软件仿真可以发现很多将要出现的问题,Keil的仿真可以查看很多硬件相关的寄存器,通过观察这些寄存器值的变化可以知道代码有没有正常运行。这样可以避免频繁下载程序,延长单片机Flash寿命。 开始仿真之前,先配置一些选项。 1.在工程设置里设置好芯片型号和晶振频率。 2.在“Debug”选项卡中选择“Use Simulator”,表示使用软件仿真;选择“Run to main()”则表示跳过汇编代码,直接跳转到main函数开始仿真。设置下面的“Dialog DLL”项为“DARMSTM.DLL”和“TARMSTM.DLL”;parameter项为“-pSTM32F1
[单片机]
stm32怎么用keil软件进行调试
在做开发的前几年,基本上都没用仿真,有bug就尝试改程序,一边改一边调试。 甚至都还不知道硬件仿真存在的价值,因为一直都没用过,而且很多芯片也不支持。 直到有一次在做行车记录仪项目的时候,接触到了GRAIN公司的一款单片机。 本来我打算是直接开干的,但是老大非要我把这个芯片的仿真环境搭好。 于是我就开始网上搜集资料,不得不说这块的资料真少,那时又刚接触仿真这块的。 搞了将近半个月都搞不定,然后我鼓起勇气跟老大说,仿真搞不出来,要不我就直接开始写程序烧录进去调试算了。 但是老大的意思还是希望我把仿真的环境搭建出来,我又试了2个星期,还是不行,于是就不理他了,直接开始写程序调试。 如果没浪费时间研究怎么搭建仿环境,估计我程序都完成40
[单片机]
keil中文乱码解决和个人习惯字体设置
keil的“Edit”-“Configuration”里有一个“Encoding”设置,当该设置是“Encoding in ANSI”时,keil里的中文就是用两个位来表示的,这个时候把keil中的中文字拷贝出去就会乱码。 所以把该设置改为“Chinese GB2312”,就可以解决这个问题了。 改了这个设置后,keil内的显示和之前差异很大,看着很不习惯。 所以在“Configuration”-“Colors&Fonts”下,因为我们是用的C语言,所以在窗口中选择“C/C++ Editor files”,在右边窗口中选择“Text”,在最右边点“Font”,选择字体“SimSun-ExtB”,经过一个字体一个字体比对,这
[单片机]
keil C51中的本征函数库及使用说明
本征函数(intrinsicroutines)是指编译时直接将固定代码插入当前行,而不用ACALL和LCALL 来实现(无需堆栈操作?),可大大提高函数的访问效率. 函数原型 extern void _nop_ (void); extern bit _testbit_ (bit); extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long,
[单片机]
关于51精确延时及keil仿真延时时间
有时候需要精确的延时,比如18B20温度传感器对时序要求非常严格,必须精确到微秒级别 一、用NOP函数 在keil C51中,直接调用库函数: #include // 声明了void _nop_(void); _nop_(); // 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。(若为11.0592MHz,延时为12*(1/11.0592)=1.085uS)。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。 二、用for和while实现 在选择C
[单片机]