自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 ESP32 双线汽车接口 (TWAI)

它兼容 ISO11898-1 经典帧(CAN2.0),因此可以支持标准帧格式(11 位 ID)和扩展帧格式(29 位 ID)。ESP32 包含 1 个 TWAI 控制器,经配置可以在 TWAI 总线上使用外部收发器通信。TWAI的物理层通常使用双绞线(如双芯屏蔽电缆)作为传输介质,通过CAN收发器将数据发送到总线上。在软件层面,TWAI使用一套协议规定了数据传输的格式、帧结构和通信规则。总而言之,TWAI是一种用于汽车领域的数据通信接口标准,基于CAN协议,用于实现汽车电子控制单元间的高效可靠通信。

2024-06-21 17:01:30 386

原创 【资源转发】---esp32选型参考

esp32选型参考

2024-06-14 16:18:49 114

原创 【资源转发】---FreeRTOS提供的8个消息队列函数api区别详解

freeRTOS提供的8个消息队列函数api区别详解

2024-05-28 09:36:12 98

原创 【日志记录】---编译器内存对齐优化导致结构体成员引用异常

如果你想要避免这种填充(在某些情况下,比如内存使用非常关键时),你可以使用特定的编译器指令或属性来控制对齐,但这通常不是推荐的做法,除非你有明确的理由。进一步调试发现原本3个字节大小的结构体,在内存中占用了四个字节的位置,这正是导致输出数据异常的原因,多出的一个字节导致数据引用出现了错位。在一个跨线程数据处理消息的时候出现了以下内存错位现象,在结构体指针引用的时候出现了成员数据异常。2.【目标结构体】线程B知道线程A该条消息的结构体,定义了专门的结构体来套字节流中的数据。后面可能有一个填充字节,以确保。

2024-05-07 16:53:53 299

原创 【可用资源转发】---esp8266 RTOS SDK 开发环境配置

esp8266RTOS SDK开发环境配置

2024-04-26 20:48:09 99

原创 【可用资源转发】---source insight配置文件导入

source insight配置文件

2024-04-24 14:56:47 224

原创 【可用资源转发】---ubuntu安装gitlab服务器

ubuntu安装gitlab服务器

2024-04-08 15:45:01 335

原创 【可用资源转发】---ubuntu系统安装教程

Ubuntu系统安装

2024-04-01 14:58:38 135

原创 【可用资源转发】------云服务器搭建frp实现主机内网穿透

frp搭建内网穿透

2024-03-25 15:52:31 127

原创 【可用资源转发】------交叉编译工具在线安装

交叉编译工具

2024-03-20 16:13:10 142

原创 【日志记录】------不同网段两台设备通信

子网掩码是一个32位的二进制数,其中的1表示网络地址,而0表示主机地址。因此,IP网段是通过子网掩码来定义的,具有相同网络地址的IP地址集合构成了一个网段。IP地址由网络地址和主机地址两部分组成,其中网络地址用于标识一个特定的网络,而主机地址则用于标识该网络中的某一台计算机。在局域网内调试设备的过程中,发现两台不在同一网段的设备实现了通信,IP地址为192.0.80.252的设备访问了IP地址为192.0.40.231的服务器。无论使用哪种方法,都需要对网络进行正确的配置和管理,以确保通信的安全和可靠性。

2024-02-19 15:58:51 491

原创 【日志记录】——主MCU 通过私有协议更新从MCU程序固件

异步协议方式:主MCU在程序传输过程中,从MCU不需要对每包程序进行应答,而是默默校验每包程序,当传输校验出错时或者出现丢包现象,包序号不连续,从MCU 会发出出错申请,告诉主MCU 当前传输位置,并继续传输,这种方式一定程序上降低了耦合性,减少了程序阻塞,提高了程序效率,但是实际在应用过程中,错误纠正处理机制往往相比同步协议方式更为复杂,另外还需要对两片MCU数据传输和处理速度做好匹配,毕竟是异步方式,当速度没有匹配在合适范围,就会出现通信错位的情况,虽然有纠错机制,但是最好不要有明显错位现象。

2024-02-03 14:24:25 758

原创 【日志记录】——单片机可执行文件合并

