自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1405)
  • 问答 (2)
  • 收藏
  • 关注

转载 Git源码(Linus 版本)详解

源码中的所有的 C 文件都 #include "cache.h ",read-cache.c 则实现 cache.h 中声明的函数,初始化声明的变量,因此放在一起说。sha1_to_hex 是将 160 位二进制数转为 40 位十六进制数,Linus 强调了这是静态 buffer,共分配了50个字节的空间,要注意⚠️。write_sha1_buffer 是一个更常规的写文件操作,由 sha1 解析出要存放的文件位置,将 buf 写入文件,文件大小上限是 size。首先看下效果,有个感性印象,再看代码。

2023-12-07 18:05:29 174

转载 控制系统中的零极点有什么物理意义么?

因为一部分(当�=1��\omega =\frac{1}{RC} 的时候,恰好是一半)逃出C的魔掌的信号没有相位的延迟,而另外一部分不那么幸运的信号就被C戏弄了一番之后放了出来。嗯,不是90°,也不是0°,就是一半,45°呢!对于高频的信号,C的内力变强,传输函数包含s的那项远大于后面那个1,因而传输函数就变得无限趋近于零了。所以,若是想让我们的信号特别厉害,不受到这个讨厌的C的毒害,我们的信号应该变成什么样呢?那个时候,我们的信号就别含变化量,直接是个DC的值,那么只对变化量感兴趣的C就懒得理你了!

2023-12-02 17:45:27 298

转载 怎样分析错误帧?

CAN帧有多种格式,错误帧作为CAN帧中独特的一种,了解其作用,类型与产生原因,对于进行测试以及开发有很大的帮助,本文将对错误帧的相关基础知识以及后续的分析排查进行介绍。错误帧的基础知识。

2023-12-02 16:51:34 92

转载 来自示波器的升维打击:CAN、CAN-FD 错误帧 Bus-Off 排查 定位

CAN的BusOff源于错误帧的积累,而错误帧这个东西,是一个接收节点 认为数据有误 故意打断通信,好让发送节点感知到 并重发报文的设计。注意这里边有个“我觉得你有病”的认知陷阱,让CAN的诊断变得近似玄学。本文分享一种用从 CAN波形的幅度和脉宽信息 来精确定位错误帧来源的方法,可能是首创,哪里没讲明白欢迎反馈。我们先从基础的讲起,后边会用得到。CAN节点的电路一般如下图所示,MCU内置了用来将MCU的数据封装为CAN帧格式,同时它也负责CAN帧的校验和错误帧的处理。

2023-12-02 16:40:27 328

转载 CAN-bus协议规范-B部分(V2.0中文版)

控制器局域网CAN 为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN 的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。在汽车电子行业里,使用CAN 连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达1 Mbit/s。同时,可以将CAN 安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。这本技术规范的目的是为了在任何两个CAN 仪器之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。

2023-12-02 16:38:53 553

转载 一文读懂CAN通讯协议(三)

对于过载帧的帧结构我们可以这样理解:接收节点达到接收极限时,就会发出过载帧到总线上,显然,过载标志的6个连续显性位会屏蔽掉总线上其它节点的发送,也就是说这个时候的接收节点通过发送过载帧的方式来破坏其它节点的发送,这样在接收节点发送过载帧期间,其它节点就不能成功发送报文,于是就相当于把其它节点的发送推迟了,也就是说接收节点在其发送过载帧的这段时间得以“休息”。位速率(也叫做比特率)表示的是单位时间内,总线上传输的信息量,即每秒能够传输的二进制位的数量,R=1/T ,单位是bit per second。

2023-12-02 16:35:09 92

转载 一文读懂CAN通讯协议(二)

一文读懂CAN通讯协议+关注继续查看。

2023-12-02 16:33:17 81

转载 一文读懂CAN通讯协议(一)

CAN总线是一种用于在不同的ECU(电子控制单元)之间传输数据的线,CAN总线协议是一种ISO 国际标准化的串行通信协议,有 ISO-11898 和 ISO-11519两个系列。ISO-11898 定义了通信速率为 125 kbps ~1Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米,如图2。ISO11519 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米,如图2。

