keilC51编译常见错误和警告说明

2023-05-16

如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的解决办法加以归纳以期共享!

( 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.A51 即可。

(3)L16 无调用
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_COMPARE?TESTLCD

说明 : 程序中有些函数例如 COMPARE ( 或片段 ) 以前 ( 调试过程中 ) 从未被调用过 , 或者根本没
有调用它的语句。
这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就
可以。不理它也没什么大不了的。
解决方法 : 去掉 COMPARE() 函数或利用条件编译 #if … ..#endif, 可保留该函数并不编译。

(4)L10 和 L16" 主程序名字写错 ( 或无主程序 )"
程序中 :
void mian (void)
编译提示 :
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?MIAN?MAIN
*** WARNING L10: CANNOT DETERMINE ROOT SEGMENTProgram Size: data=8.0 xdata=0 code=9
---

修改 :
缺少主程序 ( 其实是笔误 ), 将 mian 改为 main

(5)L16 主程序没用到前面定义的函数
主程序里没用到前面定义的函数,编译时显示:
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?DELAY?MAIN


(6)L210 程序前生成 SRC 语句
Build target 'Target 1'
assembling STARTUP.A51...
compiling test.C...
linking...
BL51 BANKED LINKER/LOCATER V6.00 - SN: K1JXC-94Z4V9
COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2005
"STARTUP.obj",
"test.obj"
TO "test"
*** FATAL ERROR L210: I/O ERROR ON INPUT FILE:
EXCEPTION 0021H: PATH OR FILE NOT FOUND
FILE: test.obj
Target not created

---------
设置上的问题,在程序里屏蔽掉 #pragma src 即可

(7)C206 函数未定义
该函数没定义
MAIN.C(15): warning C206: 'delay1': missing function-prototype(8)C141 少分号
部分程序 :
{
pval = P1
P3 = pval;
}
编译提示出错 :
MAIN.C(22): error C141: syntax error near 'P3'
改正 : P1 后加 ";"

(9)C129 汇编与 C 后缀问题
例如写这么一段小程序,保存为 c0.c ,编译时出现 error c129 , miss ; before 0000 ;
如果保存为: c0.asm 就不会出现这个错误,保存为 c 的话,先调用 c51 编译器,按 c 语言的要求编译,所以
出现错误;可以参考一些书,专门介绍 keilc 这个编译器的;

(10)C101 和 C141 关于数组引号问题
定义了如下的数组:
unsigned char
a[36]={'0xfe','0xfd','0xfb','0xf7','0xef','0xdf','0xbf','0x7f','0x7e','0x7d','0x7b','0x77','0x6f','
0x5f','0x3f','0x3e','0x3d','0x3b','0x37','0x2f','0x1f','0x1e','0x1d','0x1b','0x17','0x0f','0x0e','0
x0d','0x0b','0x07','0x06','0x05','0x03','0x02','0x01','0x00'};
可是编译的时候总通不过,错误提示如下:
Build target 'Target 1'
compiling shaomiao.c...
SHAOMIAO.C(3): error C101: ''0': invalid character constant
SHAOMIAO.C(3): error C141: syntax error near 'xfe'
SHAOMIAO.C(3): error C101: ''}': invalid character constant
Target not created

解决方法:去掉 '...' 引号

(11)C100 和 C141 和 C129 程序有中文标点
用 keil 编译时出现错误,如下: D:\KEIL\C51\INC\REG52.H(1): error C100: unprintable character 0xA1
skipped同上错误有很多个,还有 D:\KEIL\C51\INC\REG52.H(2): error C141: syntax error near '#'
D:\KEIL\C51\INC\REG52.H(2): error C129: missing ';' before'<'

但是 reg52.h 头文件是 keil 自带的(见下),为何会报错呀。
----
回答: 程序里有带中文标点,用英文重新写一遍即可

(12)A45 汇编出现数字、字母混淆
MOV PO,A ;put on next 11
...
MOV RO,#0FFH ; 14
MOV R1,#OFFH ; 15
...
DJNZ RO,DLY_LP ;19
MOV R0,#OFFH ; 20
...
编译后:
ledtest.asm(11): error A45: UNDEFINED SYMBOL (PASS-2)
ledtest.asm(14): error A45: UNDEFINED SYMBOL (PASS-2)
ledtest.asm(15): error A45: UNDEFINED SYMBOL (PASS-2)
ledtest.asm(19): error A45: UNDEFINED SYMBOL (PASS-2)
ledtest.asm(20): error A45: UNDEFINED SYMBOL (PASS-2)
Target not created

---------
注意:
字母 “ O ” 和 数字 “ 0 ” 。主要错在这里。
应该输入数字 “ 0 ” ,而你输入字母 “ O ” 了。

(13) Warning 280: ’ i ’ :unreferenced local variable
说明局部变量 i 在函数中未作任何的存取操作解决方法消除函数中 i 变量的宣告2 Warning 206: ’ Music3 ’ :missing function-prototype
说明 Music3( ) 函数未作宣告或未作外部宣告所以无法给其他函数调用
解决方法将叙述 void Music3(void) 写在程序的最前端作宣告如果是其他文件的函数则要写
成 extern void Music3(void), 即作外部宣告

3 Compling :C:\8051\MANN.C
Error:318:can ’ t open file ‘ beep.h ’
说明在编译 C:\8051\MANN.C 程序过程中由于 main.c 用了指令# i nclude “ beep.h ” , 但
却找不到所致解决方法编写一个 beep.h 的包含档并存入到 c:\8051 的工作目录中

(14)Compling:C:\8051\LED.C
Error 237: ’ LedOn ’ :function already has a body

说明 LedOn( ) 函数名称重复定义即有两个以上一样的函数名称
解决方法修正其中的一个函数名称使得函数名称都是独立的

15)***WARNING 16:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_DELAYX1MS?DELAY

