基于STM32和uC-OS-II的多任务设计-嵌入式系统课程设计报告_第1页
基于STM32和uC-OS-II的多任务设计-嵌入式系统课程设计报告_第2页
基于STM32和uC-OS-II的多任务设计-嵌入式系统课程设计报告_第3页
基于STM32和uC-OS-II的多任务设计-嵌入式系统课程设计报告_第4页
基于STM32和uC-OS-II的多任务设计-嵌入式系统课程设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统课程设计报告PAGE15-NORTHCHINAUNIVERSITYOFSCIENCEANDTECHNOLOGY嵌入式系统课程设计报告学生姓名:学 号:学 院: 专业班级:指导教师:同组成员:2016年 12 月 26日

一、课程设计目的本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。二、设计题目及要求2.1设计题目:基于STM32和uC/OS-II的多任务设计2.2功能实现:使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。2.3设计要求:理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。四个任务分别为:(1)驱动1个LED指示灯闪烁、(2)由3个LED指示灯组成流水灯(3)驱动蜂鸣器发出响声。(4)利用swd方式进行printf输出。三、设计原理说明3.1硬件说明本次课程设计主要使用的是STM32神舟IV号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。(1)开发板资源图(2)MCU开发板的处理器是STM32F107VCT6,该处理器基于ARMV7架构的Cortex-M3内核,主频72Mhz,内部含有256K字节的FLASH和64K字节的SRAM,LQFP100封装。(3)蜂鸣器开发板板载一个无源蜂鸣器,用于产品告警或声音提醒。蜂鸣器连接到了处理器的PA3管脚,当处理器的PA3管脚输出低电平时蜂鸣器开始鸣响,反之处理器的PA3管脚输出高电平时蜂鸣器停止鸣响.(4)指示灯开发板提供了1个电源指示灯和4路通用LED指示灯。电源指示灯指示3.3V电源是否正常。4路通用LED指示灯可以用于指示STM32开发板的状态。用户LED指示灯由GPIO管脚控制LED灯的亮灭,当GPIO管脚输出低电平时,LED指示灯亮。反之,当GPIO管脚输出高电平时,LED指示灯灭。这四个LED指示灯分别由PD2、PD3、PD4和PD7控制。(5)JTAG仿真调试开发板提供标准的20针JTAG接口,可以直接和JLINKV8仿真器连接,下载程序,调试仿真;(6)晶振电路STM32F107内部已经包含了8MHz高速内部RC振荡电路,但是其精准度不是很高;为此在外部增加了25MHz的晶振电路,为系统的可靠工作提供时序基准。(7)设计中用到的管脚芯片引脚开发板模块PD2LED1PD3LED2PD4LED3PD7LED4PA3蜂鸣器3.2STM32寄存器使用说明设计中,只用到时钟和GPIO相关的寄存器。(1)STM32F107VC中共有80个GPIO,分成A、B、C、D、E五个组,每组有13-16个可用的I/O端口,每个GPIO可以自由编程。通过各个寄存器来控制GPIO输出高电平或者是低电平。每个GPIO有7个寄存器来控制,其中CRL和CRH用来确定I/O管脚的方向和速率以及何种驱动方式,BSRR可直接修改某一个CPIO引脚的高低电平,BRR可将GPIO置零。(2)在使用配置GPIO寄存器之前,都要先配置GPIO的时钟。通过RCC寄存器当中的CR、CFGR和CIR来设置系统时钟。GPIO挂在APB2总线上,可对APB2ENR寄存器设置来确定所用到的GPIO时钟。(3)μC/OS-II用Cortex-M3的SysTick定时器产生操作系统需要的滴答时钟,作为整个系统的根基。SysTick定时器的四个寄存器SysTick_CTRL、SysTick_LOAD、SysTick_VAL、SysTick_CALIB控制每隔一定时间产生一个中断使μC/OS-II系统能进行多任务控制。(3)用到的寄存器:CRL、CRH、BRR、BSRR、CR、CFGR、CIR、APB2ENR、SysTICK_CTRL、SysTICK_LOAD、SysTICK_VAL、SysTICK_CALIB3.3STM32库函数使用说明设计中只用到时钟和GPIO相关的库函数。(1)直接配置寄存器开发,如果代码比较庞大,可读性差。ST针对STM32封装好一个软件封装库,开发者可调用函数接口(API,ApplicationProgramInterface)来完成相应的开发工作,配置寄存器的工作由接口函数完成,使开发人员脱离最底层的寄存器操作,易于阅读,维护成本低。库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。库开发方式与直接配置寄存器的方式的区别:(2)库目录和文件简介Libraries文件夹下是驱动库的源代码及启动文件。在使用库开发时,需要把libraries目录下的相关库函数文件添加到工程中。进入Libraries文件夹看到,关于内核与外设的库文件分别存放在CMSIS和STM32F10x_StdPeriph_Driver文件夹中。CMSIS(CortexMicrocontrollerSoftwareInterfaceStandard):ARM将所有Cortex芯片厂商的产品的软件接口标准化,制定了CMSIS标准。CMSIS层起着承上启下的作用,一方面该层对硬件寄存器层进行了统一的实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义,另一方面又向上层的操作系统和应用层提供接口,简化了应用程序开发的难度。Libraries\CMSIS\CM3文件夹下又分为CoreSupport和DeviceSupport文件夹。在CoreSupport中的是M3核通用的源文件core_cm3.c和头文件core_cm3.h,作用是为采用Cortex-M3核设计SOC的芯片商设计的芯片外设提供一个进入M3内核的接口。这两个文件在其它公司的Cortex-M3系列芯片也是相同的。我们只需把这个文件加进我们的工程文件即可。在DeviceSupport文件夹下的是启动文件、外设寄存器定义&中断向量定义层的一些文件,由ST公司提供。system_stm32f10x.c文件的功能是设置系统时钟和总线时钟,该文件中包含了stm32f10x.h这个头文件。启动文件要选择startup_stm32f10x_cl.s。系统启动文件由汇编编写,不同的文件对应不同的芯片型号。启动文件是任何处理器在上电复位之后最先运行的一段汇编程序。在我们编写的c语言代码运行之前,需要由汇编为c语言的运行建立一个合适的环境,接下来才能运行我们的程序。所以我们也要把启动文件添加进我们的的工程中去,其作用相当于bootloader。STM32F10x_StdPeriph_Driver:该文件夹下有inc和src两个文件夹,都属于CMSIS的设备外设函数部分。src里面是每个设备外设的驱动程序。src和inc文件夹里的就是ST公司针对每个STM32外设而编写的库函数文件,每个外设对应一个.c和.h后缀的文件。我们把这类外设文件统称为:stm32f10x_ppp.c或stm32f10x_ppp.h文件,ppp表示外设名称。如针对GPIO外设,在src文件夹下有一个stm32f10x_gpio.c源文件,在inc文件夹下有一个stm32f10x_gpio.h头文件,设计中用到了STM32的GPIO,则至少要把这两个文件包含到工程里。这两个文件夹中,还有一个很特别的misc.c文件,这个文件提供了外设对内核中的NVIC(中断向量控制器)的访问函数,在配置中断时,我们必须把这个文件添加到工程中。在用库建立一个完整的工程时,还需要添加user目录下的stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h这三个文件。stm32f10x_it.c用来编写中断服务函数;stm32f10x_conf.h用来配置使用了什么外设的头文件,用这个头文件我们可以很方便地增加或删除外设驱动函数库。库文件直接包含进工程即可,丝毫不用修改,而有的文件就要我们在使用的时候根据具体的需要进行配置。(3)用到的库函数:SystemInit、RCC_APB2PeriphClockCmd、SysTick_Config、GPIO_Init、GPIO_SetBits、GPIO_ResetBits。3.4uC/OS-II任务管理函数使用说明设计中用到的任务管理函数包括任务堆栈的建立、任务的创建和uC/OS-II的初始化和任务的启动。(1)UCOSII的前身是UCOS,最早出自于1992年美国嵌入式系统专家JeanJ.Labrosse把UCOS的源码发布在BBS上。目前最新的版本是UCOSIII,但是现在使用最为广泛的还是UCOSII。UCOSII是一个可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。UCOSII(V2.91版本)体系结构如下图所示:(2)uC/OS-II操作系统内核的主要工作就是对任务进行管理和调度,任务的执行代码通常是一个无限循环结构。从程序设计的角度来看,一个uC/OS-II任务的代码就是一个C语言函数,任务的参数是一个void类型的指针,但是这些函数是由主函数main()来负责创建和启动,然后由操作系统负责调度和运行,而不是调用的关系。OSTaskCreate()为创建任务的函数,OSStart()为启动任务的函数。使用OSStart()之后,任务就交由操作系统来管理和调度。每个任务都必须具有一个唯一的优先级别,每一个级别都用一个数字来表示,比如数字为0~255.在存储器中按数据“后进先出”的原则组织的连续存储空间称为堆栈,为了满足任务切换和响应中断时保存CPU寄存器中的内容及存储任务私有数据的需要,每个任务都应该配有自己的堆栈。任务堆栈是任务的重要组成部分。使用数据类型OS_STK来定义任务堆栈,即定义一个OS_STK类型的数组。 在使用uC/OS-II的所有服务之前,必须调用uC/OS-II的初始化函数OSInit(),对uC/OS-II自身的运行环境进行初始化。为了能使用习惯的方法来使任务延时,uC/OS-II提供了一个可以用时、分、秒为参数的任务延时函数OSTimeDlyHMSM(),比如延时1秒可用OSTimeDlyHMSM(0,0,0,1000).(3)需要用到的任务管理函数:OSInit、OSTaskCreate、OSStart、OSTimeDlyHMSM四、软件设计(含流程图、带注释的程序清单)系统上电开始运行系统上电开始运行初始化初始化创建任务TASK_1创建任务TASK_4创建任务TASK_3创建任务TASK_2创建任务TASK_1创建任务TASK_4创建任务TASK_3创建任务TASK_2执行OSSTART()函数后开始STM32执行相应任务执行OSSTART()函数后开始STM32执行相应任务执行OSSTART()函数后开始STM32执行相应任务执行OSSTART()函数后开始执行相应任务执行OSSTART()函数后开始执行相应任务/**************main.c**************/#include"includes.h"#include"stm32f10x.h"#include"stm32f10x_rcc.h"#include"stdio.h"constuint32_tSystemFrequency=72000000;#defineRCC_GPIO_LEDRCC_APB2Periph_GPIOD#defineGPIO_LEDGPIOD#defineDS1_PINGPIO_Pin_4#defineITM_Port8(n)(*((volatileunsignedchar*)(0xE0000000+4*n)))#defineITM_Port16(n)(*((volatileunsignedshort*)(0xE0000000+4*n)))#defineITM_Port32(n)(*((volatileunsignedlong*)(0xE0000000+4*n)))#defineDEMCR(*((volatileunsignedlong*)(0xE000EDFC)))#defineTRCENA0x01000000GPIO_InitTypeDefGPIO_InitStructure; #define TASK_1_PRIO 5#define TASK_2_PRIO 6#define TASK_3_PRIO 7#defineTASK_4_PRIO8#define TASK_1_STK_SIZE 100#define TASK_2_STK_SIZE 100#define TASK_3_STK_SIZE 100#defineTASK_4_STK_SIZE 100OS_STKtask_1_stk[TASK_1_STK_SIZE]; //定义堆栈OS_STKtask_2_stk[TASK_2_STK_SIZE]; //定义堆栈OS_STKtask_3_stk[TASK_3_STK_SIZE]; //定义堆栈OS_STKtask_4_stk[TASK_4_STK_SIZE]; //定义堆栈struct__FILE{inthandle;};FILE__stdout;FILE__stdin;/***重写fputc函数**/intfputc(intch,FILE*f){if(DEMCR&TRCENA){while(ITM_Port32(0)==0);ITM_Port8(0)=ch;}return(ch);}voidTask_1(void*arg){while(1){ GPIO_ResetBits(GPIO_LED,DS1_PIN); //点亮LED3 OSTimeDlyHMSM(0,0,0,1000); GPIO_SetBits(GPIO_LED,DS1_PIN); //熄灭LED3 OSTimeDlyHMSM(0,0,0,1000); }}voidTask_2(void*arg){while(1){ GPIO_ResetBits(GPIO_LED,GPIO_Pin_2); //点亮LED1 OSTimeDlyHMSM(0,0,0,1500); GPIO_SetBits(GPIO_LED,GPIO_Pin_2); //熄灭LED1 GPIO_ResetBits(GPIO_LED,GPIO_Pin_3); //点亮LED2 OSTimeDlyHMSM(0,0,0,1500); GPIO_SetBits(GPIO_LED,GPIO_Pin_3); //熄灭LED2 GPIO_ResetBits(GPIO_LED,GPIO_Pin_7); //点亮LED4 OSTimeDlyHMSM(0,0,0,1500); GPIO_SetBits(GPIO_LED,GPIO_Pin_7); //熄灭LED4}}voidTask_3(void*arg){while(1){ GPIO_ResetBits(GPIOA,GPIO_Pin_3); //无源蜂鸣器响 OSTimeDlyHMSM(0,0,0,1000); GPIO_SetBits(GPIOA,GPIO_Pin_3); //无源蜂鸣器不响 OSTimeDlyHMSM(0,0,0,1500); }}voidTask_4(void*arg){while(1){ printf("hello,world!\n");}}intmain(void){ SystemInit(); //配置系统时钟为72M SysTick_Config(SystemFrequency/OS_TICKS_PER_SEC); //使能SysTick定时器 RCC_APB2PeriphClockCmd(RCC_GPIO_LED|RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA和GPIOD的时钟 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIO_LED,&GPIO_InitStructure); //LED灯相关的GPIO初始化 GPIO_Init(GPIOA,&GPIO_InitStructure);//无源蜂鸣器相关的GPIO初始化 GPIO_SetBits(GPIO_LED,GPIO_Pin_All); //熄灭所有LED指示灯 GPIO_SetBits(GPIOA,GPIO_Pin_3); //让无源蜂鸣器不响 OSInit(); //操作系统初始化 OSTaskCreate(Task_1,(void*)0,&task_1_stk[TASK_1_STK_SIZE-1],TASK_1_PRIO); //创建任务Task_1 OSTaskCreate(Task_2,(void*)0,&task_2_stk[TASK_2_STK_SIZE-1],TASK_2_PRIO); //创建任务Task_2 OSTaskCreate(Task_3,(void*)0,&task_3_stk[TASK_3_STK_SIZE-1],TASK_3_PRIO); //创建任务Task_3 OSTaskCreate(Task_4,(void*)0,&task_4_stk[TASK_4_STK_SIZE-1],TASK_4_PRIO); //创建任务Task_4 OSStart(); //启动操作系统 }/******************************************************************************//*STM32DBG.INI:STM32DebuggerInitializationFile*//******************************************************************************///<<<UseConfigurationWizardinContextMenu>>>///******************************************************************************//*ThisfileispartoftheuVision/ARMdevelopmenttools.*//*Copyright(c)2005-2007KeilSoftware.Allrightsreserved.*//*Thissoftwaremayonlybeusedunderthetermsofavalid,current,*//*enduserlicencefromKEILforacompatibleversionofKEILsoftware*//*developmenttools.Nothingelsegivesyoutherighttousethissoftware.*//******************************************************************************/FUNCvoidDebugSetup(void){//<h>DebugMCUConfiguration//<o1.0>DBG_SLEEP<i>DebugSleepMode//<o1.1>DBG_STOP<i>DebugStopMode//<o1.2>DBG_STANDBY<i>DebugStandbyMode//<o1.5>TRACE_IOEN<i>TraceI/OEnable//<o1.6..7>TRACE_MODE<i>TraceMode//<0=>Asynchronous//<1=>Synchronous:TRACEDATASize1//<2=>Synchronous:TRACEDATASize2//<3=>Synchronous:TRACEDATASize4//<o1.8>DBG_IWDG_STOP<i>IndependantWatchdogStoppedwhenCoreishalted//<o1.9>DBG_WWDG_STOP<i>WindowWatchdogStoppedwhenCoreishalted//<o1.10>DBG_TIM1_STOP<i>Timer1StoppedwhenCoreishalted//<o1.11>DBG_TIM2_STOP<i>Timer2StoppedwhenCoreishalted//<o1.12>DBG_TIM3_STOP<i>Timer3StoppedwhenCoreishalted//<o1.13>DBG_TIM4_STOP<i>Timer4StoppedwhenCoreishalted//<o1.14>DBG_CAN_STOP<i>CANStoppedwhenCoreishalted//</h>_WDWORD(0xE0042004,0x00000027);//DBGMCU_CR_WDWORD(0xE000ED08,0x20000000);//SetupVectorTableOffsetRegister}DebugSetup();//DebuggerSetup五、设计总结本学期为期一周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味,更加清楚地认识到了自己在软件开发及学习上的一些不足之处,课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着网络在人们生活中的运用越来越广泛和嵌入式技术在日常生活中的地位日益凸显。这对我们这些学习有关网络以及计算机专业的学生来说既是一种挑战,又是一个难得的机会。通过这次嵌入式的课程设计让我们初步了解了BOAWEB服务器的设计过程和工作原理,掌握了一些编程能力。对我们的网络编程有了很大的提高,与此同时,我们还学到了一些专业知识之外的东西。在课程设计过程中,我们了解到课程设计不光光是埋头做设计,也是同学之间互相学习和互相交流经验和知识的机会。也是我们大家向老师提出疑问和学以致用的机会,这让我们不会成为只知道理论而不会将理论化为实践中去的书呆子。我觉得课程设计就是一个复习课堂上学到知识的机会,也是一个加强学生动手能力设计的机会。更是一个让学习得到升华的过程。在该次课程设计的初期,我们将任务分配好,每个人各就其职,各尽所能。当然,在一开始我们就遇到了一些问题,解决问题的方法是跑到图书馆查看有关书籍,或上网查阅有关信息,或请教老师。终于在大家的相互帮组和大家的齐心协力下,我们最终完成了该次的课程设计。这次课程设计不仅考察了我们对课堂上所学专业知识的理解程度,也锻炼了我们的动手能力。提高了我们独立思考文理,解决问题的能力。总体上看,我觉得这次课程设计是我自身的知识丰富了不少,但同时也发现了自己的不足之处。例如在动手方面,和知识融合方面,不能与实践相结合。软件操作不够熟练,不能灵活运用。是我了解要先学好理论知识才能很好地与实践相结合,才能熟练地运用到生活中。设计成绩: 教师签名: 年 月 日基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究基于TCP/IP协议的单片机与Internet互联的研究与实现变频调速液压电梯单片机控制器的研究基于单片机γ-免疫计数器自动换样功能的研究与实现基于单片机的倒立摆控制系统设计与实现单片机嵌入式以太网防盗报警系统基于51单片机的嵌入式Internet系统的设计与实现单片机监测系统在挤压机上的应用HYPERLINK"/deta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论