现在有一片单片机,执行程序包括自定义boot和应用程序app, 在将打包好的固件给到生产是有以下问题,由于要通过jlink烧录boot,然后上电启动boot,通过boot烧录初始化程序,过程过于复杂,流程步骤比较多,于是产生了现在这个需求再给到生产前直接将boot可执行文件与app可执行文件合并成一个固件,直接通过jlink一次性烧录完成。它的每一行都以冒号开头,表示记录的开始,然后是数据地址和数据内容。Hex文件的每一行都遵循上述结构,从冒号开始,然后是地址、长度、类型、数据和校验和,以回车换行符结束。

2024-02-02 16:58:43 1417

原创 【EEPROM EPROM RAM ROM FLASH】计算机存储家族

EEPROM、EPROM、RAM、ROM和FLASH是计算机存储器的不同类型,它们之间的主要区别在于存储数据的方式和数据保留时间。

2024-01-04 14:58:28 573

原创 转发一篇CAN过滤器配置的文章

CAN过滤器可以帮助我们实现这一目标,可以过滤掉我们不感兴趣的数据帧,只接收我们感兴趣的数据帧。例如,如果多个设备同时发送数据帧,CAN过滤器可以根据优先级或ID对它们进行排序,确保数据帧按照正确的顺序被接收和处理。需要注意的是,过滤器的位宽也有所不同,包括16位过滤器和32位过滤器。每个过滤器可以绑定一个CAN接收中断,经过过滤器过滤的帧会进入该过滤器绑定的接收中断对应的FIFO。总之,CAN过滤器是CAN总线系统中非常重要的设备,它可以帮助我们过滤掉不感兴趣的数据帧,提高系统的效率和可靠性。

2023-12-14 09:30:55 462

原创 递归结构体数组链表实现

递归结构体通常用于表示具有层次结构的数据,如链表,树等。通过递归结构体,可以方便地定义这些数据结构的节点,并且能够实现自动的内存管理。一:在C语言中,递归结构体是一种可以包含自身类型实例的结构体。这意味着结构体的定义中可以包含对同一种结构体的引用,形成递归的关系。二:通过递归结构体实现事件时间链表,利用动态数组和链表排序实现对事件的频繁插入。

2023-11-22 17:39:41 419

原创 (const char *format, ...) 可变参数在文本日志中的巧妙使用

和相关的宏,可以实现在函数调用时动态地指定参数的数量和类型。这使得函数能够接受可变数量的参数,并且能够处理不同类型的参数。在大多数情况下,编译器会将可变参数列表存储在内存中的某个位置,然后使用特定的寄存器或者指针来引用该位置。它会将可变参数列表中的下一个参数转换为一个指向给定类型的指针,并返回该指针的值。类型用于存储一系列类型未知的参数,这些参数可以是任意类型,包括整数、浮点数、字符和指针等。宏从参数列表中获取参数,直到所有参数都被获取完毕。是C语言中的一个数据类型,用于处理可变参数列表。

2023-11-10 09:11:15 387

原创 GD32F450---独立看门狗