说明 DelayX1ms( ) 函数未被其它函数调用也会占用程序记忆体空间解决方法去掉DelayX1ms( ) 函数或利用条件编译 #if … ..#endif, 可保留该函数并不编译

(16) ***WARNING 6 :XDATA SPACE MEMORY OVERLAP
FROM : 0025H
TO: 0025H

说明外部资料 ROM 的 0025H 重复定义地址
解决方法外部资料 ROM 的定义如下 Pdata unsigned char XFR_ADC _at_0x25 其中 XFR_ADC
变量的名称为 0x25, 请检查是否有其它的变量名称也是定义在 0x25 处并修正它

(17) WARNING 206: ’ DelayX1ms ’ : missing function-prototype
C:\8051\INPUT.C
Error 267 : ’ DelayX1ms ‘ :requires ANSI-style prototype C:\8051\INPUT.C

说明程序中有调用 DelayX1ms 函数但该函数没定义即未编写程序内容或函数已定义但未作宣告
解决方法编写 DelayX1ms 的内容编写完后也要作宣告或作外部宣告可在 delay.h 的包含档宣告成外部以便其它函数调用

(18) ***WARNING 1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL:MUSIC3
MODULE:C:\8051\MUSIC.OBJ(MUSIC)
***WARNING 2:REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL:MUSIC3
MODULE:C:\8051\MUSIC.OBJ(MUSIC)
ADDRESS:0018H

说明程序中有调用 MUSIC 函数但未将该函数的含扩档 C 加入到工程档 Prj 作编译和连接
解决方法设 MUSIC3 函数在 MUSIC C 里将 MUSIC C 添加到工程文件中去

(19) ***ERROR 107:ADDESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: _DATA_GOUP_
LENGTH: 0018H
***ERROR 118: REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL: VOLUME
MODULE: C:\8051\OSDM.OBJ (OSDM)
ADDRESS: 4036H

说明 data 存储空间的地址范围为 0~0x7f, 当公用变量数目和函数里的局部变量如果存储模式设为 SMALL 则局部变量先使用工作寄存器 R2~R7 作暂存当存储器不够用时则会
以 data 型别的空间作暂存的个数超过 0x7f 时就会出现地址不够的现象
解决方法将以 data 型别定义的公共变量修改为 idata 型别的定义


