
物联网
文章平均质量分 88
宁静致远2021
天道酬勤,持之以恒。
发上等愿,结中等缘,享下等福;
择高处立,寻平处住,向宽处行。
展开
-
无法回避的字节对齐问题,从八个方向深入探讨(变量对齐,栈对齐,DMA对齐,结构体成对齐
回答:没有__packed的会出现字对齐等也就是,char型的有可能是占用4个字节的长度的内存空间有__packed 的就不会,就肯定是1个字节的内存空间,是gcc编译器的关键字。(不止vc下面32位的系统里面的内存数据的存取是32位的,处理的时候都是4个字节为单位,通常也就是int的长度。4.若自定义的malloc函数本身没有对分配的内存实现4字节或以上的对齐操作,分配出来的不对齐的内存,编译器是不知道的,所以很可能会产生问题。字节对齐的含义:4字节对齐的含义就是变量地址对4求余数为0;原创 2025-05-07 09:38:42 · 643 阅读 · 0 评论 -
【VS Code 插件】SQLite 可视化插件
(3) 在搜索结果中选择 SQLite:打开数据库(open database)。将选择你的数据库文件:*.db。项目经常用到SQLite这个轻量型数据库,于是乎,就想着找一个可视化工具,但是我有时候只是想方便预览数据。用习惯VS Code的小伙伴们都知道,插件的帮助之下,开发效率更高。我的表名称为events,全查询如下,sql的语句知识捡一下。但这时候,你会发现,啥变化都没有,别急,继续。表,又不想安装额外的程序,那么这款插件很适合你。输入查询语句后,右键Run Query执行查询。原创 2025-03-09 20:45:18 · 1485 阅读 · 0 评论 -
温湿度传感器SHT40(第四代)&SHT20(第二代)
然而,SHT20仍因其成熟的性能和相对的成本优势,在很多应用中仍有广泛的使用。•SHT40:相比SHT20,SHT40在精度和稳定性上有进一步提升,温度精度可达±0.2°C(典型值),湿度精度可达±1.8%RH(典型值),并且具有更好的长期稳定性。•SHT40:相对于SHT20,增加了更多的内部自校准功能,能够更好地补偿传感器老化和温度漂移,从而在整个产品生命周期内保持高精度。•SHT20:具有高精度的温湿度测量能力,温度精度±0.3°C(典型值),湿度精度±2%RH(典型值),并且具有良好的长期稳定性。原创 2025-02-26 20:43:17 · 1734 阅读 · 0 评论 -
嵌入式linux 内核启动时动态加载驱动模块的方法
手头有个项目底层基本结束,所有的驱动都已经写好,并且调试通过了,但是考虑到每次使用时都手动加载驱动,岂不是很“蠢”,能自动的事怎么能手动呢?于是开始折腾“linux开机自动加载驱动”,百度,谷歌了半天,怎么感觉说的都不清楚:为毛他们说的文件、文件夹我都没有?难道我用的是假的文件系统,假的内核?唯一靠谱的就是:在 /etc/rcx.d 文件夹下添加shell脚本,再让脚本去 insmod或modeprob 自己的驱动。原创 2025-01-10 20:03:46 · 796 阅读 · 0 评论 -
千兆宽带和全屋WiFi覆盖
路由器能覆盖的面积,根据房子的格局不同而不同。市面上的路由器信号都差不多(那些看上去很牛逼,很多天线的路由器,信号也好不到哪里去!),一个路由器想要覆盖整个房子,很难!于是乎,我有了做全屋wifi的想法。原创 2025-01-06 14:43:28 · 1845 阅读 · 0 评论 -
rk3588(七):GPIO简介及使用
原文链接:https://blog.csdn.net/qq_32636415/article/details/134918848在 RK3588 中,有只支持 1.8V,和支持 1.8V/3.3V 两种电压可配置,共两种类型的 GPIO。Core-3588J 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分,常用以下公式计算引脚:GPIO pin脚计算公式:pin = bank * 32 + numberGPIO 小组编号计原创 2024-12-02 14:19:11 · 2219 阅读 · 0 评论 -
Ubuntu20.04下安装VSCode(配置C/C++开发环境)和设备树插件用于嵌入式开发
vscode-icons , VSCode 图标插件,主要是资源管理器下各个文件夹的图标。用这个命令安装deb文件:sudo dpkg -i <package-name.deb>进入VSCode官网Visual Studio Code,下载deb版本。在左侧扩展商店中查找 ”chinese“选第一个安装,安装好后重启软件。在左侧扩展商店中查找 ”DeviceTree“安装,,设备树语法插件。在左侧扩展商店中查找 ”C/C++“选第一个安装。在左侧扩展商店中查找 ”Json“选第一个安装。原创 2024-11-28 17:52:12 · 881 阅读 · 0 评论 -
【迅为电子】RK3568驱动指南|第十七篇 串口-第199章 串口子系统框架
在串口通信协议和串口通信接口类型的基础上,串口子系统框架为串口设备的驱动和管理提供了完整的架构。rx”,“tx”打开tx dma、“rx”打开rx dma、“!pinctrl-names 和 pinctrl-0:用于串口设备的管脚控制,以配置和管理串口设备的引脚设置。串口子系统框架的层级设计将串口设备的功能分解为不同的层次,实现了功能的模块化和抽象化,方便开发者进行串口设备的驱动开发和维护。reg:指定串口设备的地址和大小,0xfe6d0000 是串口设备的基地址,0x100 表示地址空间的大小。原创 2024-11-27 21:15:48 · 808 阅读 · 0 评论 -
瑞芯微RK3568驱动配置之十串口
瑞芯微RK3568驱动配置之十串口Chaptet1 瑞芯微RK3568驱动配置之十串口Chapter2 创龙瑞芯微RK3568设备树1(修改设备树GPIO和串口)前言基础题外话内容1.GPIO2.串口不同总结后续Chapter3 QT串口大量数据动态实时显示(三)========“customplot绘图步骤”前言第一部分: 串口接收大量数据动态显示的难点串口大量数据QT接收时问题的原因:选择customplot绘图的原因:Chapter4 创龙瑞芯微RK3568参数修改(调试口波特率和rootfs原创 2024-11-27 20:55:03 · 1658 阅读 · 0 评论 -
linux下RX8010SJ实时时钟芯片(RTC)的读写
由于项目的需要在ARM嵌入式板子上挂上了一颗EPSON的RX8010实时时钟芯片,为数据采集提供可靠的时间。RX8010内置了具有温补的晶振,可以简化设计,而且也不贵,所以就选择了它。其中rx8010为RX8010驱动注册的名称,不能为其它字符,而0x32则为该芯片在I2C总线上的通信地址。上面的命令将合成的字符串写入new_device,然后内核就会查找到加载的RX8010驱动,将地址传入,再由驱动程序与实际芯片进行通信,如果通信正常则完成设备的注册,生成设备文件/dev/rtc1。原创 2024-11-14 10:24:50 · 1252 阅读 · 0 评论 -
【全志T113】RTC时钟芯片PCF8563移植驱动流程记录
硬件部门交付的主板上外挂了一颗RTC时钟芯片PCF8563,我需要实现pcf8563的驱动、外部rtc同步到系统、开机自动同步时间等工作。这类时钟芯片大多数是通过i2c通讯和soc进行连接,而且linux内核自带了pcf8563的驱动,如果顺利的话,开发起来是非常顺利的。但是由于不熟悉流程,所以踩了很多坑,写下来作为记录供后人参考。原创 2024-11-14 09:16:25 · 2049 阅读 · 0 评论 -
QtRO(Qt Remote Objects)分布式对象远程通信
Qt Remote Objects(QRO)是Qt提供的一种用于实现远程对象通信的机制。QtRO支持两种类型的通信:RPC(远程过程调用)和LPC(本地进程通信)。RPC(远程过程调用)包括以下几种类型:基于HTTP协议的RPC:例如Dubbo、Thrift等。基于二进制协议的RPC:例如GRPC、Hetty等。基于TCP协议的RPC:例如RMI、Remoting等。LPC包括基于共享内存的通信和基于消息传递的通信。总的来说,QtRO类似于平时的socket通信、串口通信、信号槽通信。原创 2024-11-05 19:40:55 · 778 阅读 · 0 评论 -
嵌入式Linux开发板配置静态IP
修改interfaces配置文件,普通用户interfaces文件权限只可读,首先切换到root权限。文件里添加如下信息,对应于以太网接口配置的网口信息,键盘按Esc,输入:wq 保存退出即可。原创 2024-10-15 11:46:19 · 376 阅读 · 0 评论 -
嵌入式C语言之结构体封装函数
由于函数指针的定义和使用都在结构体内部,因此修改或调整代码时,只需要修改结构体中的函数指针定义或调用方式,而不需要修改其他部分的代码,从而使得代码更加健壮、易于维护和修改。这种方法可以将代码的复杂性分解到不同的模块中,降低了代码的耦合性,提高了代码的可读性和可维护性。更好的隐藏实现细节:结构体封装函数使得函数的实现细节被封装在结构体内部,只有结构体暴露给外部的函数指针,实现了良好的封装和信息隐藏。值得注意的是,在实际应用中,我们需要根据实际情况修改函数的实现,以及结构体中的成员变量和函数指针的数量和类型。原创 2024-10-14 15:30:29 · 1042 阅读 · 0 评论 -
linux就该这么学【进程间通信】
原文链接:https://blog.csdn.net/m0_53421868/article/details/123194775原创 2024-06-29 11:00:36 · 192 阅读 · 0 评论 -
QT语言国际化 动态修改
2、对于需要翻译的文本,需要使用QObject::tr(“1111”).或QApplication::translate(“Widget”, “\346\227\213”, 0)包含,这要Qt的语言家功能才会将需要翻译的文本找到保存到ts文件中。5、生成的qm文件是在项目文件家中,而不是exe文件所在文件夹。4、工程的菜单: 工具 -> 外部 -> 语言专家 ->更新翻译(lupdate) 生成ts文件。6、工程的菜单: 工具 -> 外部 -> 语言专家 ->发布翻译(Release) 生成qm文件。原创 2024-06-03 09:32:00 · 946 阅读 · 0 评论 -
【Qt底层之内存管理机制】Qt 对象 父子关系、运行时机制与高效编程技巧
也就是说,在析构父对象–w时,会自动调用子对象btn的析构函数。当父对象析构的时候,这个子对象列表中的所有对象都会被析构,当析构子对象的时候,会自动从父对象的子对象列表中删除。按照这种形式排列就会形成一个对象树的结构,最上层是父对象,下面是子对象,在再下面是孙子对象,以此类推。值得注意的是,如果在构造时设置父对象为 NULL,那么当前实例不会有父对象存在,Qt 也不会自动析构该实例,除非实例超出作用域导致析构函数被调用,或者用户在恰当时机使用 delete 操作符或者使用 deleteLater 方法。原创 2024-05-30 21:15:30 · 1025 阅读 · 0 评论 -
win10双网卡如何同时上内网和外网?
右键点击“以太网”,在打开的菜单项中,选择“属性”,点击选中“Internet协议版本4” - 点击“属性” - “高级” - 接口跃点数设置为“1”,各个窗口点击“确定”经常使用有线网访问外网,可以将有线网网络跃点数设置为“1”。如果经常使用无线网,那么就将无线网的跃点数设置为“1”。即哪个网络常用就设置哪个网络跃点数。原文链接:https://www.jb51.net/os/win10/806585.html。原创 2024-05-29 17:56:06 · 2587 阅读 · 0 评论 -
【选型】效率高达95%,国产电源芯片SCT2650 可PIN TO PIN 替换TPS54560
随着网络信息技术的快速发展,5G基站建设规模不断扩大,某客户在研发一个5G大功率基站的项目,使用到了一款TI的电源芯片TPS54560,目前因为TI的交期比较紧张,急需要一款参数合适的国产电源芯片去替代它。2、虽然说SCT2650的静态电流没有TPS54560小,但是SCT2650的内置MOS管的导通电阻要比TPS54560小,说明SCT2650的功耗可以做的比TPS54560小,这大大地延长了芯片的使用寿命;最后,SCT2650除了具有更高的效率之外,芯洲科技还可以提供及时的技术服务和稳定的现货支持。原创 2024-05-16 20:34:30 · 2647 阅读 · 0 评论 -
驱动一个mipi接口的屏幕
目前的改写都是需要自己一一改写,本文借助Chatgpt写了一个自动转换的代码,实际上是一个文本处理程序,为了节省时间,仅实现多余三个参数的情况,1个参数和2个参数还有延时的情况需要自己添加。原理图:这里主要是R4电阻的确定,根据MP3302数据手册和屏幕的数据手册得到屏幕背光led的额定电流,用MP3302DJ这颗IC做恒流驱动。PCB:唯一注意的地方就是mipi需要做100Ω的差分等长布线,预留测时序的接口P1。通常厂家给的格式如下:(伪代码)电路设计、确定时序、上电验证。原创 2024-05-16 20:09:55 · 1279 阅读 · 0 评论 -
RK3568 解决MIPI屏幕开机只显示uboot logo的问题
之前写过一篇文章介绍了RK3568驱动MIPI屏幕的方法,这次产品迭代,硬件改版,选型的新的屏幕了。所以再次开启调试屏幕的过程。本以为会和上次一样会轻车熟路,事情总是事与愿违,同样的路,遇到新的坑。屏是嵌入式驱动开发中常见的设备,一般的带屏项目中最开始要调试的,简单记录一下自己在项目开发中的经验过程。所用平台是rockchip的rk3568,android11。原创 2024-05-11 13:41:55 · 1512 阅读 · 0 评论 -
RS232,RS485接口模块PCB布局布线EMC浪涌防护设计规范
RS232接口多用于计算机与设备之间的通讯,用于数据监控及调试。在应用的过程中通讯电缆容易耦合外部的干扰对信号传输造成一定的影响,单板内部的干扰也可能通过电缆形成对外辐射。本方案从EMC原理上,进行了相关的抑制干扰和抗敏感度的设计,从设计层次解决EMC问题。原创 2024-05-10 17:15:51 · 3517 阅读 · 0 评论 -
自动方向控制RS485芯片
注意:这一系列手册是一起的,MAX13410E MAX13413E MAX 13414E MAX13415E都是不带自动换向功能的,并且引脚功能和传统MAX13487还不一样。市场上进口芯片支持 自动换向的RS485芯片 只有4款芯片,分别是ADI和TI家的,没有其它进口厂家选择。另外 找到一些国产 自动换向的RS485芯片(后半部分),这些国产芯片 个人没用过,不知晓芯片质量,各位慎重选用。原创 2024-05-09 14:02:23 · 1682 阅读 · 0 评论 -
C语言 sizeof和strlen的区别
我们知道字符串是以 ‘\0’ 为结束标志的,所以char str1[ ] = “hello” 等效于char str2[ ] = {‘h’ , ‘e’ , ‘l’ , ‘l’ , ‘o’ , ‘\0’}。strlen函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\0’停止。2、 strlen 测量的是字符串的实际长度,以’\0’ 结束,返回结果不包括’\0’。类型-该类型所占的空间的大小;原创 2024-04-20 20:18:27 · 1087 阅读 · 0 评论 -
C语言 memcpy内存块拷贝函数
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。s指向要填充的内存块。c是要被设置的值。n是要被设置该值的字符数。返回类型是一个指向存储区s的指针。需要说明的几个地方。原创 2024-04-19 19:37:34 · 1260 阅读 · 0 评论 -
STM32F407单片机通用24CXXX读写程序(KEIL),兼容24C系列存储器(24C01到24C512),支持存储器任意地址跨页连续读写多个页
通俗的讲就是128Byte就占用了128个地址,一个7bit的数据范围为(0-127)刚好128,所以128Byte的字节地址需要一个7bit的数据来表示。AT24C01,AT24C02,AT24C04,AT24C08,AT24C16,AT24C32,AT24C64,AT24C128,AT24C256…比如AT24C256有512页每页64个字节,15bit的地址数据对其寻址,低6bit(D5-D0)为页内字节单元地址,高9bit(D14-D6)为页地址。四、AT24CXXX页地址与页内单元地址。原创 2024-04-11 15:22:13 · 1409 阅读 · 0 评论 -
关于MCU产品开发参数存储的几种方案
参数的初始化方法,首先读取EEPROM的0位置处的数据,判断是否为0x55AA合法标志,若不是0x55AA,则说明参数区为首次使用,需要进行初始化默认参数填充,于是将DefaultValues所指的默认值填入EEPROM中,并设置0x55AA标志,以后每次上电便会检测到参数的合法性。别急,有另类的方式可以达到这种功能,在编译时让编译器为你检查,而且准确性 100%(当然,这个添加新参数时你还得简单根据新增的参数大小减少预留的大小,这个是必须要的)原创 2024-04-11 11:56:59 · 2298 阅读 · 0 评论 -
STM32F4 IAP跳转APP问题及STM32基于Ymodem协议IAP升级笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-04-10 10:51:05 · 1983 阅读 · 0 评论 -
关于STM32单片机延时微妙(delay_us)函数-hal库
自己外部晶振为8M,查单片机对映的是时钟框图如下,可以看出时钟从外部HSE_OSC来的为8M,经过以一个选择器后,进入PLL锁相环,之后去了AHB PRESC,最后经过一个/8的分频后就是滴答定时器的频率。近段时间调试一个STM32带多个DS18B20传感器,发现这个传感器对时序要求特别高,而使用的固件是HAL库版的,里面没有专门微米级别的延时函数,通不过不断尝试,调通了延时函数,使DS18B20成功跑起来了。写此篇文章来记录本次调试。,所以放心的使用 delay_us 来实现 delay_ms,不。原创 2024-04-08 15:17:37 · 10650 阅读 · 0 评论 -
STM32的NVIC中断以及抢占优先级和响应优先级
抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达, 则先处理响应优先级高的中断, 响应属性由NVIC_IRQChannelSubPriority 参数配置。第0组 0 0 0 0。原创 2024-04-08 14:02:16 · 1125 阅读 · 0 评论 -
基于STM32CubeMX移植freeModbus RTU(从站)-避坑篇
ModbusRTU是通过定时器和串口配合来实现Modbus通信的,所以定时器是决定有没有超时的一大关键问题,由串口设置部分可知,定时器设置是要配合串口设置的波特率食用比较香,所以根据我使用的115200波特率可以得到我定时器设置。13.打开工程,引入STM32MB内的所有头文件,并新建名为MB和MB_Port的组,MB内添加STM32MB文件夹下modbus文件夹内所有c文件以及根目录的demo.c文件,MB_Port内添加STM32MB文件夹下port文件夹内所有c文件,如图所示。原创 2024-04-01 09:28:06 · 3267 阅读 · 0 评论 -
mcu专用看门狗复位芯片(如MAX706)
sgm706是圣邦微(SGMICRO)电子新推出的多功能微处理器监控电路芯片,除了看门狗功能外,还具有上电自动复位、手动复位及低电压报警(复位)等功能,使用起来非常方便可靠,可替代MAX706。一般的电路设计者,使用的阻容复位稳定性极差,时常有按了复位没反应,或是要按一段时间才能复位的经历。使用低电压检测和复位芯片,主要可以最大程度提高单片机的复位性能,其原理是通过预先设定好确定的电压值(阈值)启动复位操作,同时排除瞬间干扰的影响,又有防止单片机在电源启动和关闭期间的误操作效,充分保证数据的**。原创 2024-01-29 14:54:55 · 9458 阅读 · 1 评论 -
TPS5430正负电源模块
(3)D1:开关电源需要整流滤波才能输出直流电压,所以整流二极管的选型也很重要,模块设计时兼容性价比采用了SS34,即为40V反偏电压,3A最大电流,能满足电流设计,有条件的可以使用SS54或者SS56等更大功率的管子,可以提高输出电流的稳定度。(2)C3:由于开关波形的存在,电容必须选用有极性的电容才能更好的起到滤波的效果,容值合适即可,不可过大,这样会加重开关电源开启时的电流负担,正压滤波电容耐压值一般需要大于输入电压,最好是2倍。芯片引脚1(BOOT)靠近电容器C2,尽量减小导线轨迹长度。原创 2024-01-03 14:03:19 · 18064 阅读 · 4 评论 -
MOSFET管驱动设计细节,波形分析
因为驱动线路走线会有寄生电感,而寄生电感和MOS管的结电容会组成一个LC振荡电路,如果直接把驱动芯片的输出端接到MOS管栅极的话,在PWM波的上升下降沿会产生很大的震荡,导致MOS管急剧发热甚至爆炸,一般的解决方法是在栅极串联10欧左右的电阻,降低LC振荡电路的Q值,使震荡迅速衰减掉。如果不考虑纹波和EMI等要求的话,MOS管开关速度越快越好,因为开关时间越短,开关损耗越小,而在开关电源中开关损耗占总损耗的很大一部分,因此MOS管驱动电路的好坏直接决定了电源的效率。边沿陡峭,开关速度快,损耗很小。原创 2023-12-24 17:16:41 · 2999 阅读 · 0 评论 -
利用STM32和可控硅控制220V加热电路
如下图所示,可控硅不受HotPWM1控制,主要原因为电流可以经过可控硅Q1的1和3引脚直接流过,不受MOC3061控制。所以,应该将可控硅的1和2引脚对调,如下下图所示,即可完成控制。原创 2023-12-24 14:36:49 · 10509 阅读 · 2 评论 -
反激式开关电源电路的测试记录(一)
在测试过程中,会有大大小小的测试问题,上述大概能作为一个经验吧!原创 2023-12-24 10:58:03 · 2188 阅读 · 0 评论 -
开源项目推荐:SCADA组态软件Qt,kanzi,C#,MFC和WEB大全(收藏版)
开源项目推荐:SCADA组态软件Qt,kanzi,C#,MFC和WEB大全(收藏版)QT脚本在组态软件中实现动态功能的应用基于Qt的组态监控软件实现以及分析(转)https://libaineu2004.blog.csdn.net/article/details/79715737?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%原创 2022-03-09 17:08:22 · 6790 阅读 · 0 评论 -
IOT [01] -- 物联网平台架构
IOT [01] -- 物联网平台架构现在网上讨论的有关物联网的帖子非常之多,但大部分都是介绍理论或者有关硬件,通讯相关的问题,比如物联网模块,物联网通讯协议MQTT、XMPP、NB_IOT等,个人认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发一套物联网平台。物联网平台,应该是基于现在的互联网,通讯技术来建构,原创 2022-02-18 08:38:19 · 3013 阅读 · 0 评论 -
IOT [02] -- 物联网系统框架介绍
IOT [02] -- 物联网系统框架介绍 物联网系统框架介绍1. 物联网设备如何接入到网络?网络通信方式物联网设备接入网络后如何开展M2M,M2C通信?1. 基础应用:监控2.进阶应用: 报表统计3.高级应用: 数据挖掘/机器学习物联网终端设备软件系统架构不带RTOS设备终端系统框架带RTOS设备终端系统框架物联网云平台系统架构设备接入设备管理规则引擎安全认证及权限管理云计算产品物联网应用原文链接:https://blog.csdn.net/zhangbijun1230/article/details原创 2022-02-18 08:29:12 · 1781 阅读 · 0 评论 -
Linux(Ubuntu版本)下配置samba实现文件夹共享的方法
@TOC原文链接:https://blog.csdn.net/chencangui/article/details/48445831虽然有很多这方面的资料,但是都存在很大的缺陷,要不就是太过于简单,要不就是存在错误。自己亲身实践过的,遇到的问题也附有相应的解决方法。首先需要先安装samba:A、 sudo apt-get install sambasudo apt-get install smbfsB、创建共享目录:mkdir /home/Sharesudo chmod 777 /hom原创 2022-02-04 19:53:54 · 897 阅读 · 0 评论