如何读懂单片机程序

合集下载

g代码 单片机解析

g代码 单片机解析

g代码单片机解析单片机是一种集成电路,可用于控制各种电子设备和系统。

它具有小巧、低功耗、高性能等特点,广泛应用于家电、汽车、通信等领域。

下面我将以人类的视角,为大家介绍一下单片机的解析过程。

我们需要了解单片机的基本结构。

单片机主要由中央处理器(CPU)、存储器、输入输出(IO)口以及各种外设组成。

中央处理器是单片机的核心,负责执行指令和控制系统的运行。

存储器用于存储程序和数据,其中程序存储器用于存放程序代码,数据存储器用于存放输入、输出和中间结果等数据。

输入输出口用于与外部设备进行数据交互,比如接收传感器信号、控制电机运动等。

在单片机解析过程中,我们首先需要编写程序代码。

通过编程语言(如C语言)编写程序代码,然后将代码烧录到单片机的存储器中。

代码中包含了系统的逻辑和功能,通过执行代码,单片机可以实现各种任务和功能。

接下来,我们需要对单片机进行初始化设置。

初始化设置包括设置时钟频率、IO口的输入输出模式、中断优先级等。

这些设置会影响单片机的运行速度和功能。

通过合理设置这些参数,可以使单片机能够更好地适应实际应用需求。

然后,单片机开始执行程序。

程序代码中的指令会被逐条执行,从而实现相应的功能。

在执行过程中,单片机会不断读取输入数据,处理数据,并将结果输出给外部设备。

这样,单片机就可以实现各种控制和计算任务。

在单片机解析过程中,我们还可以通过调试工具对单片机进行调试和监控。

调试工具可以实时查看单片机的运行状态、寄存器的值以及程序的执行过程,帮助我们分析和解决问题。

总的来说,单片机的解析过程包括编写程序、初始化设置、程序执行和调试等步骤。

通过合理地设计和编写程序,我们可以充分发挥单片机的功能,实现各种应用需求。

单片机的解析过程需要一定的技术和经验,但只要我们认真学习和实践,就可以掌握这个技能,为实际应用提供有效的解决方案。

单片机说明书

单片机说明书

单片机说明书一、引言单片机是一种集成电路,它集成了处理器、存储器和各种输入输出接口等功能,广泛应用于各个领域。

本说明书将介绍单片机的基本原理、使用方法以及常见问题的解答,以帮助用户更好地理解和使用单片机。

二、基本原理1. 单片机的组成单片机由中央处理器(CPU)、存储器、输入输出接口等组成。

其中,CPU负责执行指令,存储器用于存储程序和数据,输入输出接口用于与外部设备进行通信。

2. 单片机的工作原理单片机通过执行存储在存储器中的程序指令来完成各种任务。

程序指令由CPU逐条执行,根据指令的要求,通过输入输出接口与外部设备进行数据的输入和输出。

三、使用方法1. 单片机的编程单片机的编程可以使用汇编语言或高级语言(如C语言)进行。

编程的目的是根据具体需求编写程序指令,控制单片机的运行。

2. 单片机的调试在编程完成后,需要将程序下载到单片机中进行调试。

调试过程中,可以通过调试工具(如仿真器)监测单片机的运行状态,以便及时发现并解决问题。

3. 单片机的应用单片机广泛应用于各个领域,如家电、汽车、电子设备等。

通过编写程序指令,单片机可以实现各种功能,如控制电器开关、采集传感器数据、驱动电机等。

四、常见问题解答1. 如何选择适合的单片机?选择单片机需要考虑应用场景、性能要求、接口需求等因素。

可以根据具体需求和厂商提供的技术资料进行选择。

2. 如何解决单片机程序调试中的问题?在程序调试过程中,可能会遇到程序运行不正常或出现错误的情况。

可以通过逐步调试、添加调试输出等方法来找出问题所在,并进行修复。

3. 如何优化单片机程序的性能?优化单片机程序的性能可以从多个方面入手,如减少指令数量、合理利用存储器、优化算法等。

可以根据具体情况选择合适的优化方法。

五、总结通过本说明书,我们了解了单片机的基本原理、使用方法以及常见问题的解答。