具体来说,看门狗的工作原理是,在系统运行以后启动看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。看门狗(Watchdog)是一种计算机硬件或软件的监控机制,主要作用是监测系统的运行状态,并在系统出现异常或故障时采取相应措施,以保证系统的稳定性和可靠性。8 级预分频器,可以对输入时钟(IRC32K),进行预分频,降低时钟频率,延长最大允许喂狗时间。1.独立时钟源: 独立看门狗定时器(FWDGT。

2023-10-20 10:30:58 706

原创 UCOSIII---多任务系统中的栈

在一个裸机系统中,如果定义一个全局变量和子函数局部变量,当发生中断时,全局变量放在哪里?如果是裸机编程那就不用考虑这些,但是如果是RTOS编程,就要明确这些变量是如何储存的,在裸机系统中,统统储存在栈中,即单片机RAM的一段连续的空间,其大小在启动文件中配置。但是在多任务系统中,为了保证独立性和任务之间互不干扰,需要给每个任务分配一个独立的栈空间,在RTOS中通常为一个预先定义的全局数组。多任务系统中每个任务使用自己独立的栈空间,任务之间数据互不干扰。在ucosiii中空闲任务的栈空间最小为128。

2023-10-08 11:15:46 168

原创 GD32串口DMA与空闲中断串口数据进行处理

GD32F450有两个DMA控制器(DMA2只存在于大容量产品中),DMA1和DMA2都有8个通道,每个通道专门用来管理来自于一个或者多个外设对存储器的访问请求。GD32串口空闲中断是指当串口接收缓冲区中没有数据时,会触发空闲中断。在空闲中断中,我们可以将接收数据搬运至接收二级缓存区中。使用空闲中断可以在保证数据完整性的同时提高串口接收数据的效率。DMA传输将数据从一个地址空间复制到另一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。串口DMA作用是减轻CPU负担开销。

2023-09-08 14:24:37 1217

原创 CRC-8-SAE J1850

不同的CRC标准(如CRC-8、CRC-16、CRC-32等)会采用不同的多项式和计算方式。不同的CRC标准使用不同的CRC多项式,选择适当的CRC多项式取决于具体的应用和需求。常见的CRC-16标准包括CRC-16-CCITT、CRC-16-IBM和CRC-16-USB等。常见的CRC-8标准包括CRC-8-ATM、CRC-8-CCITT和CRC-8-MAXIM等。这样就实现了对数据的逐位处理。最后,移位寄存器中剩余的数据就是CRC校验值,可以与接收到的CRC校验值进行比较,以确定数据是否正确。

2023-08-21 15:44:56 1049

原创 大端存储和小端储存应用

需要注意的是,字节序的选择通常由硬件架构和操作系统决定。不同的硬件和操作系统可能采用不同的字节序。在网络通信中,如果通信双方使用不同的字节序,就需要进行字节序转换,以确保数据的正确传输。小端存储(Little-Endian):数据的低位保存在内存中的低地址中,数据的高位保存在内存中的高地址中。- 大部分RISC架构的处理器使用大端存储,比如PowerPC和ARMv8。中的高地址中,数据的高位保存在内存中的低地址中。- x86架构的个人电脑和服务器使用小端存储。- x86架构的处理器使用小端存储。

2023-08-18 23:40:46 171

原创 GD32 MCU ISP 控制台用户手册 --- 自定义MCU烧录软件

如自定义boot引导程序,使用效果和自己编写的IAP程序功能相似,在程序中添加特定串口烧录程序,通过协议触发从当前程序直接跳转到芯片自带的程序装在引导程序(也就是isp),相比于自己编写程序升级IAP,该模式无需考虑自己编写的引导程序是否被误操作导致损坏,因为isp存储于单片机的系统存储区,由芯片厂家固化而成,无法操作修改;模块集成了串口isp烧录协议,只需要将模块集成到自己的上位机软件里面,提供模块相应的输入文件就可以实现串口isp烧录,避免了其他产品公司重复造轮子。

2023-07-27 15:52:44 1513 1

原创 GD32内核寄存器

当程序执行函数调用或中断发生时,当前的程序状态(包括寄存器的值、返回地址等)会被保存到栈中,以便在函数调用或中断处理完成后能够恢复到之前的状态。1. 程序计数器(Program Counter,PC):用于存储将要执行的下一条指令的地址,在程序执行过程中起到指示下一条指令位置的作用。当处理器执行一条指令时,它会从PC寄存器中读取当前指令的地址,并将PC寄存器的值增加,以指向下一条指令的地址。当遇到分支或跳转指令时,PC寄存器的值会被修改为跳转目标的地址,从而改变程序的执行流程。

2023-07-27 10:20:51 188

原创 局部变量的作用域

总结:局部变量的作用域为大括号内(代码块内部),程序执行一旦离开代码块,局部变量就会被销毁(存储空间为栈),所以在一个函数中的不同大括号内定义相同变量名的局部变量是不会相互冲突的,这也是在使用宏定义代码块是使用do{}while(0)的目的,避免宏定义代码块中的变量和外部变量相互冲突。在大括号内部定义的局部变量只在该大括号内可见,不会与其他代码块中的同名变量发生冲突。这也意味着你可以在不同的代码块中使用相同的变量名,而不会引起命名冲突。局部变量的作用域通常限定在其所在的大括号 ”{}“(代码块)内部。

2023-07-21 13:38:36 317

原创 GD32位带操作 --- 特点和应用场景

总结:位带别名就是将大小位1M的内存区域,按照其中的每一个位膨胀成一个int四字节单元额外分配一个虚拟32M 大小的地址,无论是位带区还是位带别名区都有自己的起始地址,根据位带区中bit的偏移量确定其映射在位带别名区int地址的偏移量,只要操作位带别名区int虚拟单元的0/1,就可以修改位带区的位,将一个位膨胀成一个int从而实现修改位,而无需进行位操作。位字段的操作:在某些情况下,需要对一个字节或一个字中的多个位进行操作,例如对数据包的标志位进行设置或清除。位带别名区把每个比特扩展成一个32位的字。

2023-07-19 10:07:47 511

原创 逻辑类型抽象

在实现功能的过程中,没有完备的逻辑类型抽象,往往会陷入逻辑混乱逻辑漏洞和复杂化的泥潭中,对需求功能进行抽丝剥茧尽量往常见逻辑类型靠,能够有效优化逻辑的复杂程度,避免被功能逻辑牵着走,减少逻辑漏洞(也就是bug的产生),减少复杂逻辑编写后的验证过程。总结:嵌入式MCU编程更注重程序运行的逻辑,对功能需求抽象套用标准逻辑类型,能够快速有效实现功能的同时,减少逻辑漏洞,避免陷入逻辑泥潭中,另外把串行逻辑改为并列逻辑,是降低逻辑复杂程度,减少逻辑耦合和逻辑漏洞的有效方法。2)输入状态发生变化,当前累加值失效。