2023-12-02 16:32:01 43

转载 CAN总线学习笔记 | CAN基础知识介绍

CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。

2023-12-02 16:25:23 74

转载 CAN总线技术入门

简称CAN或者CAN bus) 是一种功能丰富的串行总线标准,最早的CAN控制芯片在奔驰车上应用并量产,因为支持多主机,多从机的优点,所以一辆车所有控制器,传感器,电子设备直接的通信只需要两条线就够了,大大优化了整车的布线。随着技术的不断发展,CAN发布了相应的标准,国际化标准组织,公布了CAN的不同标准;本文对CAN总结进行了简单的介绍,CAN通讯的特点可以总结如下;符合OSI开放式通信系统参考模型;两线式总线结构,电气信号为差分式;多主控制。

2023-12-02 16:22:08 28

转载 数据采集卡知识:AI、DI、AO、DO、PI、AD、DA,触发器,计数器/定时器是什么意思?

在每一种情况下,最重要的参数有可应用的数字线的数目、在这些通路上能接收和提供数字数据的速率、以及通路的驱动能力。:计数器/定时器在许多应用中具有很重要的作用,包括对数字事件产生次数的计数、数字脉冲计时,以及产生方波和脉冲。模拟量:按信号类型分,有电流型(4-20mA,0-20mA)、电压型(0-10V,0-5V,-10-10V)等,按精度分,有12bit,14bit,16bit等。开关量:按电压水平分,有220VAC、110VAC、24VDC,按隔离方式分,有继电器隔离和晶体管隔离。:开关量输出 可以是。

2023-11-30 14:54:21 4208

转载 如何模拟CAN/CANFD总线的负载

在测试中,模拟负载的报文,也有要求,不同的报文ID,优先级也不同,0x000优先级最高,0x7ff优先级最低,所以如果需要在高优先级下测试,就用0x000报文模拟负载,如果需要在低优先级下测试,就用ox7ff报文模拟负载,这样就可以模拟高负载高优先级、高负载低优先级、低负载高优先级、低负载低优先级这四种情况。我们模拟发送一条周期报文,计算1秒内它传输到总线上的bit数,然后再除以1秒内最大允许的bit数,不就得到总线的负载了嘛。这里我以每1ms发送4条相同的报文,那么负载也就是只发送一条报文的负载的4倍。

2023-11-29 17:42:57 266

转载 CAN总线多帧发送方式

要了解CAN总线多帧数据的发送,首先我们要知道我们发送的数据帧是属于拓展帧还是标准帧,再说多帧发送方式方法,网上资源有很多关于拓展帧和标准帧区别,以及多帧发送的方式方法,为了我方便查阅,我还是打算自己做个笔记,方便我以后查阅。首先了解下CAN报文的报文结构:1. 拓展帧与标准帧CAN接口兼容规范它可以接收和发送11位标识符的标准帧,也可以接收和发送29位标识符的扩展帧。一、扩展帧的仲裁域有29位,可以出现2^29中报文,且在数据链路上是有间隙的(对操作者透明),帧ID的范围是0000 0000-1FFF F

2023-11-29 17:40:56 795

转载 从一道面试题看 TCP 的吞吐极限

原始报文的 timestamp 时间序和 seq 字节序共同消除了保序歧义,另一面,为保证可靠传输,丢包重传还需要一个报文( whatever 原始报文 or 重传报文)实际发送的时间序列号,用来消除原始报文和重传报文的歧义,这个虽然不是流控必须的,但对拥塞控制意义重大,不得不察,但这方面我强调过太多,不再啰嗦。如果候选人提到 TCP 序列号空间 4GB,香港到旧金山往返 200ms+,320Gbps 管道容量 8GB+,TCP 最大窗口受限,无法这个管道,至于后面说与不说,都算通过了。

2023-11-29 17:33:30 35

转载 「ZLG开发者社区」CANFD每秒最多可以发送多少帧报文?