(20).***WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_WRITE_GMVLX1_REG?D_GMVLX1
CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
CALLER2: ?C_C51STARTUP
***WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_SPI_SEND_WORD?D_SPI
CALLER1: ?PR?VSYNC_INTERRUPT?MAIN
CALLER2: ?C_C51STARTUP
***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 并会降低重入函数的执行速度。

(21). *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_COMPARE?TESTLCD

说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过 , 或者根本没有
调用它的语句。
这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简
单的调整就可以。不理它也没什么大不了的。
解决方法 : 去掉 COMPARE() 函数或利用条件编译 #if … ..#endif, 可保留该函数并不
编译。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

keilC51编译常见错误和警告说明 的相关文章

  • Docker与anaconda+jupyter

    Arch docker的安装 pacman 安装docker sudo pacman S docker docker启动 sudo systemctl start docker 设置开机启动docker sudo systemctl ena
  • Opencv目标追踪

    参考 xff1a https www pyimagesearch com 2018 07 30 opencv object tracking 引言 Opencv作为图像处理开源库包含了Object Tracking目标追踪的一些API xf
  • 使用cmake编译,组织C++项目

    文章目录 前言例一例二例三 前言 这篇博客是我对cmake用法的一些经验总结 还很浅显 如果有错误或者更好的方案 欢迎指正 使用方法统一为在build目录中执行 cmake make 我觉得养成外部编译是一个好习惯 例一 目录结构为 lzj
  • Spring Security Oauth2.0认证授权

    基本概念 认证 用户认证就是判断一个用户的身份是否合法的过程 xff0c 用户去访问系统资源时系统要求验证用户的身份信息 xff0c 身份合法方可继续访问 xff0c 不合法则拒绝访问 常见的用户身份认证方式有 用户名密码登录 xff0c
  • C语言实现HTTP的GET和POST请求

    HTTP请求和IP TCP 所谓的HTTP协议是基于IP TCP协议的 xff0c 所以要获取远端的html数据只要创建socket对象就足够了 xff1b HTTP是基于IP TCP加上了网络请求的固定格式 get 请求 include
  • 英伟达GPU安装教程

    英伟达GPU安装教程
  • 四种插头类型:XH、VH、SM、HY

    PH1 25mm HY2 0mm XH2 5 2 54mm xff08 这两个其实是一样的 xff09 VH3 96mm 插头分成三种类型 xff1a XH xff1b VH xff1b SM xff1b HY XH 4Y 是插头 xff1
  • STM32F1C8T6Flash读取音频和DAC播放

    文章目录 一 Flash简介1 Flash原理2 STM32F1中的Flash 二 Flash地址空间的数据读取1 题目要求2 CUbeMX工程建立3 Keil工程修改4 STlink调试说明5 调试运行 三 基于片内Flash的提示音播放
  • C语言中的头文件为什么不能定义变量

    1 前提 在实际项目中 xff0c 会遇到这样的情况 xff0c 在链接阶段 xff0c 会提示定义在头文件中的变量 xff0c 重定义 xff0c 然后将将头文件中的变量定义成static类型 xff0c 然后 xff0c 不报错误了 例
  • Ubuntu16.04安裝ROS

    此文章在前人的基礎上 xff0c 並把安裝遇到的問題寫出來 Ubuntu16 04安装ROS Kinetic详细过程 https blog csdn net weixin 43159148 article details 83375218
  • B-spline的理解与路径规划中的应用及C++代码的实现

    研究项目 xff0c 无人机的路径规划 xff0c 需要用到B样条 xff0c 所以在此写下B spline的结合C 43 43 代码的理解以及在项目中的应用 一 阶数p 阶数 61 所有权重中t的最高次幂 61 控制点数量 1 xff1b
  • Jetson TX2 各个模式

    Jetson TX2 工作模式及相应的CPU和GPU频率 xff1a 上电的时候 xff0c 默认最低功耗模式1 xff0c 风扇不转 1 直接运行home下的jetson clocks sh xff0c 开启最大频率 sudo jetso
  • 网络通信基础知识—网络通信的发展历程

    网络通信基础知识 网络通信的发展历程 xff08 1 xff09 单机阶段 xff08 2 xff09 局域网阶段 xff08 3 xff09 广域网internet阶段 xff08 很多个局域网之间通信 xff09 xff08 4 xff
  • win7下装ubuntu双系统 硬盘安装详细教程

    本文转载自http www linuxidc com Linux 2014 10 108430 htm https jingyan baidu com article e4d08ffdace06e0fd2f60d39 html 在自己安装过
  • ROS导航——配置机器人的导航功能(move_base包)

    中间部分是整个导航的核心部分 xff0c 由move base功能包提供 配置如下 xff1a lt launch gt lt node pkg 61 34 move base 34 type 61 34 move base 34 resp
  • 基于docker安装tensorflow

    最近在自学机器学习 xff0c 大热的Tensorflow自然不能错过 xff0c 所以首先解决安装问题 xff0c 为了不影响本地环境 xff0c 所以本文基于Docker来安装Tensorflow xff0c 我的环境是Ubuntu16
  • okHttpUtil工具类

    pom文件 lt dependency gt lt groupId gt com squareup okhttp3 lt groupId gt lt artifactId gt okhttp lt artifactId gt lt vers
  • 基于采样的RRT/RRT*/RRT_connect算法笔记及C++实现

    本文记录常见的基于采样的RRT算法及相关改进算法 xff08 RRT xff0c RRT connect xff09 的原理和代码实现效果 与上一章介绍A 算法的文章不同 xff0c 本文会先给出几种算法之间的效果对比 xff0c 先有个直
  • STM32F103ZE驱动PMW3901光流模块

    本文将会简单的介绍如何使用STM32F103ZE驱动PMW3901光流模块 xff0c 使用标准库 所用材料如下 一块 STM32F103最小系统板以及一个 PMW3901光流模块 通过查阅PMW3901的数据手册可以得知 xff0c 该芯
  • 计算两圆相交面积

    转自 xff1a 模板 求两圆相交面积 xff08 模板 xff09 两圆相交分如下集中情况 xff1a 相离 相切 相交 包含 设两圆圆心分别是O1和O2 xff0c 半径分别是r1和r2 xff0c 设d为两圆心距离 又因为两圆有大有小

