自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(271)
  • 资源 (8)
  • 收藏
  • 关注

原创 开源一个基于CH348的8路隔离485+DIO接口板

本文介绍了一款基于CH348芯片的开源8路隔离RS485+DIO接口板设计,具有8路独立光电隔离RS485接口、8路数字输入输出(4入4出)、USB通信及隔离电源等特点。该设计采用国产CH348多串口芯片,支持多种波特率,兼容主流操作系统,适用于工业自动化、物联网、智能楼宇等场景。硬件结构包含核心芯片、隔离接口、DIO扩展及供电模块,并预留I2C/SPI接口。项目已开源,旨在推动国产芯片和开源硬件发展,欢迎开发者测试改进。GitHub仓库地址和联系方式详见原文。

2025-07-16 10:00:04 426

原创 Day 17:宏定义中的优先级与副作用

本文分析了C语言宏定义中常见的优先级与副作用问题。宏的本质是预处理器文本替换,缺乏类型检查和运算优先级控制,易导致错误。典型问题包括:1)运算优先级混乱,如#define SQUARE(x) x*x调用SQUARE(a+1)时展开为a+1*a+1;2)副作用问题,如MAX(i++,10)可能多次执行i++。规避方法包括:为宏参数和整体加括号、避免传递带副作用的表达式、优先使用inline函数替代宏。调试时可利用gcc -E查看预处理结果。理解这些陷阱并遵循规范,才能编写安全的C代码。

2025-07-16 09:53:56 771

原创 Day 18: sizeof操作符的应用与陷阱

本文深入解析C语言中sizeof操作符的原理、应用与陷阱。sizeof是编译时运算符,用于获取类型或对象的字节大小,但在数组与指针混用、函数参数退化、结构体对齐等场景下极易出错。典型错误包括误用指针大小代替数组大小、未考虑表达式不求值特性等。规避方法包括:用变量而非类型作为sizeof参数、显式传递数组长度、区分数组与指针的sizeof行为。正确理解sizeof的编译期求值特性和类型系统关系,是编写安全可移植C代码的关键。建议结合实践案例和底层机制深入理解,避免常见陷阱。

2025-07-16 09:50:46 474

原创 Day 16: 赋值运算与表达式求值顺序

C语言中赋值运算与表达式求值顺序存在诸多隐患,特别是涉及副作用操作(如自增/自减)时易引发未定义行为。文章指出,虽然运算符优先级确定结合方式,但操作数求值顺序并不固定。典型陷阱包括:同一变量多次修改、函数参数求值顺序依赖、数组下标与自增混用等。规避方法建议将复杂表达式拆分、避免副作用与取值混用、遵循编码规范等。通过错误代码与优化代码对比,强调代码可预测性的重要性。文中还解释了序列点和编译器优化的影响,并提供SVG图解说明。核心建议是:每个表达式只修改一个变量,分开写副作用操作,使用工具检测潜在问题。

2025-07-15 09:40:13 800

原创 Day 15:符号扩展与类型转换隐患

C语言开发中符号扩展与类型转换的隐患及防范 符号扩展和类型转换是C语言常见的陷阱。符号扩展发生在有符号类型转换时(如char转int),符号位会填充高位;无符号类型则使用零扩展。两者混用易导致数据错误和逻辑混乱,尤其在I/O操作和网络协议中。典型问题包括数据破坏、条件判断出错和位运算异常。 防范措施:明确变量类型,使用stdint.h的明确定长类型;避免混用有符号和无符号类型;强制类型转换时添加注释;启用编译器警告。开发中应特别注意边界场景和协议实现,主动控制类型转换。

2025-07-15 09:38:57 1012

原创 Day 14:整数溢出(Integer Overflow/Underflow)

本文详细讲解了C语言中整数溢出与下溢的问题。无符号整数溢出是明确定义的模运算行为,而有符号整数溢出属于未定义行为,可能引发严重错误。文章列举了五种典型陷阱案例,包括大数运算、数组长度计算等场景,并分析了其成因。针对这些问题,作者提出了边界检查、使用更大类型、编译器检测工具等防范措施。通过错误代码与优化代码的对比,展示了如何正确处理溢出问题。最后强调在C编程中必须重视整数运算的安全性,建议开发者在关键路径加入溢出判断,充分利用现代工具来提升代码健壮性。

2025-07-02 09:38:12 1336