我们知道CANFD比CAN拥有更长的数据长度(最长64字节),更高的波特率(8Mbps甚至更高)。那么波特率更高,数据更长的CANFD,一秒钟最高可以发送多少帧CANFD报文呢?我们知道CANFD比CAN拥有更长的数据长度(最长64字节),更高的波特率(8Mbps甚至更高)。那么波特率更高,数据更长的CANFD,一秒钟最高可以发送多少帧CANFD报文呢?要想知道问题的答案,那么我们就要知道一帧CANFD报文由多少个位组成,再由具体波特率算出报文时间,最后就可以得出每秒能发送的帧数了。

2023-11-29 17:31:52 121

转载 如何计算CAN总线的负载率以及每帧耗时和每秒最多传输帧数

上,不同的波特率下,每秒钟最多能够传输多少帧数据,或者说,每帧数据需要耗时多少时间。】,有需要的可以自行下载。当然,考虑到下载需要积分(这里要澄清一下,本来我上传时是选择不需要积分下载的,但是CSDN会自动调整,这不是我能左右的),如果积分不多,也可以直接留言邮箱给我,我单独发给你。首先我们要确认几个输入参数,包括CAN总线的波特率,要传输的帧类型和帧格式,然后根据CAN协议规范,计算出该帧的bit数。我们用数据帧来做示例,详见图1。实际的表格,我上传到CSDN了【今天遇到一个问题,需要计算一下。

2023-11-29 17:30:44 329

转载 CAN总线要点总结(CAN2.0A/B)

工作也有几年了,在项目中也接触过几次CAN总线,但总是止步于会用即可,对于很多细节上的东西有时还是稀里糊涂的状态,这几天正好有点时间,因此整理了这篇文章来对自己的CAN总线知识体系查漏补缺。推荐内容。

2023-11-29 16:56:02 242

转载 CAN总线中节点仲裁失败后会怎样?

CAN总线高负载率发送测试时,如果出现大量错误报文、被测设备报文周期出现异常、甚至总线锁死等,有很大可能是CAN网络上的仲裁发生了异常。随着工业技术不断发展,CAN总线已广泛应用于,车辆、航空、医疗等高安全要求领域。高频发送CAN报文也成为安全测试的必要组成部分。在信号正常的网络上高负载率发送测试时,总线上偶然会出现许多意想不到的问题,例如出现大量错误报文、被测设备报文周期出现异常、甚至总线锁死等。这个时候我们则需要考虑一下CAN网络上的仲裁是否发生了异常。首先我们来了解一下CAN总线仲裁机制。

2023-11-13 18:35:56 160

转载 STM32之CAN---发送管理分析

STM32共有三个CAN发送邮箱,在检测到总线空闲时交发送,但需要注意的是,有可能会发送失败,有可能因为仲裁失败从而导致失败,也有可能是其它错误,原则上bxCAN将自动重发,但bxCAN也可以配置不自动重发。与接收FIFO的邮箱类似,发送邮箱也是由四个寄存器组成:发送邮箱标识符寄存器(CAN_TIxR x=0..2),发送邮箱长度和时间戳寄存器(CAN_TDTxR x=0..2),发送邮箱低字节数据寄存器(CAN_TDLxR x=0..2),发送邮箱高字节寄存器(CAN_TDHxR x=0..2)。

2023-11-13 17:59:45 1493

转载 CAN总线技术 | CAN脱颖而出的“秘密”

基于以上的优势,CAN总线被广泛应用于工业自动化,机器人通讯,新能源汽车等领域。我从事了7年工业自动化,3年工业AGV的研发,都能看到CAN总线的身影。如果想在这些领域从事研发的工作,必须掌握CAN总线的物理层与数据链路层的知识。此外,广州虹科录制的CAN总线技术课程非常不错,建议同学们学习一下。比如,为什么要学习物理层?

2023-11-13 17:57:59 67

转载 CAN总线如何保证优先级低的数据有机会发送出去?