随机推荐

  • 深蓝学院-移动机器人运动规划重点笔记

    移动机器人运动规划笔记 xff0c 转载自https blog csdn net wqwqqwqw1231 article details 107310965 感谢原作者的总结 xff01
  • TFmini Plus在Arduino上的开发例程(二)

    本例程以Arduino Uno板为例 xff0c 通过Arduino实现TFmini Plus相关指令的写入 xff0c 上行数据的读取 判断和测量数据的获取打印 xff0c 主要帮助客户快速熟悉我公司雷达 xff0c 减少产品的研发周期
  • Linux命令发送Http GET/POST请求

    Linux命令发送Http GET POST请求 Get请求 1 使用curl命令 xff1a curl span class token string 34 http www baidu com 34 span 如果这里的URL指向的是一
  • VSCode 常用设置项

    代码编辑工具VSCode 常用设置项 span class token punctuation span span class token comment VScode主题配置 span span class token string 34
  • 机器人运动控制-上位机通讯

    机器人 xff0c 无论是工业机器人还是服务机器人等多种类机器人 xff0c 都有自己的控制器 在他们的控制面板上 xff0c 我们可以通过简单的操作和程序指令 xff0c 让机器人自行运动 为了让机器人更加智能 xff0c 我们需要在机器
  • Imu误差模型、零偏、零偏稳定性

    原文链接 零偏 xff0c 零偏稳定性和零偏重复性 xff0c IMU误差模型 什么是零偏 xff08 Bias xff09 在陀螺静止时 xff0c 陀螺仪仍会 xff0c 以规定时间内测得的输出量平均值相应的等效输入角速率表示 xff0
  • 海思3516a实现OSD叠加水印

    文章目录 前言一 三个文件的编译二 海思SDK使用步骤1 创建叠加字符2 添加叠加区域到视频通道 总结 前言 两天的努力终于实现了 xff0c 激动 xff01 在网上查阅了各种资料 xff0c 只是有零散的信息 xff0c 海思3516a
  • 结合下图,说明UART的工作原理

    结合下图 xff0c 说明UART的工作原理 UART提供三个独立的异步串行I O口 xff0c 他们可以运行于中断模式或者DMA模式 xff0c 也就是说UART可以产生中断请求或者DMA请求 xff0c 以便在CPU和UART之间传输数
  • 深入理解计算机系统 -- 大端与小端字节序

    一 大端字节序 vs 小端字节序 字节序指一个多字节对象在内存中存储的方式 xff0c 小端字节序机器在存储多字节对象时采用低地址存低有效字节的策略 xff0c 大端则恰恰相反 字节序由CPU架构决定 xff0c 与操作系统无直接关系 像常
  • TCP连接建立

    TCP 一种面向来连接的 可靠的 基于字节流的传输层通信协议 面向连接 xff1a 数据在发送之前必须在两端建立连接 xff0c 方法就是我们熟知的三次握手连接 可靠传输 xff1a 通过多种机制来保证数据的正确传输 xff0c 比如序列号
  • UDP接收端收不到广播的消息问题排查

    网络调试助手可以互相发送 xff0c 而你的UDP广播代码却不行 你是广播 是不会被路由器转发的 但是在同一个交换机下 是可以收到广播的 还有就是 电脑的虚拟网卡会拦截广播操作 xff0c 因为你没有指定一个地址 xff0c 所以代码正确的
  • STM32带FIFO的DMA传输应用示例

    STM32系列芯片都内置DMA外设 xff0c 其中很多系列的DMA配备了FIFO 这里以STM32F429芯片及开发板为例 xff0c 演示一下带FIFO的DMA传输实现过程 大致情况是这样的 xff0c 我用TIMER1通道1的比较事件
  • 两种方式判断内存的大小端存储方式

    1 目的 xff1a 判断ubuntu操作系统的内存属于大端还是小端存储 2 源代码 两种方法判断大小端 xff08 处理器取值时的字节序 xff09 xff1a 1 字符指针 2 联合体 法1 if 1 include lt stdio
  • 字符串:求str1在str2中首次出现的位置。

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 基于ROS利用客户端和服务端实现C++节点和python节点间传送图像

    基于ROS利用客户端和服务端实现C 43 43 节点和python节点间传送图像 配置ROS下和python3通信以及配置python3可用的cv bridge 环境安装和使用 参考 xff1a https blog csdn net qq
  • iMaxB6充电介绍

    iMaxB6是一款多用途充电器 xff0c 能够为Li ion Li Poly Li Fe Ni Cd Ni MH和Pb类型电池充电 xff0c 支持6串以内的平衡充电 简要步骤 xff1a 1 连接正负电源 xff1b 2 连接平衡线 x
  • 基于stm32串口环形缓冲队列处理机制

    原文链接 xff1a 基于stm32串口环形缓冲队列处理机制 入门级 xff08 单字节 xff09 串口环形缓冲区实验 1 1 实验简介 最简单的串口数据处理机制是数据接收并原样回发的机制是 xff1a 成功接收到一个数 xff0c 触发
  • 源码安装nginx 1.23.1

    先看看仓库们 yum list nginx 已加载插件 xff1a fastestmirror langpacks Loading mirror speeds from cached hostfile base mirrors aliyun
  • Sublime Text运行C和C++程序

    原文链接 xff1a Sublime Text运行C和C 43 43 程序 Sublime Text 是一款当下非常流行的文本编辑器 xff0c 其功能强大 xff08 提供有众多的插件 xff09 界面简洁 还支持跨平台使用 xff08
  • keilC51编译常见错误和警告说明

    如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的解决办法加以归纳以期共享 xff01 1 L15 重复调用 WARNING L15 MULTIPLE CALL TO SEGMENT SEGMENT PR SPI REC