原创 Day 13:未初始化的变量(Uninitialized Variable)

摘要: C语言中未初始化的变量是隐蔽的安全隐患。局部变量(如int、指针、结构体成员等)若不显式初始化,其值为栈上残留的随机数据,易导致逻辑错误或崩溃。典型错误包括直接使用未初始化变量、解引用未初始化指针等。规避方法包括:始终显式赋初值(如int x=0)、指针初始化为NULL、结构体/数组整体清零,以及利用静态分析工具检测风险。未初始化变量的根源是C为性能避免自动清零,程序员需养成“声明即初始化”的习惯以提升代码健壮性。

2025-07-02 09:37:25 910

原创 齿轮模数:齿形设计的核心参数详解

模数是齿轮设计的核心参数,决定了齿轮的基本尺寸和性能。它直接影响齿距、齿高、强度及啮合兼容性,计算公式为模数=分度圆直径/齿数。模数增大可提高承载能力,但也会增加齿轮尺寸。工程设计中需根据功率、转速等需求计算初选模数,优先选用标准系列,并通过强度校核确定最终值。不同应用场景推荐不同模数范围,合理选择模数是确保齿轮系统高效可靠的关键。设计过程需结合理论计算和专业软件分析,避免常见错误应用。

2025-07-01 09:45:38 1294

原创 Day 12:多重释放(Double Free)与释放后使用(Use-After-Free)

本文深入剖析C语言内存管理中两大高危陷阱——多重释放(double free)与释放后使用(use-after-free)。它们会破坏堆结构、导致程序崩溃,甚至引发安全漏洞。常见成因包括未置空释放指针、多指针别名混乱及复杂逻辑分支遗漏。规避方法强调:释放后立即置NULL、统一管理资源所有权、使用Valgrind等检测工具。通过错误代码与修正案例对比,图解危险操作,核心建议将"free后置NULL"纳入规范,明确资源生命周期管理。遵循"谁分配谁释放谁置NULL"原则,可

2025-07-01 09:44:33 564

原创 Day 11:内存分配失败未检查(malloc/realloc/calloc返回值)

C语言动态内存分配常见陷阱与最佳实践:本文详细剖析了malloc、calloc和realloc函数使用时可能产生的空指针解引用和内存泄漏问题,指出开发者容易忽视返回值检查的根本原因。文章通过错误代码与正确代码对比,强调必须检查分配结果、使用临时指针处理realloc返回值等关键实践,并解释了底层机制。核心建议是将内存分配检查作为硬性规范,确保程序在极端情况下也能优雅处理内存不足。这些实践对提升代码健壮性至关重要,尤其在大数据和嵌入式等资源受限场景中。

2025-06-30 09:22:38 368

原创 齿轮设计小结

齿轮传动设计核心要点:模数、齿数、压力角等参数决定齿轮性能,减速比需合理分配(单级≤10)。强度校核需计算齿面接触与齿根弯曲疲劳,润滑方式影响效率。示例展示二级减速(总比100)与行星减速器设计方法,强调避免根切、齿数互质等经验。推荐参考机械手册与ISO标准,建议仿真验证后实施。掌握减速比分配、模数选型与强度校核可解决大部分基础设计问题。(149字)

2025-06-30 09:21:40 929

原创 Day 10:字符串操作函数的安全隐患(如 strcpy, strcat, gets)

C语言字符串操作函数存在严重缓冲区溢出风险。strcpy、strcat、gets等函数因无长度校验,极易导致内存覆盖。推荐使用strncpy、fgets等安全版本,并手动处理结尾符\0。根本原因在于C语言早期设计追求性能而忽略安全。实际开发应禁用危险函数,执行长度限定,并加强代码审查。安全编程需结合正确API、边界意识和规范审查,才能有效防范溢出漏洞。

2025-06-26 09:37:27 834

原创 Day 9:C语言中的浅拷贝与深拷贝陷阱

本文系统讲解了C语言中的浅拷贝与深拷贝问题及其解决方案。浅拷贝仅复制指针地址,导致多个对象共享内存,容易引发重复释放、数据错乱等问题;深拷贝则递归复制指针指向的数据,确保对象独立。文章通过错误示例对比,展示浅拷贝导致的双重释放问题,并给出深拷贝实现方法(自定义复制函数分配新内存)。核心建议:含指针的结构体必须自定义深拷贝,明确所有权管理,避免使用memcpy或=直接拷贝。开发中应形成规范,重点关注带指针结构体的赋值和释放。