这段时间因为项目需要接触了CAN通讯相关的知识点,和朋友讨论过程中对方问到怎么判断ID的优先级,印象中CAN通讯是有个通讯优先级仲裁机制的,但是一时间答不上来,查阅网友相关文章做了个总结,欢迎支持不对的地方。。。进入内容前须知:低电平(0)为显性电平,高电平(1)为。

2023-11-13 16:54:56 143

转载 干货分享丨浅谈CAN总线的仲裁机制

系统中多个设备或模块可能同时申请对总线的使用权,为避免产生总线冲突,需由总线仲裁机构合理地控制和管理系统中需要占用总线的申请者,在多个申请者同时提出总线请求时,以一定的优先算法仲裁哪个应获得对总线的使用权。只有获得了总线控制权的设备,才能开始传送数据。

2023-11-13 16:50:59 511

转载 CAN-bus应用笔记:节点篇

在使用浪涌抑制器的场合,比如在图4的节点1和节点2之间增加SP00S12信号浪涌抑制器,其直流等效电阻为9.5Ω,可以将其等效为总线的有效电阻,当节点1收到的电压过低时可通过减小总线有效电阻,提高节点1处的终端电阻来弥补浪涌抑制器带来的损耗。CAN接口负载即为CANH、CANL之间的有效电阻值大小,该电阻会影响发送节点输出的差分电压的幅值,组网后网络中各个节点的负载电阻RL接近,如图1我们测试了CTM1051M小体积CAN隔离模块在不同负载下的输出差分电压幅值。图2 不同供电电压下的差分电压。

2023-11-13 16:47:29 93

转载 22条高手总结的CAN总线入门知识!(必看)

正常情况下,逻辑高电平为1,逻辑低电平为0,但是CAN总线却是逻辑高电平为0,称为显性,逻辑低电平为1,称为隐性。如果多个节点同时访问总线,CAN使用非破坏式、逐位仲裁的方式决定哪个节点使用总线:各发送节点从仲裁域(标识符和RTR域)的第1位开始进行仲裁,连续输出显性电平(0)最多的节点可以继续发送。标识符数值为0的CAN报文,具有最高优先级,因为它输出的显性电平最多。发送节点的报文帧中,ACK两位是隐性位,当接收器正确地接收到有效的报文,接收器会在应答位期间向发送节点发送一个显性位,表示应答。

2023-11-13 16:44:18 2012

转载 can总线的负载率为什么要控制在30%以内?

可以类比景区的负载率,每个景区都有一个负荷上限,比如说10000人,如果此时景区内只有1000人,那么这时的景区负载率是10%。景区负载率是一个在空间上定义的概念,它说明了在空间上资源的被使用情况,而总线负载率则不然,其是在时间上定义的一个概念,说明了在时间上资源被使用的情况。也不同,0x000优先级最高,0x7ff优先级最低,所以如果需要在高优先级下测试,就用0x000报文模拟负载,如果需要在低优先级下测试,就用ox7ff报文模拟负载,这样就可以模拟高负载高优先级、高负载低优先级、低负载高优先级、

2023-11-13 16:42:29 240

转载 菲亚特利用时间分析软件Symtavision使CAN总线负载率达到70%

CAN总线负载率只是一个宏观的参数,已经不能充分的评估总线的有效性和可扩展性。造成这样的原因是一方面以前电子系统都比较简单和总线报文数量少,单纯的限制总线负载率就可以满足报文响应时间的要求,但当参与CAN总线通信的ECU数量或总线报文数量增多了以后,就不能保证较低的总线负载率满足报文响应时间的要求。随着汽车电子系统中ECU数量的增加,需要通过CAN总线通信的数据量也急剧增加,根据以往的工程经验,总线负载率超过30%就会造成报文延时的概率增大,不同的总线负载率引起报文延时的概率有多大,能够造成的延时是多少,

2023-11-13 16:39:07 69

转载 CANoe中的英特尔(Inter)格式与摩托罗拉(Motorola)格式