希望本说明书能够帮助用户更好地理解和使用单片机,实现各种应用需求。

如果您还有其他问题,可以参考附带的技术资料或联系厂商获取更多支持。

如何读懂单片机程序

如何读懂单片机程序

如何读懂单片机程序这是一篇关于单片机入门的基础文章!刚刚接触单片机的朋友,简直是无从下手,打开一个程序,更会被复杂的结构和密密麻麻的代码吓倒!多么想找个人耐心的指导一下,是你们内心的强烈意识!好吧,我来满足你!我对单片机的总结:“单片机其实就是一个芯片,内部有若干寄存器,外部有若干引脚,我们可以通过程序控制内部的寄存器使得引脚与外部世界保持联系!”就这几句话,道出了单片机的真谛!有没有感觉到单片机是多么的简单!1.单片机程序执行流程这是我们首先必须要知道的。

单片机程序一般就有两种,一种是汇编程序,一种是c语言程序。

这里我们讲c语言程序。

单片机程序都有一个包含主函数的文件,包含主函数的文件都有一个统一的结构,如下所示:#include ""int main() ....; ....;while(1) ....; ....;}}重点:单片机一上电,从主函数main的第一条语句开始执行,是一条语句接着一条语句从上而下执行,直到进入while后,再从while的第一条语句执行到最后一条语句,由于是死循环,会再从while的第一条语句执行到最后一条语句,如此反复执行,永不停止!直到断电!这些语句当中,有些是函数的调用,遇到函数的调用,进入到函数,再从函数的第一条语句执行到最后一条语句,然后跳出函数,再从刚才主函数中那条函数的下一条语句开始执行。

如果实在搞不明白函数是怎么一回事,你可以用函数里面的所有语句代替函数在主函数中的位置。

例如:#include ""#define LED1_ON LPC_GPIO1->DATA &= ~(1<<0)#define LED1_OFF LPC_GPIO1->DATA |= (1<<0)#define LED2_ON LPC_GPIO1->DATA &= ~(1<<1)#define LED2_OFF LPC_GPIO1->DATA |= (1<<1)/***********************************//* 延时函数 *//***********************************/void delay(){uint16_t i,j;for(i=0;i<5000;i++)for(j=0;j<200;j++);}/***********************************//* LED初始化函数 *//***********************************/void led_init(){LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);LPC_IOCON->R_PIO1_0 &= ~0x07;LPC_IOCON->R_PIO1_0 |= 0x01;LPC_IOCON->R_PIO1_1 &= ~0x07;LPC_IOCON->R_PIO1_1 |= 0x01;LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16);LPC_GPIO1->DIR |= (1<<0);LPC_GPIO1->DATA |= (1<<0);LPC_GPIO1->DIR |= (1<<1);LPC_GPIO1->DATA |= (1<<1);}/***********************************//* 主函数 *//***********************************/int main(){led_init();while(1){delay();LED1_ON;LED2_OFF;delay();LED1_OFF;LED2_ON;}}上面这个例子中,单片机一上电,会执行主函数的第一条语句,也就是led_init(),这个是一个函数的调用语句,程序会从led_init函数中的第一条语句开始执行,直到执行完最后一条语句后,回到主函数,进入while,从while 的第一条语句delay()开始执行,delay()又是一个函数,程序会从delay()的第一条语句开始执行,delay()函数中有两个for循环,执行完for循环后,就跳出delay()函数,执行LED1_ON,由于LED1_ON是个用#define定义的宏定义,由c语言基础知识之#define宏定义篇,我们知道,LED1_ON就是LPC_GPIO1->DATA &= ~(1<<0),如此继续执行下去……。

mplab ipe 读单片机程序

mplab ipe 读单片机程序

MPLAB IPE 读单片机程序在嵌入式系统的开发过程中,单片机程序的编写和调试是非常重要的一环。

而MPLAB IPE作为Microchip官方的一款集成开发环境,能够提供给开发者一个方便快捷的调试工具。

今天,我们就来探讨一下MPLAB IPE在读取单片机程序方面的应用。

1. MPLAB IPE是什么MPLAB IPE全称Microchip PIC32MX Integrated Programming Environment,是Microchip官方提供的一款适用于PIC单片机的集成开发环境。