2025-06-26 09:36:22 1094

原创 Day 8:缓冲区溢出(Buffer Overflow)

缓冲区溢出是C语言常见的安全漏洞,指程序向缓冲区写入数据时超出分配空间,破坏相邻内存。典型成因包括数组空间不足、使用不安全函数(如gets、strcpy)等,可能导致关键数据被覆盖。防范措施包括:1)使用安全函数(fgets、strncpy)并严格校验边界;2)动态分配时预留足够空间;3)借助静态分析工具检测风险。现代防护机制(如栈保护、ASLR)能缓解但无法根除风险,必须从代码习惯入手,杜绝不安全操作。开发时应始终假设外部输入不可信,从源头预防溢出。

2025-06-25 10:08:17 379

原创 Day 7:格式化字符串漏洞(Format String Vulnerability)

摘要: 格式化字符串漏洞是C语言中高危的安全隐患,由用户可控的格式字符串参数引发(如printf(user_input))。攻击者可利用%x、%n等格式符读取或篡改内存。典型错误包括直接使用用户输入作为格式字符串或未保护的日志记录。规避方法是固定格式字符串(如printf("%s", user_input)),避免用户控制格式。底层原理涉及栈数据越界访问和%n的任意内存写入。建议开启编译警告并静态分析代码,杜绝此类漏洞。核心原则:永远禁止用户输入作为格式字符串。

2025-06-25 10:07:28 438

原创 Day 6:指针和数组的混淆与陷阱

本文解析了C语言中数组和指针的本质区别与常见误区。数组是固定大小的连续内存块,而指针仅保存地址。关键区别在于:数组名不能赋值,sizeof运算结果不同,函数传参时会退化为指针。文章列举了四大典型陷阱(数组大小误判、指针越界、数组赋值错误、返回局部数组指针)及规避方法,强调传递数组长度的重要性。通过错误与正确代码对比,说明数组退化为指针时的处理方式。建议开发者始终区分两者本质:数组是数据集合,指针是地址标识。理解这些差异是编写健壮C代码的基础。

2025-06-24 09:41:11 784

原创 Day 5:内存泄漏(Memory Leak)与资源回收管理

C语言内存泄漏是指程序分配内存后未释放,导致内存无法重复使用。常见原因包括:忘记释放、指针丢失、异常退出未释放和循环分配未充分释放。典型陷阱有覆盖分配指针、提前返回未释放、函数返回堆内存无人释放等。规避方法包括:规划释放时机、不覆盖未释放指针、配套写释放代码、使用统一出口释放、封装释放函数以及使用检测工具。正确做法是将每次malloc与free配对,复杂函数用goto统一释放。内存泄漏会导致长期运行程序内存耗尽,建议养成良好内存管理习惯,确保程序稳定性。

2025-06-24 09:40:08 894

原创 Day 4:结构体内存填充(Struct Padding)与对齐(Alignment)

C语言结构体内存对齐与填充是重要但易被忽视的细节。CPU要求数据类型地址对齐,编译器自动插入填充字节满足对齐要求,导致结构体实际大小可能大于成员总和。常见陷阱包括内存浪费、跨平台布局差异和序列化问题。建议优化成员顺序(大成员在前)、使用编译器指令控制填充、避免直接结构体序列化,并通过sizeof/offsetof获取准确信息。合理处理结构体布局是高质量C程序的关键。

2025-06-17 09:49:29 817

原创 Day 3:C语言中的未定义行为(Undefined Behavior, UB)

C语言中的未定义行为(UB)是开发者需警惕的陷阱,指标准未规定结果的操作,可能导致程序崩溃或异常。常见UB包括数组越界、未初始化变量、有符号整数溢出等。规避方法包括严格检查边界、初始化变量、使用安全指针操作等。静态分析工具如clang-analyze可帮助检测UB。正确代码应避免依赖UB,遵循标准规范。开发中应保持警觉,利用工具排查潜在风险,确保程序稳定性和跨平台兼容性。

2025-06-17 09:47:59 1033

原创 Day 2:C语言中的字符串结尾与缓冲区溢出