2023-07-16 17:38:57 59

原创 嵌入式MCU --- 三角函数运算负担与精度权衡

在嵌入式单片机中,MCU的运算性能往往是有限的,在嵌入式编程中常常会碰到三角函数的运算,精确的三角函数运算是十分消耗MCU资源的,在这个过程中我们应权衡计算负担和计算精度。以下是在嵌入式单片机中资源相对紧张对计算精度不是十分严格的情况下实现的三角函数运算,函数通过查表得方法,在确保一定精度的前提下,大大节省了MCU的计算资源。实验运行测试得出该方法计算精度可控制在0.01左右,在绝大多数嵌入式场景下精度是相对足够的。

2023-07-13 15:20:52 570

原创 memmove --- 重叠内存块数据搬运

" 复制到了一个新的缓冲区buffer中。如果源内存的起始地址在目标内存的前面,memmove 函数会从前向后逐个字节复制数据。如果源内存的起始地址在目标内存的后面,memmove 函数会从后向前逐个字节复制数据。memmove 函数返回指向目标内存的指针,即dest的值。memmove函数是C语言中的一个库函数,用于在内存之间移动数据块。其中,dest 是目标内存的指针,src 是源内存的指针,n 是要移动的字节数。函数可以处理重叠内存块的情况,因此它更加灵活,适用于复制任意内存块的操作。

2023-07-12 11:15:06 211

原创 接收数据处理 --- 字符串数据通用分帧函数

在嵌入式编程中对外部模块数据处理是一件非常频繁的事情,以下是一个对接收字符串数据的通用分帧函数的。

2023-07-11 11:02:34 67

原创 宏定义代码块之 do{} while(0) 的使用

在 main 函数中,我们可以像使用单个语句一样使用 MY_MACRO ,并且后续的代码不会受到宏定义中的多条语句的影响。主要的目的是为了解决宏定义在使用时可能引发的一些问题,例如宏定义中的分号和大括号的使用。}while(0),将你的代码写在里面,里面可以定义变量而不用考虑变量名会同函数之前或者之后的重复。,允许在宏定义中使用局部变量。总而言之, do{} while(0) 的作用是为了解决宏定义在使用时可能引发的一些问题,确保宏定义可以作为单个语句使用,并且在逻辑上看起来像是一个语句。

2023-07-05 11:51:09 1742

原创 Keil程序编译文件大小---Code,RO,RW,Zi

4. ZI(Zero-Initialized)段:ZeroInitialie data,即0初始化数据,它指初始化为“0值”的可读写数据域,它与RW_data的区别是程序刚运行时这些数据初始值全都为0,而后续运行过程与RW-data的性质一样,它们也常驻在RAM区,因而应用程序可以更改其内容。C中的未被初始化或初始化为0的变量编译后是ZI类型数据, 存放在RAM中;—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。

2023-06-30 15:31:35 557

原创 宏定义函数利器

条件编译:宏定义函数可以与条件编译结合使用,根据不同的条件选择性地展开或忽略宏定义函数的代码。代码重用:通过宏定义函数,可以将一段代码片段定义为一个宏,然后在程序中多次调用该宏,从而实现代码的重用。这样可以减少代码的冗余,提高代码的可维护性和可读性。二:在学习参考了前两个宏定义函数以后,充分体会了宏定义函数的妙用,个人总结了后四个常用宏定义函数提供大家参考,在个人嵌入式MCU编程中发挥了十分巧妙的作用。参数灵活性:宏定义函数可以接受不同数量和类型的参数,而不像普通函数需要事先声明参数的类型和数量。

2023-06-28 15:56:58 222