作为Microchip的一款强大且易用的工具,MPLAB IPE 主要用于单片机程序的编程、调试和测试。

它支持多种编程工具和单片机芯片,可以满足不同开发需求。

2. MPLAB IPE的功能MPLAB IPE作为一款集成的编程工具,其功能十分强大。

它可以实现程序的下载、调试和检测,并能够与MPLAB X IDE等开发环境进行无缝连接。

MPLAB IPE还支持多种编程方式,包括ICSP、ISP、JTAG 等,能够满足各种不同的单片机编程需求。

MPLAB IPE还支持自动识别连接的编程工具和目标芯片,使得整个编程过程更加便捷和高效。

3. 如何使用MPLAB IPE读取单片机程序在使用MPLAB IPE读取单片机程序时,首先需要将单片机与编程工具(如MPLAB Real ICE、PICkit)连接到计算机上,然后打开MPLAB IPE软件。

选择目标芯片和编程工具,并加载需要读取的程序。

在设置好编程工具和目标芯片之后,点击“Read”按钮,MPLAB IPE将会自动读取目标芯片中的程序,并在界面上显示出读取的结果。

通过这种简单而直观的操作,开发者可以轻松地读取单片机程序,并进行后续的调试和测试。

4. 我对MPLAB IPE的个人观点和理解作为一名嵌入式系统的开发者,我对MPLAB IPE有着较为深刻的理解和实际应用经验。

单片机读取程序的方法

单片机读取程序的方法

单片机读取程序的方法嘿,朋友们!今天咱就来唠唠单片机读取程序的那些事儿。

单片机这玩意儿啊,就像是一个聪明的小脑袋瓜,它要读取程序才能发挥大作用呢!想象一下,这单片机就好比是一个空荡荡的舞台,程序呢,就是那精彩绝伦的表演。

没有表演的舞台多无趣呀,所以得让程序在单片机这个舞台上闪亮登场。

那怎么让程序进入单片机呢?首先,咱得有合适的工具。

就像你要给汽车加油得有个油管一样,读取程序也得有专门的设备。

这些设备就像是打开单片机智慧大门的钥匙。

然后呢,你得找到程序的源头。

就跟找水源似的,得知道它在哪儿。

这程序可能存在于电脑里,或者是其他的存储设备中。

找到它,就像是找到了宝藏的线索。

接下来,把程序通过那些神奇的工具,一点点地传送到单片机里。

这过程就好像是在搭建一座桥,让程序从这边走到单片机那边。

在这个过程中,可不能马虎大意哦!就好比你走路得看清楚路,不然摔个跟头可不好玩。

要仔细检查每个步骤,确保程序能顺顺利利地进入单片机。

你说这单片机读取程序是不是很有意思?就像是一场小小的冒险。

有时候可能会遇到一些小麻烦,比如连接不顺畅啦,程序不兼容啦,但别着急,办法总比困难多嘛!而且啊,不同类型的单片机读取程序的方法还不太一样呢!就像不同的人有不同的性格和喜好一样。

有的可能简单直接,有的可能稍微复杂一点,但只要你有耐心,都能搞定。

你想想看,如果单片机不能读取程序,那它不就成了个摆设啦?就像一部没有电的手机,啥也干不了。

所以说呀,学会这个方法可太重要啦!咱再打个比方,单片机读取程序就像是给它注入了灵魂。

有了灵魂的单片机才能活力满满地工作呀!它可以控制各种设备,让它们按照我们的意愿来运行。

总之呢,单片机读取程序虽然听起来有点复杂,但只要你用心去学,去尝试,肯定能掌握的。

别害怕犯错,每一次的尝试都是成长的机会呀!加油吧,朋友们,让我们一起在单片机的世界里畅游,让它为我们创造更多的精彩!怎么样,是不是觉得很有趣呢?快去试试吧!。

单片机程序架构详解篇

单片机程序架构详解篇

单片机程序架构详解一、前言单片机,也称为微控制器(Microcontroller),是将计算机的体系结构集成到一个芯片上的微型计算机。

由于其体积小、成本低、可靠性高等特点,单片机在工业控制、智能仪表、家用电器等领域得到了广泛应用。