对于数据占用一个字节(Byte)或者不足一个字节(Byte)的,其实怎么传输影响不大,但是对于数据占用多个字节(Byte)的情况,这两种方式就需要注意了。由于Intel格式与Motorola格式之间的转换很常见,所以在CAPL内置的Byte Swapping函数,我们下面进行介绍。这两种格式对应的就是我们常说的大端模式(Big-endian)和小端模式(Little-endian).可以很明显看到, 大端模式与我们直观非常相近,因为我们书写习惯是将高位写在前面,低位写在后面。

2023-11-11 18:17:26 518

转载 当今乱世,谁能夺得C++标准网络库宝座?

也许未来C++标准网络库的宝座还是会一直空下去,但我真诚祈祷能有一个网络库能脱颖而出,结束这纷争的乱世。然而,当前确实没有一款网络库能够有资格当选标准网络库,C++委员会也是秉承宁缺毋滥的精神,让标准网络库这个宝座一直空着。答案很羞于出口,不是不想提供,不能提供,而是没有一个库能当选标准网络库。C++标准库最大的痛是什么,毋庸置疑,那就是缺少网路库,犹如三军之中缺少主帅。一般优秀的高性能服务,完善C++的网络生态,延续C++的万世繁荣。是一个支持多种协议的客户端库,熟悉命令行的同学一定不陌生,

2023-09-07 17:53:54 292

转载 获取Android设备唯一标识码

有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码。虽然Android系统中提供了这样设备识别码,但是由于Android系统版本、厂商定制系统中的Bug等限制,稳定性和唯一性并不理想。而通过其他硬件信息标识也因为系统版本、手机硬件等限制存在不同程度的问题。下面收集了一些“有能力”或“有一定能力”作为设备标识的串码。

2023-09-03 23:34:50 2301

转载 【sys/power】freeze、standby、mem、disk四个电源状态

此状态下计算机将所有活动的状态保存到磁盘中,然后处于关机状态,此模式下是不耗电的,而相比之前的模式,休眠和唤醒的速度都比较慢。恢复时计算机从内存读出数据,回到挂起前的状态,恢复速度较快。(Suspend-To-Idle), "shallow(浅睡)" (Power-On Suspend) and "deep" (Suspend-To-RAM).Suspend-To-Idle(idle) and hibernation(冬眠) (Suspend-To-Disk), respectively(分别).

2023-09-03 21:06:42 639

转载 Linux的电源管理-休眠与唤醒

上面介绍的是系统休眠或唤醒模式下的电源管理, 对于不同平台,都需要按照DataSheet的说明选择休眠模式,修改u-boot和kernel.那在正常运行模式下,能否单独对设备进行电源管理呢,请期待下一节更新Linux电源管理-Runtime PMLinux的电源管理-休眠与唤醒_/sys/power/state_TommyMusk的博客-CSDN博客。

2023-09-03 21:05:35 1113

转载 Android睡眠唤醒机制--Kernel态

如果没有, 这个函数就会把early_suspend_handlers中注册的一系列的回调(通过register_early_suspend注册)都调用一次,然后同步文件系统, 然后放弃掉main_wake_lock, 这个wake lock是一个没有超时的锁,如果这个锁不释放,那么系统就无法进入休眠。• 在wake_lock() 中,对一个wake lock加锁以后,会再次检查一下有没有锁, 我想这里的检查是没有必要的, 更好的方法是使加锁的这个操作原子化,而不是繁冗的检查,而且这样的检查也有可能漏掉。

2023-09-03 21:02:28 381

转载 Android新增LED设备--从底层到上层理解安卓架构

注意com_android_server_TestLedService文件的命令方法,com_android_server表示的是包名,表示硬件服务TestLedService在frameworks/base/services/java目录下的com/android/server目录下, 此目录下的TestLedService的类是可以直接调用jni的内容的。1)不是所有的硬件设备都有标准的Linux内核接口,通过HAL层封装了一套固定的向上接口,可以使得上层的开发逻辑更清晰简单。

2023-09-03 20:59:32 298

转载 五种将c++类的成员函数用作回调函数的方法——史上最全、最简!!!