原创 单片机硬件接口抽象系列(2)---接口层框架

接口抽象层的作用是将各个通信模块的接口抽象出来,供上层应用函数调用,隔离底层模块,上层应用程序调用抽象接口可以直接驱动硬件外设,无需直接操作外设模块或者芯片厂商提供的固件库函数。在这一层中,模块将直接耦合固件库函数,以实现MCU外设操作。该层由若干个模块组成,每个模块对应一个通信外设。一:接口抽象层(interface)二:接口模块层(physical)

2023-06-25 13:41:24 325

原创 单片机硬件接口抽象系列(1)---仿Linux的open,read,write,close

通过read函数实现对外设数据的读取,通过write实现外设数据的输出,通过close实现对外设的关闭。现在市面上大部分单片机厂家都会提供自己的固件库,在单片机程序设计中,上层应用程序在单片机与单片机之间移植相对比较困难,如果没有很好的程序框架设计,将底层硬件抽象隔离(如应用程序和厂家的固件库函数没有做很好的隔离,或者应用程序中频繁直接调用固件库函数),将导致程序移植十分困难。(1)接口缩紧原则:在完成单片机底层硬件抽象后对上层提供的接口尽量小,所以在接下来的系列中,我将尝试对单片机的一些通用。

2023-06-15 14:04:30 256

原创 嵌入式单片机程序架构要点

在进行嵌入式软件开发的时候,要搭建自己的软件基础设施,是软件基础设施具有可复用性,可移植性,保证嵌入式开发程序质量,套用自己的软件基础设置,保障软件代码的质量和开发的效率。应该使用标准化的编程语言和工具,并进行代码审查和测试,以确保软件的质量和稳定性。不要陷入嵌入式软件开发的泥潭中,注重接口抽象与模块隔离,拒绝过多的耦合,使用标准化模块。4.模块与模块之间线程与线程之间不要直接相互调用,可以利用数据缓冲区,进行消息传递和逻辑隔离。3.对硬件接口进行抽象,对模块进行抽象,对协议进行抽象。

2023-06-12 10:14:46 138

原创 单片机---静态变量使用

与普通全局变量不同的是,函数作用域静态变量只能在定义它的函数内进行访问,且在函数定义时就已经被初始化,而不是像普通全局变量需要被显式初始化或初始化值默认为0。函数作用域静态变量实际上是在函数作用域内定义的全局变量,只是作用域限制在该函数内部,不能被同一文件中其他函数调用,也不能被其他文件调用。总之,函数作用域静态变量虽然在某种意义上类似于全局变量,但是它们仍然各自存在于各自的函数作用域中,生命周期也受到函数调用等限制。文件作用域的静态变量定义在函数外,只能在当前文件内使用,不能在其他文件中使用。

2023-06-06 20:57:02 511

原创 单片机RAM使用与优化

需要注意的是,全局变量在单片机中存储在数据段或BSS段中,其占用的内存空间是固定的,因此需要合理掌握变量的使用,避免过多占用内存。随后,在函数体内部定义的局部变量也会被分配到栈空间中。需要注意的是,动态内存分配需要消耗一定的系统资源,分配过多的动态内存可能会导致内存碎片等问题,因此在使用动态内存分配时需要合理掌握分配与释放内存的时机,避免内存浪费或内存泄露情况的发生。1) 动态分配的数组和结构体:由于静态分配的数组和结构体大小是固定的,在需要动态分配较大的数组或结构体时,可以使用在堆中动态分配内存的方式。

2023-06-06 20:42:15 2399

原创 GD32F4-总线与外设框架地址映射

表1-2. GD32F4xx系列器件的存储器映射表显示了GD32F4xx系列器件的存储器映射,包括代码、SRAM、外设和其他预先定义的区域。GD32F4系列MCU采用Arm® Cortex®-M4内核,处理器主频高达240MHz,GD32F4系列具有丰富的外设资源特性,可提供多达4个USART和4个UART,3个I2C,6个SPI,2个I2S,2个CAN2.0B、1个SDIO接口、1个10/100M以太网控制器,并支持USB2.0 FS和HS通信。这是Cortex-M4的最大地址范围,因为它的。

2023-05-25 09:24:47 671

原创 GD32单片机,32位地址的内存映射表