了解单片机的程序架构是编写和优化单片机程序的关键。

二、单片机程序架构概述单片机的程序架构主要由以下几个部分组成:1. 硬件抽象层(HAL):这一层为上层软件提供了一个与硬件无关的接口,使得软件可以独立于硬件进行开发和运行。

HAL层通常包括对单片机各种外设(如GPIO、UART、SPI、PWM等)的操作函数。

2. 系统服务层:这一层提供了系统级的各种服务,如任务调度、内存管理、时间管理等。

这些服务使得上层应用程序可以更加专注于业务逻辑的实现。

3. 应用层:这是最上层,直接面向用户,包含了各种应用程序的逻辑代码。

三、各层详解1. 硬件抽象层(HAL)硬件抽象层(HAL)是单片机程序架构中非常重要的一层,其主要目标是使得硬件相关的操作与具体的硬件实现无关。

这样,当硬件平台发生变化时,只要HAL层设计得当,上层代码就不需要改变。

HAL层通常包括以下内容:* 各种外设寄存器的操作函数:例如,GPIO的输入输出函数、UART的发送接收函数等。

这些函数隐藏了具体的寄存器操作细节,使得开发者只需要关注功能实现而不需要关心底层寄存器的操作。

* 硬件初始化函数:用于在系统启动时对单片机进行初始化,如配置时钟、启动看门狗等。

* 中断处理函数:用于处理单片机的各种中断事件,如定时器溢出、串口接收等。

2. 系统服务层系统服务层提供了单片机操作系统所需的各种服务,如任务调度、内存管理、时间管理等。

这些服务使得上层应用程序可以更加专注于业务逻辑的实现。

以下是一些常见的系统服务:* 任务调度:多任务环境下,任务调度器负责分配CPU时间给各个任务,使得各个任务能够按需运行。

* 内存管理:负责动态内存的分配和释放,如堆和栈的管理。

怎么看单片机原理图

怎么看单片机原理图

怎么看单片机原理图
要看单片机原理图中的内容而不包含标题,可以按照以下方法进行:
1. 先忽略标题,只关注图中的符号和连接线。

单片机原理图中通常使用特定的符号表示不同的元件和部件,如晶体管、电容器、电阻器等。

查阅相关资料或者手册,了解这些符号的含义。

2. 根据符号和连接线的位置和排列,分析各个元件之间的关系。

通过阅读图中的连接线,了解各部件之间的连接方式和信号传输路径。

3. 根据阅读资料或者手册中的介绍,了解单片机原理图中各个元件的具体作用和功能。

这样能够更好地理解整个原理图的设计意图。

4. 若有困难,可以查阅相关的资料或者和同行交流讨论,寻求帮助和指导。

需要注意的是,标题通常会提供重要的信息,例如该部分的功能、参数等,因此忽略标题可能会导致读者对于部分内容的理解和解释存在偏差。

因此,在解读单片机原理图时,最好的方式还是综合考虑标题和图中的内容,以达到更全面和准确的理解。

单片机教案汇编语言程序设计

单片机教案汇编语言程序设计

单片机教案汇编语言程序设计一、引言单片机是一种小型集成电路芯片,具有独立完成特定任务的能力。

而汇编语言是一种低级程序设计语言,能够直接操作硬件资源。

本教案旨在介绍单片机的程序设计,重点讲解汇编语言的基本概念和编程技巧,帮助学习者掌握单片机的应用。

二、单片机基础知识在开始学习汇编语言程序设计之前,需要对单片机的基础知识有所了解。

主要包括单片机的结构、寄存器的作用、IO口的应用等内容。

通过对这些基础知识的学习,能够更好地理解汇编语言的工作原理和编程思路。

三、汇编语言概述汇编语言是一种使用助记符来表示机器指令的低级程序设计语言。

相对于其他高级语言,汇编语言更接近硬件层面,可直接操控单片机的寄存器和IO口。

本节将介绍汇编语言的基本概念、语法规则和常用指令集,帮助学习者熟悉汇编语言的编写方式。

四、单片机编程环境搭建在进行汇编语言程序设计前,需要搭建相应的开发环境。

常用的单片机开发工具包括Keil、IAR等。

