keil5代码提示功能用不了(keil怎么设置代码提示)

为什么我的keil5没有代码提示功能

需要配置,也就是“动态语法检测”

Keil(MDK-ARM)系列教程(六)_Configuration(Ⅱ):

Keil系列教程:

keil5 MDK版 安装完成打开后出现这样的提示,打不开怎么办?

涉及中文目录,keil 经常出些莫名其妙的问题,这点首先排除,安装目录,工程目录,都不要用中文,最好也不要用长文件名。

然后试试Windows菜单下有个Reset View To Defaults。

如果还不行,去Keil目录下的UV4目录,时间最近的几个文件删除一下,然后注册表里面搜索Keil,相关的记录删除一下。凭感觉看,截面里面的提示好像是注册表里面的乱码导致的。

还不好用,我也没办法了。重装试试吧。

启动keil5出现如图警告,并且写函数过程中,不会提示错误,求解决方法

Keil 编译时出现错误和警告的总结

      和C 编译器错误信息中文翻译

      (1)L15 重复调用

      ***WARNING L15: MULTIPLE CALL TO SEGMENT

      SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI

      CALLER1: ?PR?VSYNC_INTERRUPT?MAIN

      CALLER2: ?C_C51STARTUP

      该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断服务程序的函

      数)同时调用,或者同时被多个中断服务程序调用。

      出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一个中断打断,从

      而使得结果发生变化并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时候

      都可以被ISR 打断,一段时间后又可以

      运行,但是相应数据不会丢失)。

      原因之二是用于局部变量和变量(暂且这样翻译,arguments,[自变量,变元一数值,用于确定程序或子

      程序的值])的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的内存区就会被使用,这将导致其他函数

      的内存冲突。

      例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定义,它被一个中断

      服务程序或者一个调用了中断服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C 中。

      解决方法:

      如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并且该函数不占

      用内存(假设只使用寄存器),则你可以完全忽略这种警告。

      如果该函数占用了内存,则应该使用连接器(linker)OVERLAY 指令将函数从覆盖分析(overlay

      analysis)中除去,例如:

      OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *)

      上面的指令防止了该函数使用的内存区被其他函数覆盖。如果该函数中调用了其他函数,而这些被调用在

      程序中其他地方也被调用,你可能会需要也将这些函数排除在覆盖分析(overlay analysis)之外。这种OVERLAY 指

      令能使编译器除去上述警告信息。

      如果函数可以在其执行时被调用,则情况会变得更复杂一些。这时可以采用以下几种方法:

      1.主程序调用该函数时禁止中断,可以在该函数被调用时用#pragma disable 语句来实现禁止中断的目的。必

      须使用OVERLAY 指令将该函数从覆盖分析中除去。

      2.复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。

      3.将该函数设为重入型。例如:

      void myfunc(void) reentrant {

      ...

      }

      这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用这种方法时重入堆

      栈必须在STARTUP.A51 文件中配置。这种方法消耗更多的RAM 并会降低重入函数的执行速度。

      (2)提示无M51 文件

      编译时候提示:

      F:\...\XX.M51

      File has been changed outside the editor, reload ?

      ------

      解决方法:

      重新生成项目,产生STARTUP.

      

1/9

A51 即可。

      (3)L16 无调用

      *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

      SEGMENT: ?PR?_COMPARE?TESTLCD

      说明:程序中有些函数例如COMPARE(或片段)以前(调试过程中)从未被调用过,或者根本没

      有调用它的语句。

      这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就

      可以。不理它也没什么大不了的。

      解决方法:去掉COMPARE()函数或利用条件编译#if …..#endif,可保留该函数并不编译。

      (4)L10 和L16"主程序名字写错(或无主程序)"

      

keil5不显示错误和警告

首先要强迫自己不能接受任何错误和警告,否则就无法写出优秀的代码(至少在编译器眼里)。 面对错误,我们必须改正,否则程序不能运行,在这个编译器里面C++函数如果不是void类型,那么必须有返回值,否则会报错。对比v5编译器,只是一个警告而已。

2.

其他错误按照C++语法规则修改即可。 面对警告,很多人选择了忽略,但是我是不能容忍的,要消除警告。大部分警告是可以消除的,面对消除不了的警告,只能上绝招了。 在图中

361知讯网

本文链接:http://pdidw.com/keil/27875.html

发表评论

评论列表

还没有评论,快来说点什么吧~