所有的外设 Fast I/O 寄存器都映射在了一段连续的内存地址上,并按照地址的不同划分为不同的区域,通过读写这些地址就能够操控外设的操作。GD32 单片机的内存结构非常重要,主要是因为它表示了硬件上内存的逻辑划分和外设的地址分配。需要注意的是,不同型号的 32位 单片机内存映射表可能会有所不同,具体的信息需要参考所用的芯片型号手册。Backup registers 则是用于保存一些特殊数据的非易失性存储区,例如系统时钟的校准值等。其中,SRAM 是用于存储程序 runtime 数据的存储区域,

2023-05-24 17:18:41 766

执行文件拼接工具- 240718-中.zip 中

执行文件拼接工具_ 240718_中.zip 中

2024-07-18

执行文件拼接工具.zip WPF模板-起始文件-始

执行文件拼接工具.zip WPF模板-起始文件-始

2024-07-17

USB-CANFD TOOLSetup(V1.12).zip CAN调试工具

USB_CANFD TOOLSetup(V1.12).zip CAN调试工具

2024-07-09

vscode-open, vscode工作区批处理文件.bat

vscode_open, vscode工作区批处理文件.bat

2024-07-04

串口数据可视化绘图工具.zip

串口数据可视化绘图工具.zip

2024-06-12

esp32环境搭建 .zip

esp32环境搭建 .zip

2024-06-07

群Ping.zip 局域网ping工具

群Ping.zip 局域网ping工具

2024-06-05

HBuilderX.4.15.2024050802.zip

HBuilderX.4.15.2024050802.zip 嵌入式网页编辑工具

2024-06-03

OutputHex-Bin.bat keil批处理文档 bin文件hex文件根据版本号自动命名

OutputHex_Bin.bat keil批处理文档 bin文件hex文件根据版本号自动命名

2024-05-27

model-cmd-manage.zip 指令重发控制器

model_cmd_manage.zip 指令重发控制器

2024-05-21

TCPUDPDebug102-Setup.zip

TCPUDPDebug102_Setup.zip

2024-04-29

逻辑分析仪.zip usb逻辑分析仪工具

逻辑分析仪.zip

2024-04-28

esp8266 RTOS SDK 开发环境配置

esp8266 RTOS SDK 开发环境配置

2024-04-26

中文版(3.13.12.0).zip usb虚拟示波器

usb虚拟示波器

2024-04-25

source-insight4.0-hack.zip

source_insight4.0_hack.zip

2024-04-23

STM32 ST-LINK Utility v4.6.0.zip

STM32 ST-LINK Utility v4.6.0.zip

2024-04-23

Windows 虚拟串口对

Windows 虚拟串口对

2024-04-20

ssh-config.txt

ssh配置文件

2024-04-12

ubuntu下载源source.list

ubuntu国内下载源

2024-04-08

ubuntu镜像工具.zip

镜像制作工具

2024-04-08

.net4.6.1.zip

上位机常用环境

2024-04-07

单片机串口烧录工具.zip

flyMCU串口烧录工具

2024-04-07

keilkilll.rar

keil清理目标

2024-04-03

dbc文件编辑工具-can协议.zip

CAN 协议编辑查看工具

2024-04-03

电脑磁盘扫描工具,磁盘扫描

电脑磁盘扫描

2024-04-02

git-2.44.0.zip

GIT仓库管理

2024-03-29

everything - Windows文件快速查找工具.zip

everything安装版本,文件查找工具

2024-03-21

工程管理工具源码版本管理svn

svn

2024-03-08

.net framework版本集合.zip

.net framework版本集合

2024-02-03

日志记录-单片机可执行文件合并

bin文件合并工具

2024-02-02

WPF上位机框架-根文件.zip

wpf框架,静态函数方法类,上位机

2024-01-19

Elmos524.09.zip

Elmos524.09.zip

2024-01-08

文件夹对比工具.zip

版本对比工具

2024-01-04

CH340驱动.zip

CH340驱动

2023-11-23

ESP32-linux环境-编译指南.zip

ESP32-linux环境-编译指南.zip

2023-11-11

esp-web-serial-master-2023年11月10日.zip

esp-web-serial-master-2023年11月10日.zip

2023-11-11

gd32f450-ucosii-enet-lan8700网口调试Demo.rar

gd32f450-ucosii-enet-lan8700网口调试Demo.rar

2023-11-08

esp8266打包环境.zip

esp8266打包环境.zip

2023-10-29

codelldb-x86-64-windows.zip

ESP32拓展

2023-10-28

MicroPython-esp32固件.zip

固件

2023-10-22

空空如也

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

TA关注的人

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