C语言字符串操作安全指南:C语言字符串以'\0'结尾,但标准库函数如strcpy/strcat不检查长度,易导致缓冲区溢出(严重安全漏洞)。常见陷阱包括字符串未正确结尾、拷贝超长内容等。安全建议:声明时预留'\0'空间、初始化数组、使用strncpy/strncat等安全函数、显式设置结尾、检查输入长度。示例对比展示不安全与安全代码的差异,强调手动管理边界的重要性。底层原理上,字符串遍历依赖\0终止,溢出可能破坏栈数据甚至被利用攻击。核心建议:操作字符串时始终考虑边界和结尾问题,优先使用安全函数。

2025-06-10 09:15:36 829

原创 Day 1:C语言中的野指针(Dangling Pointer)

野指针是C语言中最隐蔽的bug来源之一。它可以导致数据损坏、难以调试的崩溃、甚至安全漏洞。指针一定要初始化,资源释放后要置NULL,避免返回局部地址。养成良好的“指针管理”习惯,多用工具进行检测,写关键代码时反复review与测试。不要侥幸依赖“没出错就是对的”,因为野指针的危害往往是潜伏的。“每一次用到指针,都要问自己:‘它现在指向的内存是有效且可用的吗?’”公众号 | FunIO微信搜一搜 “funio”,发现更多精彩内容。个人博客 |

2025-06-10 09:12:26 292

原创 双路串口转百兆以太网模块的设计

CH9121是一款支持双路串口转百兆网络的透传芯片,具有两路独立串口和百兆网口特性。该芯片内置以太网MAC和PHY,兼容IEEE802.3协议,支持TCP/UDP四种工作模式,串口波特率最高达10Mbps。芯片设计简单,提供TSSOP20和LQFP64M封装,并可通过上位机软件配置参数。常见问题包括串口乱码(波特率或编码错误)和网络分包(可通过调整报文间隔时间解决)。适用于串口设备快速联网场景,性价比高。

2025-06-04 09:40:14 470

原创 Day 0:C语言中的数组越界访问

C语言数组越界是常见的编程陷阱,其本质是连续内存块的直接访问,编译器不进行下标检查。由于C追求高效而牺牲安全性,越界访问属于未定义行为,可能导致内存破坏、程序崩溃或安全漏洞。规避方法包括:严格检查下标合法性、封装数组操作、使用sizeof计算长度、优先选用安全库函数。图示展示了越界访问未定义内存区域的情形。建议开发者养成边界检查习惯,使用工具检测越界问题,并牢记"任何数组访问都要明确边界"的原则。通过封装和自动化检查,可显著提升代码健壮性。

2025-06-04 09:36:15 376

原创 深入理解 ARM Serial Wire Debug (SWD) 协议

SWD 是 ARM 为替代传统 4 线 JTAG 所开发的两线制同步串行调试协议。引脚极少:仅需 SWDIO(数据线,双向)和 SWCLK(时钟线,单向)。速度高效:支持高达 50 MHz 的时钟频率。布线简单:极大方便小型封装和高密度 PCB 设计。主机主导:所有通信均由调试主机发起,实现无歧义主从关系。物理连接推荐SWDIO/SWCLK 各串 10kΩ 上拉电阻并对地 33pF 滤波电容。信号线尽量短(<15cm),与地线分组走双绞线,提升抗干扰性。

2025-05-23 10:00:49 1396 1

原创 SWD接口详解:原理、连接与应用

SWD(Serial Wire Debug)是ARM Cortex-M系列微控制器中广泛使用的两线制调试接口,因其引脚简单、传输高效而受到青睐。本文详细介绍了SWD的工作原理、物理连接及实际应用。SWD仅需两根信号线(SWDIO和SWCLK),通过请求、响应、数据传输和校验四个阶段完成通信。与JTAG相比,SWD引脚更少、协议更简单,但传输效率相当。SWD常用于芯片调试、固件烧录和芯片解锁等场景。文章还通过Mermaid和SVG图表直观展示了SWD的连接方式和通信流程,并解答了常见问题,帮助开发者更好地理解

2025-05-23 09:59:55 2150

原创 液晶屏逻辑板编程工具

名称:T-Con(Timing Controller,时序控制板),又称逻辑板、主板驱动板。功能接收来自主板(Main Board)的LVDS或eDP信号,将其转换为驱动液晶面板所需的时序信号(STH/STV、CKV/CKH等)。控制液晶分子的偏转角度,实现图像灰度显示。管理伽马电压(Gamma Voltage)和VCOM电压,确保色彩和对比度准确。