本节将以Keil为例,介绍如何配置和使用开发工具,以及如何将程序下载到单片机中进行调试。

五、第一个汇编程序本节将以一个简单的LED闪烁程序为例,介绍如何使用汇编语言编写单片机程序。

通过对程序的分析和调试,学习者能够理解汇编语言的基本结构和编程过程,并且能够独立完成简单的单片机程序设计。

六、汇编语言编程技巧除了掌握基本的汇编语言知识外,还需要掌握一些编程技巧,以提高程序的效率和稳定性。

本节将介绍一些常用的汇编语言编程技巧,包括循环、条件判断、子程序调用等,帮助学习者编写更加复杂和实用的单片机程序。

七、实例分析本节将通过几个实例,分析并介绍实际应用中的单片机程序设计方法。

例如,如何控制电机的转动方向和速度、如何读取温湿度传感器的数据等。

通过这些实例的分析,学习者能够将所学的知识应用到实际项目中,并且能够更好地理解和解决实际问题。

八、实验设计在本教案的最后,将提供几个实验项目作为实践环节,帮助学习者巩固所学的知识和技能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何读懂单片机程序
这是一篇关于单片机入门的基础文章!刚刚接触单片机的朋友,简直是无从下手,打开一个程序,更会被复杂的结构和密密麻麻的代码吓倒!多么想找个人耐心的指导一下,是你们内心的强烈意识!好吧,我来满足你!
我对单片机的总结:“单片机其实就是一个芯片,内部有若干寄存器,外部有若干引脚,我们可以通过程序控制内部的寄存器使得引脚与外部世界保持联系!”就这几句话,道出了单片机的真谛!有没有感觉到单片机是多么的简单!
1.单片机程序执行流程
这是我们首先必须要知道的。

单片机程序一般就有两种,一种是汇编程序,一种是c语言程序。

这里我们讲c语言程序。

单片机程序都有一个包含主函数的文件,包含主函数的文件都有一个统一的结构,如下所示:
#include "xxx.h"
int main() // 这是主函数的函数名
{
......; // 若干条语句
......;
while(1) // while括号中是1,说明程序进入后将在while里面无线循环,不会出来了,不懂的去看c语言基础之while篇
{
......; // 若干条语句
......;
}
}
重点:单片机一上电,从主函数main的第一条语句开始执行,是一条语句接着一条语句从上而下执行,直到进入while后,再从while的第一条语句执行到最后一条语句,由于是死循环,会再从while的第一条语句执行到最后一条语句,如此反复执行,永不停止!直到断电!
这些语句当中,有些是函数的调用,遇到函数的调用,进入到函数,再从函数的第一条语句执行到最后一条语句,然后跳出函数,再从刚才主函数中那条函数的下一条语句开始执行。

如果实在搞不明白函数是怎么一回事,你可以用函数里面的所有语句代替函数在主函数中的位置。

例如:
#include "LPC11XX.H"
#define LED1_ON LPC_GPIO1->DATA &= ~(1<<0) #define LED1_OFF LPC_GPIO1->DATA |= (1<<0) #define LED2_ON LPC_GPIO1->DATA &= ~(1<<1) #define LED2_OFF LPC_GPIO1->DATA |= (1<<1) /***********************************/
/* 延时函数 */
/***********************************/
void delay()
{
uint16_t i,j;
for(i=0;i<5000;i++)
for(j=0;j<200;j++);
}
/***********************************/
/* LED初始化函数 */
/***********************************/
void led_init()
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);
LPC_IOCON->R_PIO1_0 &= ~0x07;
LPC_IOCON->R_PIO1_0 |= 0x01;
LPC_IOCON->R_PIO1_1 &= ~0x07;
LPC_IOCON->R_PIO1_1 |= 0x01;
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16);
LPC_GPIO1->DIR |= (1<<0);
LPC_GPIO1->DATA |= (1<<0);
LPC_GPIO1->DIR |= (1<<1);
LPC_GPIO1->DATA |= (1<<1);
}
/***********************************/
/* 主函数 */
/***********************************/
int main()
{
led_init();
while(1)
{
delay();
LED1_ON;
LED2_OFF;
delay();
LED1_OFF;
LED2_ON;
}
}
上面这个例子中,单片机一上电,会执行主函数的第一条语句,也就是
led_init(),这个是一个函数的调用语句,程序会从led_init函数中的第一条语句开始执行,直到执行完最后一条语句后,回到主函数,进入while,从while 的第一条语句delay()开始执行,delay()又是一个函数,程序会从delay()的第一条语句开始执行,delay()函数中有两个for循环,执行完for循环后,就跳出delay()函数,执行LED1_ON,由于LED1_ON是个用#define定义的宏定义,由c语言基础知识之#define宏定义篇,我们知道,LED1_ON就是
LPC_GPIO1->DATA &= ~(1<<0),如此继续执行下去……。