这个不是一个好的方法影响了我们cpp的封装特性,也和我们这篇博客的标题不符。但是我们可以看到,我们的调用函数成功调用了回调函数,并且可以访问我们的类成员变量,但是他是通过参数传递来访问我们类的成员变量的。我们知道,之所以能用作回调函数,他的前提是该函数的地址是确定的,因为函数指针传递的也就是函数的地址嘛,那么类的成员函数的地址只有在实例化了类的对象后,对象的成员函数的地址才确定了,所以我们不能直接用类的成员函数来做函数指针。但是静态成员函数。

2023-08-28 17:33:55 1107 1

转载 linux shell 下各种进制数据转换

printf 命令代码后来我看了,%c, 109, 后面的109是按字符串对待的,只会打印第一个字符'1',这是解释的问题了.作为一个c++程序员,最后我还是选择了与c类似的awk 中的printf 来进行数制转换。这两个就不举例了,其中awk 是基础工具,默认都有安装的, 是一个优秀的文本处理工具。赋值语句 let 或(()) 不能直接用=号,直接用等号是字符串照印。郑重推荐bc 计算器, 它支持交互模式, 可以使得转换根据简单,方便。16 进制输入时 a-f 必需用大写, 小写会被视为变量,会报错。

2023-08-25 10:53:52 443

转载 C语言变参数函数详解

在C语言中,我们不管是使用标准库函数还是使用自定义的函数,我们都需要注意函数参数的匹配,参数的匹配包括参数类型的匹配和参数个数的匹配,参数不匹配就会导致调用函数错误。

2023-08-10 20:17:56 337

转载 C语言printf()、sprintf()、vsprintf()的区别与联系

va_start(ap,fmt) 就找出这个函数在栈中排列的一堆参数的起始地址,然后直接浏览栈中参数,并用 vsprintf() 实现格式化字符串的读取,最后 vs_end(ap) 释放ap,就像释放指针一样。通俗地说就是因为 vsprintf() 比 sprintf() 更加接近底层(栈),因此能实现这个目的,也是因此能用 vsprintf() 来实现 sprintf()。所以类似这种封装用 sprintf() 是无法实现的,使用 sprintf() 只能原始的为它输入所有的参数而不能以传参的方式给它。

2023-08-10 20:16:18 482

转载 可变参数函数详解

可变参数函数又称参数个数可变函数(本文也简称变参函数),即函数参数数目可变。其中,参数可分为两部分:数目确定的固定参数和数目可变的可选参数。函数至少需要一个固定参数,其声明与普通函数参数相同;可选参数由于数目不定(0个或以上),声明时用"…"表示(“…”用作参数占位符)。固定参数和可选参数共同构成可变参数函数的参数列表。由于参数数目不定,使用可变参数函数通常能缩短编码,灵活性和易用性较高。

2023-08-10 20:13:41 872 1

转载 实测STM32F4中printf的效率问题

于是以前都认为printf函数的瓶颈是在fputc这里,是因为发送一个字节所占的时间太长,才导致printf效率慢。也就是说,一直认为如果串口的波特率设置成115200的话,printf至少也是能达到115200的波特率的。而这几天在学习ucOS,于是想到,如果printf的瓶颈是在等在串口发送完成的话,那么我在等待串口发送完成中断的时候是不是挂起一个信号量,然后就可以去做点别的事情了呢?作为库函数,它不应该是精简,效率的典范吗?而115200波特率的串口在发送两个Byte之间的时间是:86.5us。

2023-08-10 20:10:47 465

转载 C语言可变参数详解

在C语言编程中有时会遇到一些参数可变的函数,例如,其函数原型为:就拿 printf 来说吧,它除了有一个参数 format 固定以外,后面的参数其个数和类型都是可变的,用三个点“…”作为参数占位符。//函数定义一个结束标记(-1),调用时通过最后一个参数传递该标记,以结束变参的遍历打印。//最后一个参数作为变参结束符(-1),用于循环获取变参内容while(val!printf("第 %d 个参数: %d\n", idx, val);

2023-08-10 20:02:06 339

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除