2025-05-15 09:54:31 656

原创 螺旋Pi代码

gpt-4o支持图片生成后,凑热闹试了下,个人感觉效果确实很OK,之前用mj或sd生成的图片,可能是不会提示词的原因,总感觉风格怪怪的,指令跟随不太好。微信搜一搜 “funio”,发现更多精彩内容。公众号 | FunIO。

2025-05-15 09:53:42 170

原创 CH347 USB2UART/SPI/I2C/GPIO/JTAG更新

CH347F #硬件开发 #嵌入式开发 #Python #Rust #开发工具。USB串口芯片很多,但支持高速USB、波特率能干到9M的可不多见。微信搜一搜 “funio”,发现更多精彩内容。公众号 | FunIO。

2025-04-01 09:56:34 517

原创 PCB设计错误案例

前几天我想做个烧写程序的探针,类似下面这样:这种探针有些是用塑胶件固定探针,比如亚克力钻孔;但是上图中这个看着应该是用PCB固定的,我决定也用PCB试试。

2025-04-01 09:55:27 393

原创 合并HEX文件

合并Intel HEX文件是嵌入式系统开发中的常见任务。通过理解HEX文件格式和合并逻辑,可以轻松实现HEX文件的合并。本文提供了一个基于Rust的简单实现,并讨论了处理复杂场景的方法。希望本文能帮助你更好地理解和处理HEX文件!rust库中有一个crate,用于开发中的合并情形基本够用,ihex-merge。这是个命令行工具,编译后只有 ~700KB,可以直接使用。注意,这个工具不支持段冲突的合并。后台回复ihex可以获取Windows二进制文件。公众号 | FunIO。

2025-03-11 10:36:14 1016

原创 深入解析Intel HEX文件格式

Intel HEX文件格式是一种将二进制数据转换为ASCII文本的格式,适用于8位、16位和32位微处理器。它的主要优点是可以将二进制数据存储在非二进制介质(如纸带、穿孔卡片)上,并且可以通过CRT终端或行式打印机显示。ASCII表示:每个字节的二进制值被转换为两个ASCII字符。例如,二进制值00111111(十六进制3F)被表示为ASCII字符'3'和'F'。记录结构:HEX文件由多个记录组成,每个记录包含记录类型、长度、地址、数据和校验和。

2025-03-11 10:35:12 1528

原创 嵌入式系统中的状态机模式

并发模式主要关注如何管理多个任务的并行执行,旨在提高系统的响应速度和资源利用率。线程池模式(Thread Pool Pattern)互斥锁模式(Mutex Pattern)生产者-消费者模式(Producer-Consumer Pattern)信号量模式(Semaphore Pattern)这些模式通过不同的方式组织任务的并行执行,解决了嵌入式系统中常见的资源竞争、任务调度等问题。线程池模式通过创建和管理一组线程来执行任务,避免了频繁创建和销毁线程的开销。线程池模式可以提高系统的性能和资源利用率。

2025-03-04 09:40:15 767

原创 嵌入式系统中的并发模式

并发模式主要关注如何管理多个任务的并行执行,旨在提高系统的响应速度和资源利用率。线程池模式(Thread Pool Pattern)互斥锁模式(Mutex Pattern)生产者-消费者模式(Producer-Consumer Pattern)信号量模式(Semaphore Pattern)这些模式通过不同的方式组织任务的并行执行,解决了嵌入式系统中常见的资源竞争、任务调度等问题。线程池模式通过创建和管理一组线程来执行任务,避免了频繁创建和销毁线程的开销。线程池模式可以提高系统的性能和资源利用率。

2025-03-04 09:39:09 786

原创 嵌入式软件开发中的行为型模式

行为型模式主要关注对象之间的通信和职责分配,旨在提高系统的灵活性和可维护性。策略模式(Strategy Pattern)观察者模式(Observer Pattern)命令模式(Command Pattern)状态模式(State Pattern)责任链模式(Chain of Responsibility Pattern)这些模式通过不同的方式组织对象之间的交互,解决了嵌入式系统中常见的控制流复杂、代码耦合度高等问题。策略模式定义了一系列算法,并将每个算法封装起来,使它们可以互换。

2025-01-21 10:00:36 970

