您好,欢迎进入u8国际电动伸缩门有限公司官网!
u8国际|u8国际官方网站|u8国际网址最新

联系我们

邮箱:youweb@admin.com
电话:@HASHKFK
地址:广东省广州市番禺经济开发区 在线咨询

u8国际常见问题

keil软U8国际- U8国际官方网站- 体育APP下载件错误总结doc

发布日期:2025-07-25 12:53 浏览次数:

  u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口

keil软U8国际- U8国际官方网站- U8体育APP下载件错误总结doc

  37、?SPI_RECEIVE_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP 该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序(或者调用中断 服务程序的函数)同时调用, 或者同时被多个中断服务程序调用。 出现这种问题的原因之一是这个函数是不可重入性函数,当该函数运行时它可能会被一 个中断打断,从而使得结果发生变化 并可能会引起一些变量形式的冲突(即引起函数内一些数据的丢失,可重入性函数在任何时 候都可以被ISR 打断,一段时间后又可以 运行,但是相应数据不会丢失)。 原因之二是用于局部变量和变量(

  38、暂且这样翻译,arguments,自变量,变元一数值,用于 确定程序或子程序的值)的内存区被其他函数的内存区所覆盖,如果该函数被中断,则它的 内存区就会 被使用,这将导致其他函数的内存冲突。 例如,第一个警告中函数WRITE_GMVLX1_REG 在D_GMVLX1.C 或者D_GMVLX1.A51 被定义, 它被一个中断服务程序或者一个调用了中断 服务程序的函数调用了,调用它的函数是VSYNC_INTERRUPT,在MAIN.C 中。 解决方法: 如果你确定两个函数决不会在同一时间执行(该函数被主程序调用并且中断被禁止),并 且该函数不占用内存(假设只使用寄存器), 则你可以完全忽略这种警告

  39、。 如果该函数占用了内存,则应该使用连接器(linker)OVERLAY 指令将函数从覆盖分析 (overlay analysis)中除去,例如: OVERLAY (?PR?_WRITE_GMVLX1_REG?D_GMVLX1 ! *) 上面的指令防止了该函数使用的内存区被其他函数覆盖。如果该函数中调用了其他函数, 而这些被调用在程序中其他地方也被调用, 你可能会需要也将这些函数排除在覆盖分析(overlay analysis)之外。这种OVERLAY 指令能 使编译器除去上述警告信息。 如果函数可以在其执行时被调用,则情况会变得更复杂一些。这时可以采用以下几种方 法: 1.主程序调用该函数时

  40、禁止中断,可以在该函数被调用时用#pragma disable 语句来实现禁 止中断的目的。必须使用OVERLAY 指令将该函数 从覆盖分析中除去。 2.复制两份该函数的代码,一份到主程序中,另一份复制到中断服务程序中。 3.将该函数设为重入型。例如: void myfunc(void) reentrant . 这种设置将会产生一个可重入堆栈,该堆栈被被用于存储函数值和局部变量,用这种 方法时重入堆栈必须在STARTUP.A51 文件中配置。 这种方法消耗更多的RAM 并会降低重入函数的执行速度。 11. * WARNING L16: UNCALLED SEGMENT, IGNORED FOR

  41、 OVERLAY PROCESS SEGMENT: ?PR?_COMPARE?TESTLCD 说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有 调用它的语句。 这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简 单的调整就可以。不理它也没什么大不了的。 解决方法:去掉COMPARE()函数或利用条件编译#if .#endif,可保留该函数并不 编译。 - C 编译器错误信息中文翻译 Ambiguous operators need parentheses 不明确的运算需要用括号括起 Ambiguous symbol xxx 不明确的符号 Argu

联系方式

全国服务热线

@HASHKFK

手 机:@HASHKFK

地 址:广东省广州市番禺经济开发区

扫一扫,加微信

Copyright © 2002-2024 u8国际电动伸缩门有限公司 版权所有 非商用版本 备案号: