STM32实验报告.doc_第1页
STM32实验报告.doc_第2页
STM32实验报告.doc_第3页
STM32实验报告.doc_第4页
STM32实验报告.doc_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

实验一:一个灯的闪烁 1、 实验要求1. 熟悉使用STM32F103ZET6开发板2. 利用C语言程序实现一个灯闪烁2、 电路原理图 图1-1 LED灯硬件连接图3、 软件分析1. 本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();2. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4. 应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5. 主函数程序:int main(void) RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* 配置GPIO IO口初始化 */ for(;) GPIOF-ODR = 0xfeff; /* PF8=0 - 点亮D3 */Delay(600000);GPIOF-ODR = 0xffff; /* PF8=1 - 熄灭D3 */Delay(600000); 4、 实验现象下载程序后开发板上的LED1灯闪烁5、 总结通过对本实验可以发现,和51等8位单片机相比,STM32对I/O端口的操作变得复杂了许多。51单片机点灯的程序最简单,直接在main()中写一个while(1),里面写4行代码就可以了。STM32进入while(1)之前必须先配置I/O的方向,必须使能外设的时钟。对STM32来说,除了CM3内核都算外设,包括GPIO。STM32可以关闭任何外设的时钟以禁止该外设,这样设计是出于减少功耗的考虑。实验二:流水灯的闪烁 一、实验要求1、熟悉使用STM32F103ZET6开发板2、利用C语言程序实现流水灯的闪烁实验二、电路原理图 图1-2 流水灯硬件连接图三、软件分析1. 本实验用到以下4个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();GPIO_WriteBit();3个自定义函数LED2. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4. 应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.主函数程序:int main(void) RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* 配置GPIO IO口初始化 */ for(;) LED1(); LED2(); LED3(); 6. LED1实现所有灯从led1到led5依次点亮再全部熄灭,然后全部点亮,再全部熄灭的过程;LED2实现所有灯从led5到led1依次点亮的过程;LED3实现所有灯从led5到led1依次熄灭,点亮1、3、5灯,然后全部点亮,再全部熄灭的过程;四、实验现象下载程序后开发板上的LED所有灯从led1到led5依次点亮再全部熄灭,然后全部点亮,再全部熄灭,从led5到led1依次点亮,所有灯从led5到led1依次熄灭,点亮1、3、5灯,然后全部点亮,再全部熄灭。五、总结通过代码分析发现,使用固件库函数可以大大简化编程工作,我们可以依葫芦画瓢,很容易修改成自己想要的功能代码。对相关寄存器的深入了解,可以使我们对各种外设功能有更深刻、更具体的掌握,使用起来也更得心应手。实验三:单级外部中断 一、实验要求1.利用C语言程序实现按下SW3, LED5闪烁20次单级外部中断实验2.通过实验掌握外部中断的编程方法二、电路原理图 1-3 外部中断连接图三、软件分析1.STM32外部中断要经过3个部分模块设置处理,然后才进入到中断服务程序的处理,其框图如下:1-4 中断处理模块框图2.STM32外部中断:GPIO输入中断虽然有16个输入通道,但是只占用了7个中断向量。EXTI0EXTI4各占用一个中断向量,EXTI59共用一个,EXTI1015共用一个。所以在编程的时候EXTI59将共用一个中断函数,EXTI1015共用一个中断函数。3. 本实验用到以下6个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();GPIO_WriteBit();EXTI_InitTypeDef();NVIC_PriorityGroupConfig()4. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA5. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;6. 应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);7.EXTI配置:引脚选择:GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3);清除中断标志位:EXTI_ClearITPendingBit(EXTI_Line8)设置外部中断结构体的成员:EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);8.NVIC配置:分为四个部分,分别针对中断线0到中断线3,结构相同。NVIC_PriorityGroupConfig()函数配置占先优先级和副优先级9.主函数程序:int main() RCC_Configuration();/* 配置系统时钟 */ NVIC_Configuration(); GPIO_Configuration();/* IO口初始化 */EXTI_Configuration();GPIO_Write(GPIOF,0xffff); /* 全灭 */Delay(5000); while(1) 四、实验现象每按下一次SW3,LED5闪烁20次,实现单级中断五、总结通过实验,我们学习了如何使用STM32的GPIO外部中断功能。GPIO外部中断使用方法比较容易掌握,只要沿着中断信号线一路设置遇到的寄存器,最后编写中断服务程序即可,当然还要设置中断优先级。实验四:中断嵌套 一、实验要求1.利用C语言程序实现中断嵌套实验按下SW3, LED5闪烁20次 SW3 - PA0 LED5 - PF10 中断优先级为1;按下SW2, LED3闪烁20次 SW2 - PD3 LED3 - PF8 中断优先级为2; 按下SW1, LED1闪烁20次 SW1 - PA8 LED1 - PF6 中断优先级为3; 按下SW5, LED4闪烁20次 SW5 - PC13 LED4 - PF9 中断优先级为42. 通过实验掌握外部中断的编程方法三、软件分析1. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA2. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;7. 应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;二、电路原理图 图1-5 多级中断硬件连接图位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);7.EXTI配置:引脚选择:GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3);清除中断标志位:EXTI_ClearITPendingBit(EXTI_Line8)设置外部中断结构体的成员:EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);8. NVIC配置:分为四个部分,分别针对中断线0到中断线3,结构相同。优先级组都设为 2,PC13 中断主次优先级分别为4;PA8 主次优先级分别为3;PD3主次优先级分别为2;PA0 主次优先级分别为1;要求先进入 PC13 中断,执行某一个任务,突然 PA8 打断 PC13 的中断,转而进行 PA8的中断。PC13 的中断任务执行完毕,返回到 PC13中断继续原来的中断任务。突然 PD3 打断 PA8 的中断,转而进行 PD3的中断。PD3 的中断任务执行完毕,返回到 PA8中断继续原来的中断任务,以此推类。NVIC_PriorityGroupConfig()函数配置占先优先级和副优先级NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /设置中断优先级分组2NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel;/设定中断源为PC13-SW5NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;/中断占优先级为4NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;/副优先级为0NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;/设定中断源为PA8-SW1NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;/中断占优先级为3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;/副优先级为0NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;/设定中断源为PD3-SW2NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;/中断占优先级为2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;/副优先级为0NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;/设定中断源为PA0-SW3NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;/中断占优先级为1NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;/副优先级为09.主函数程序:int main() RCC_Configuration();/* 配置系统时钟 */ NVIC_Configuration(); GPIO_Configuration();/* IO口初始化 */EXTI_Configuration();GPIO_Write(GPIOF,0xffff); /* 全灭 */Delay(5000); while(1)四、实验现象按下SW3, LED5闪烁20次,闪烁过程中因为其中断优先级为1,所以除了复位按键其他按键不能打断LED5的亮灯情况;按下SW2, LED3闪烁20次,因为中断优先级为2,SW3可以使LED3闪烁停止而其他按键不能;按下SW1, LED1闪烁20次; 按下SW5, LED4闪烁20次,中断优先级为4五、总结通过实验,我们学习了如何使用STM32的GPIO外部中断功能和中断嵌套的编程。GPIO外部中断使用方法比较容易掌握,设置中断优先级时中断优先级越高,设置的数字应该越小。实验五:TIM2的基本应用 一、实验要求1.利用C语言程序实现用通用定时器TIM2中断控制LED的闪烁2.通过实验掌握定时器的编程方法二、软件分析1.STM32的通用定时器:STM32的通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。STM32有4个通用定时器(TIM2、TIM3、TIM4、TIM5),它们适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。2.配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4.应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.EXTI配置:引脚选择:GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3);清除中断标志位:EXTI_ClearITPendingBit(EXTI_Line8)设置外部中断结构体的成员:EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);6.NVIC配置:分为四个部分,分别针对中断线0到中断线3,结构相同。NVIC_PriorityGroupConfig()函数配置占先优先级和副优先级7.TIM配置:void TIM2_Init(void)TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;/定义一个TIM初始化结构体TIM_TimeBaseStructure.TIM_Period = 65535;/自动装载寄存器(TIMx_ARR) TIM_TimeBaseStructure.TIM_Prescaler = 0;/预分频器(TIMx_PSC) TIM_TimeBaseStructure.TIM_ClockDivision = 0;/时钟分频因子CKD1:0,在此没有用到 /计数器模式:TIMx向上计数模式,操作的是TIMx_CR1TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure); /根据上述参数设置TIMx的时间基数TIM_InternalClockConfig(TIM2);/TIM2预分频器由内部时钟驱动(默认),操作TIMx_SMCRTIM_ITConfig(TIM2, TIM_IT_Update , ENABLE );/使能TIM2中断,操作的是TIMx_DIERTIM_Cmd(TIM2, ENABLE);/使能定时器TIM2,操作的寄存器是TIMx_CR18.主函数程序:int main() RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* 配置GPIO I/O口初始化 */ NVIC_Configuration();/* 配置NVIC */ TIM_Configuration();/* 配置TIMs */ GPIO_Write(GPIOF,0xffff); /* 全灭 */ while(1);三、实验现象TIM2使LED1灯以1S的周期闪烁,单次定时时间为100*10-6S四、总结通过实验,我们学习了如何使用STM32的通用定时器功能。通用定时器的溢出时间计算:使用通用定时器的最简单功能,就是定时,把计数器单元也当作一个分配器,时钟信号经过预分频器和计数器两级分频后,出来的信号就是溢出中断信号。所以溢出中断频率由以下式子确定:定时时间为:T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK实验六:TIM2,TIM3,TIM4多定时器的应用 一、实验要求1. 利用C语言程序实现TIM定时器多级中断2. 通过实验掌握定时器的编程方法2、 软件分析1. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA2. 声明GPIO结构: PF6PF10口配置为输出、应用GPIO口3. EXTI配置:4. NVIC配置:分为四个部分,分别针对中断线0到中断线3,结构相同。NVIC_PriorityGroupConfig()函数配置占先优先级和副优先级5. TIM配置:使用定时器,就必须使能定时器的时 钟 , 这 就 是 函 数 RCC_APB1PeriphClockCmd(); , 通 过 它 开 启RCC_APB1Periph_TIM2TIM_DeInit( TIM2); 该函数主要用于复位 TIM2 定时器,使之进入初始状态。然后我们对自动重装载寄存器赋值,TIM_Period 的大小实际上表示的是需要经过 TIM_Period 次计数后才会发生一次更新或中断。 TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* TIM2 configuration 通道1:输出比较模式 */TIM_TimeBaseStructure.TIM_Period = 1999; /自动重装载寄存器的值 TIM_TimeBaseStructure.TIM_Prescaler =35999;/时钟预分频数 TIM_TimeBaseStructure.TIM_ClockDivision = 0;/采样分频 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /向上计数 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_PrescalerConfig(TIM2, 7199, TIM_PSCReloadMode_Immediate); TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_OC1Init(TIM2, &TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0x0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable); /* TIM3 configuration Output Compare Timing Mode configuration: Channel1 */ TIM_TimeBaseStructure.TIM_Period = 3999; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_OC1Init(TIM3, &TIM_OCInitStructure); /* TIM4 configuration Output Compare Timing Mode configuration: Channel1 */ TIM_TimeBaseStructure.TIM_Period = 5999; TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM_OC1Init(TIM4, &TIM_OCInitStructure); TIM_Cmd(TIM2, ENABLE); /* TIM2 enable counter */ TIM_Cmd(TIM3, ENABLE); /* TIM3 enable counter */ TIM_Cmd(TIM4, ENABLE); /* TIM4 enable counter */TIM_PrescalerConfig(TIM2, 20000, TIM_PSCReloadMode_Immediate); TIM_PrescalerConfig(TIM3, 30000, TIM_PSCReloadMode_Immediate); TIM_PrescalerConfig(TIM4, 40000, TIM_PSCReloadMode_Immediate); TIM_ClearFlag(TIM2, TIM_FLAG_Update);/清除TIM2溢出中断 TIM_ClearFlag(TIM3, TIM_FLAG_Update);/清除TIM3溢出中断标志TIM_ClearFlag(TIM4, TIM_FLAG_Update); /清除TIM4溢出中断标志 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);/使能中断TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);/使能中断TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);/使能中断三、实验现象LED1、LED3、LED5分别以0.5s、1s、2s的频率闪烁四、总结通过实验,我们学习了如何使用STM32的通用定时器功能。通用定时器的溢出时间计算:使用通用定时器的最简单功能,就是定时,把计数器单元也当作一个分配器,时钟信号经过预分频器和计数器两级分频后,出来的信号就是溢出中断信号。所以溢出中断频率由以下式子确定:定时时间为:T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK实验七:串口USART1读取CPU的ID号 一、实验要求1.利用C语言程序实现串口USART1读取CPU的ID号2.通过实验掌握串口USART1的编程方法二、电路原理图 1-6 串口硬件连接图三、软件分析1.用查询方式使用STM32的串口发送数据的基本程序流程是:打开复用功能、串口1的时钟;设置TXD、RXD引脚工作模式;设置波特率、数据位数、停止位数、奇偶校验位等; 使能串口;发送数据;等待直到数据发送完成;清除发送完成标志。2.在RCC_Configuration()函数的/使能GPIOA的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);后面增加一个语句:/使能复用功能、串口1的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE);3.在GPIO_Init()函数的/-初始化GPIOA-GPIO_Init(GPIOA, &GPIO_InitStructure);后面增加以下代码:/PA9作为USART1的TX端,打开复用,用于发送数据GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;/选中PA口的Pin_9GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/复用推挽输出GPIO_Init(GPIOA , &GPIO_InitStructure);/PA10作为USART1的RX端,用于接收数据GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;/选中PA口的Pin_10GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;/浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);4.增加一个函数/函数功能:初始化串口=void USART_Configuration(void) USART_InitTypeDef USART_InitStructure; /定义一个结构体变量 USART_DeInit(USART1);/将USART1寄存器重设为缺省值USART_InitStructure.USART_BaudRate = 9600;/波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b;/8位数据 USART_InitStructure.USART_StopBits = USART_StopBits_1;/1位停止位 USART_InitStructure.USART_Parity = USART_Parity_No;/无校验位 /硬件流控制失能 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;/发送、接收使能USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;/根据USART_InitStruct中指定的参数初始化外设USART1寄存器USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE);/使能USART15.将main函数改为如下内容:int main() RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* IO口初始化 */ USART_Configuration(); /* to get the chipid and put it in ChipUniqueID3 ,printf the chipid */Get_ChipID();/* printf the flash memory amount */printf(rn芯片的唯一ID为: %X-%X-%Xrn,ChipUniqueID0,ChipUniqueID1,ChipUniqueID2); printf(rn芯片flash的容量为: %dK rn, *( u16 *)(0X1FFFF7E0); while(1)四、实验现象通过stm32板子发射,在电脑的软件接收端收到发射的内容五、总结通过实验,我们学习了如何使用STM32的串口功能。在一开始发射的时候一直接收不到发射的内容,但是程序又没有出错,后来发现是stm32跳线帽选择错误,修正跳线帽之后接收到的是乱码,后来发现是波特率的设置出现了问题,修正之后就能收到正确的发送内容了。实验八:异步通信USART2的重映射 一、实验要求1.利用C语言程序实现异步

温馨提示

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

评论

0/150

提交评论