原创 敏捷在嵌入式软件开发中的应用

以上案例和描述表明,敏捷方法可以在嵌入式软件开发中取得成功。关键在于根据具体的项目特点和约束条件,选择合适的敏捷实践和工具,并结合嵌入式开发的特点进行调整。例如,需要更加重视硬件集成和测试、安全性、可靠性和实时性等方面。虽然公开的详细案例不多,但越来越多的公司开始尝试将敏捷方法应用到嵌入式软件开发中,并取得了积极的效果。随着相关技术和工具的不断发展,相信敏捷在嵌入式领域将会得到更广泛的应用。

2025-01-21 09:59:12 1053

原创 嵌入式系统软件设计模式:结构型模式

在嵌入式软件设计中,结构型模式扮演着至关重要的角色,它主要描述的是如何将类或对象按特定的布局组成更大的结构,以此来满足复杂的软件设计需求。简单来说,就是如同搭建积木一般,把不同的类或者对象当作积木块,按照一定的规则和方式组合在一起,构建出功能更强大、结构更完善的软件架构。这些模式可以帮助开发者更好地组织代码,提高软件的可维护性、可扩展性以及复用性。

2025-01-14 10:00:08 1179

原创 嵌入式软件开发:原型模式和建造者模式

原型模式是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类来创建对象。原型模式适用于创建对象成本较高或复杂的场景,通过复制现有对象可以提高效率。建造者模式是一种创建型设计模式,它通过一步一步地构建复杂对象,将对象的构建过程与表示分离。建造者模式适用于创建复杂对象的场景,通过将对象的构建过程封装在建造者类中,可以更灵活地创建对象。原型模式和建造者模式在嵌入式软件开发中有着广泛的应用。原型模式通过复制现有对象来创建新对象,适用于创建对象成本较高或复杂的场景。

2025-01-14 09:59:13 601

原创 拆个墨水屏

之前萌生了一个用墨水屏做anki卡片的想法,搜了一下,发现有很多价签尾货在卖,于是买来拆开看看。

2025-01-09 16:43:29 1605

原创 我的创作纪念日

其次,我在平台上结识了许多志同道合的领域同行,我们互相交流技术心得,分享项目经验,共同探讨行业发展趋势。通过与他们的交流,我拓宽了视野,也获得了许多新的灵感和思路,使我在技术上不断成长和进步。我相信,通过不断的努力和坚持,我能够在技术创作的道路上走得更远,为技术社区做出更大的贡献。同时,我也计划学习更多的相关技术,如物联网、人工智能等,拓宽自己的技术边界,为未来的职业发展打下坚实的基础。

2025-01-09 09:54:27 443

原创 嵌入式系统软件开发:工厂模式的应用与分析

简单工厂模式:通过一个工厂类来创建不同类型的对象。工厂方法模式:定义一个用于创建对象的接口,但由子类决定实例化哪个类。抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这些模式在嵌入式软件开发中非常有用,可以帮助我们创建不同类型的对象,减少代码耦合,提高代码的可维护性和扩展性。公众号 | FunIO微信搜一搜 “funio”,发现更多精彩内容。个人博客 |

2025-01-06 10:57:27 835

Altium Designer教程

一个非常不错的AD9教程!其中包括工程应用的很多功能。

2011-11-29

Verilog编程指南

有ZLG公司翻译的国外Verilog语言编程指南,很不错的资料!

2011-11-29

AD/DA基础知识

这是一篇讲解模数/数模转换设计很好的文章。

2012-03-18

LED灯管驱动电源方案PCB电路

晶丰明源 BP2309 PCB SCH 原理图

2022-10-15

altium designer简明教程

altium designer 简明 教程 快速入门

2022-08-28

TI官方SBL烧写工具

用于TI低功耗蓝牙芯片CC2540/CC2541的SBL烧写工具。

2014-08-10

最好的20个源码下载网站

最好的20个源码下载网站··· top20···

2010-05-03

C语言编译环境 WinTC1.91

一个很精简的C语言编译环境,界面简洁,非常适合初学者。

2011-09-03

TI BLE协议栈

ti官方低功耗蓝牙4.0协议栈,1.4版本,留此备用。

2014-08-10

2009年NUEDC优秀论文

这是我找到的2009年全国大学生电子设计竞赛优秀论文,大家分享。

2011-09-03

空空如也

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

TA关注的人

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