如果不用define宏定义,也不用函数,上面的例子就可以写为如下形式:
#include "LPC11XX.H"
/***********************************/
/* 主函数 */
/***********************************/
int main()
{
//LED初始化
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);
LPC_IOCON->R_PIO1_0 &= ~0x07;
LPC_IOCON->R_PIO1_0 |= 0x01;
LPC_IOCON->R_PIO1_1 &= ~0x07;
LPC_IOCON->R_PIO1_1 |= 0x01;
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16);
LPC_GPIO1->DIR |= (1<<0);
LPC_GPIO1->DATA |= (1<<0);
LPC_GPIO1->DIR |= (1<<1);
LPC_GPIO1->DATA |= (1<<1);
while(1)
{
for(i=0;i<5000;i++)
for(j=0;j<200;j++);
LPC_GPIO1->DATA &= ~(1<<0);
LPC_GPIO1->DATA |= (1<<1);
for(i=0;i<5000;i++)
for(j=0;j<200;j++);
LPC_GPIO1->DATA |= (1<<0);
LPC_GPIO1->DATA &= ~(1<<1);
}
}
有没有发现,第二种表示方法,虽然不涉及函数和宏定义了,对于c语言掌握不是很好的人来说,看的比较爽。

如果你掌握了c语言的这些宏定义和函数的小技巧,第一种表示方法是不是更有利于阅读程序的功能呢?
2.读懂程序需要c语言基础知识,当然,也可以边看程序,边学习c语言基础知识。

3.读懂程序需要会看单片机的寄存器定义,在程序中,大都是在给单片机的寄存器进行配置或是获取单片机寄存器的数据。

看哪种单片机程序,就要学会看哪种单片机的寄存器定义。

知道了寄存器的定义,就知道如何配置寄存器或是获取的寄存器数据代表的意义了。

例如我们要看LPC1114的程序,那么LPC1114的用户手册是必须要打开的。

例如LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);这条语句,就是在给SYSCON模块中的SYSAHBCLKCTRL寄存器进行配置,所以我们要找到这个寄存器的定义。

首先,打开用户手册,找到SYSCON这一章,然后找到寄存器描述这一节,就可以找到这个寄存器的定义了。

至于(|=(1<<16))这些,都是写基本的逻辑运算,也是些c 语言的基础知识而已。

例如(|=(1<<16)) 这个就是把1左移16个位,然后把左移后的数据与SYSAHBCLKCTRL寄存器进行或运算,运算后的结果再放入SYSAHBCLKCTRL寄存器当中。

1左移16个位,就是bit16为1,其它位为0。

与寄存器SYSAHBCLKCTRL进行或运算,我们不管这个寄存器原来的值是多少,我们现在只知道,1或任何数,都等于1;0或任何数,都等于任何数。

所以,1左移16位后,再与寄存器进行或运算,实际上是把寄存器的bit16置1,剩下的位原来是多少,还是多少。

(常有人问我,怎么判断自己适不适合学单片机,现在我告诉你,你能把这些“或”“与”“非”“进制转换”搞清楚,就可以,如果这些搞不清楚,就不要学了,同学,单片机不适合你)。

4.总结
看一个程序,实质上就是把自己的大脑当成单片机运行程序而已。

我是瑞生,毫无保留的给大家透露电子设计经验,不定时分享实用的落地的电子设计技巧,希望能够帮助到大家。

熟话说:“独受益,不如众受益”,请把此文分享出去,让更多的人看到,谢谢!。

相关文档
最新文档