基于嵌入式STM32的飞思卡尔智能车设计

上传人:仙*** 文档编号:90247716 上传时间:2022-05-14 格式:DOC 页数:22 大小:103.50KB
收藏 版权申诉 举报 下载
基于嵌入式STM32的飞思卡尔智能车设计_第1页
第1页 / 共22页
基于嵌入式STM32的飞思卡尔智能车设计_第2页
第2页 / 共22页
基于嵌入式STM32的飞思卡尔智能车设计_第3页
第3页 / 共22页
资源描述:

《基于嵌入式STM32的飞思卡尔智能车设计》由会员分享,可在线阅读,更多相关《基于嵌入式STM32的飞思卡尔智能车设计(22页珍藏版)》请在装配图网上搜索。

1、-摘要飞思卡尔智能车大赛是面向全国大学生举办的应用型比赛,旨在培养创新精神、协作精神,提高工程实践能力的科技活动。大赛主要是要求小车自主循迹并在最短时间走完整个赛道。针对小车所安装传感器的不同,大赛分为光电组、电磁组和摄像头组。本文介绍了本院自动化系第一届大学生智能汽车竟赛的智能车系统。包括总体方案设计、机械构造设计、硬件电路设计、软件设计以及系统的调试与分析。机械构造设计局部主要介绍了对车模的改良,以及舵机随动系统的机械构造。硬件电路设计局部主要介绍了智能车系统的硬件电路设计,包括原理图和PCB设计智能车系统的软、硬件构造及其开发流程。该智能车车模采用学校统一提供的飞思卡尔车模,系统以STM

2、32F103C8T6作为整个系统信息处理和控制命令的核心,使用激光传感器检测道路信息使小车实现自主循迹的功能关键字:飞思卡尔智能车 STM32F103C8T6 激光传感器第一章 概述1.1专业课程设计题目基于嵌入式STM32的飞思卡尔智能车设计1.2专业课程设计的目的与容目的让学生运用所学的计算机、传感器、电子电路、自动控制等知识,在教师的指导下,结合飞思卡尔智能车的设计独立地开展自动化专业的综合设计与实验,锻炼学生对实际问题的分析和解决能力,提高工程意识,为以后的毕业设计和今后从事相关工作打下一定的根底。容本次智能车大赛分为光电组和创新做,我们选择光电组小车完成循迹功能。该智能车车模采用学校

3、统一提供的飞思卡尔车模,系统以STM32F103C8T6作为整个系统信息处理和控制命令的核心,我们对系统进展了创造性的优化:其一,硬件上采用激光传感器的方案,软件上采用keil开发环境进展调试、算法、弯道预判。其二,传感器可以随动跟线,提高了检测围。其三,独立设计了控制电路板,充分利用STM32单片机现有模块进展编程,同时拨码开关、状态指示灯等方便了算法调试。1.3方案的研讨与制定传感器选择方案方案一:选用红外管作为赛道信息采集传感器。由于识别赛道主要是识别黑白两种不同的颜色,而红外对管恰好就能实现区分黑白的功能,当红外光照在白色KT板上时,由于赛道的漫反射作用,使得一局部红外光能反射回来,让

4、接收管接的输出引脚的电压发生变化,通过采集这个电压的变化情况来区分红外光点的位置情况,以到达区分赛道与底板的作用。红外管的优点在于价格廉价,耐用;缺点却用很多:1、红外光线在自然环境中,无论是室还是室外均比拟常见,就使得其抗干扰能力不强,容易受环境变化的影响。2、调试不方面,由于红外光是不可见光,调试的时候需要采用比拟麻烦的方法来判断光电的位置。3、由于红外管光线的直线性不好,就使得红外传感器所能准确的判断的最远距离比拟小,也就是通常所说的前瞻不够远。方案二:选用激光作为路径识别传感器。激光传感器的工作原理和红外传感器的工作原理根本一样,也是利用光线在赛道上发生漫反射后接收反射回来的光线来识别

5、赛道的。激光传感器用很多优点:1、激光光束的直线性十分好,发射出去的光线发生散射的程度可以忽略;2、经过调制后的激光受环境其他光线干扰的程度也十分低。3、激光传感器可以让赛车的前瞻到达80CM到100CM左右,为赛车的高速运时所需的准确及时的赛道信息提供了保障。不过激光也用缺点:容易衰减。最终选择的方案:激光传感器相对于红外传感器有很明显的优势:1、抗干扰能力强;2、前瞻远;3、调试效果直观。而在赛车需要的高速的情况下,看得足够远和准确显得尤为重要,在这样的要求下,激光传感器较于红外传感器有十清楚显的优势,所以最终我们选择的是拥有绝对优势的激光传感器作为路径识别传感器。传感器安装方式方案一:传

6、感器角度和高度不可变化的固定式。方案二:传感器可以活动的可动式。传感器可动式主要是依靠舵机带动而活动,也就是最近这两届比赛中开场出现的摇头又称摆头式。通过控制相应的舵机到达控制传感器角度的效果,调节传感器的角度可以让传感器发出的光线始终落在赛道上你想要的位置,这样大增加了对赛道信息的准确性和及时性,为赛车速度的提升有很大的帮助,在第六届的竞赛中,我们就能体会到摇头光电车的速度较以往的光电车有了很大的提高。最终确定的方案:经过各方面的考虑,最终选择单摇头作为传感器的固定方式。安装图如图1-1:图1-1 传感器安装图1.4 工程功能模块化设计1MC9S12XS128主控模块:作为整个智能汽车的大脑

7、,将采集光电传感器的信号,根据控制算法做出控制决策,驱动直流电机完成对智能汽车的控制。2激光传感器模块:是智能汽车的眼睛,可以通过一定的前瞻性,提前感知预测前方的赛道信息,为智能汽车的大脑做出决策提供必要的依据和充足的反响时间。3电源模块:为整个系统提供适宜而又稳定的电源。4电机驱动模块:驱动直流电机完成智能汽车的加减速控制和转向控制。5舵机控制:一方面,控制传感器检测道路弯道,控制传感器的转向。另一方面,控制小车的整体的转向。第二章工程硬件方案2.1 系统方框图STM32F103C8T6最小系统电机驱动模块激光传感器电源模块舵机控制图2-1智能车整体框图整个智能车系统包括:激光传感器、舵机转

8、向控制、电机驱动控制、电源供电模块和STM32F103C8T6。详细如下:1激光传感器:该智能车通过激光传感器对道路信息进展采集。原理:当激光照射到黑线时,黑线将大局部光吸收掉,激光不能反射回来。当激光照射到白色赛道时,由于漫反射作用接收管能够将激光接收回来。由此来对道路信息采集与处理。2舵机控制:本车采用摇头舵机和转向舵机相互协调的方式控制车模在不同的弯道给出适宜的转角。摇头舵机作用是追寻赛道,转向舵机根据所采集到的信息给出不同的打角。3电机驱动控制:想要智能车以最快的速度跑完全程那么必须对电机有很好的控制策略。我们的控制策略是:直道时以最快速度行驶,入弯时减速,出弯加速。这样小车以最快的速

9、度顺利的跑完全程。4电源模块:电源智能车工作的必要前提,它为各个电路模块提供稳定电源,保证各模块正常工作,这也是智能车设计需要考虑的一个很关键的问题。5MC9S12XS128最小系统:这局部是整车的核心。它主要实现对采集的道路信息进展分析与处理,给舵机和电机不同的占空比来控制小车的转向和加速减速。2.2 系统器件选型小车的车模、电机、舵机及电池均由学校统一提供,而单片机和传感器那么经过讨论,我们选用了STM32F103C8T6和激光传感器。车膜整体构造图 2-2 车模实物图硬件资源:11个HL-380H车模的根本支架;21个RS380高速电机;31个MG995舵机;41个配套电机齿轮;51套螺

10、丝包;6轴承假设干。2.2.2 转向舵机的安装H型前支架配置适合4.5MM板子序号名称数量备注1前支架H型1大小部件共12个2杯式轴承4*11*423双通铜柱M3*1624双通铜柱M3*2045双通铜柱M4*3026螺丝M3*812+17螺丝M3*121+18螺丝M4*126+19螺丝M4*252+110螺帽M4*12普通4+111螺帽M4自锁2+112螺帽M3自锁1+113舵机MG99511465mm车轮2表 2-12.2.3 车轮及底盘调整540后支架配置序号名称数量备注1540后支架1共4个部件2540电机1检查螺丝是否上在电机上33.17齿轮 11T145*120mm光轴1检查轴承和光

11、轴是否有配套55*11*4杯式轴承265.1mm锁紧扣375mm_72齿轮2检查齿轮有没有坏齿8齿轮插销1+195mm联轴器210机米M3*34+111机米M3*62+1短销的1+1 长销的是2+1123mm机米扳手113M3*25双通铜柱214M3*30双通铜柱215M3*12螺丝2+116M3*8螺丝8+117M4*6螺丝2+1固定轮子在联轴器1865mm橡胶轮2表 2-22.2.4 RS540电机图2-3 电机实物图电压转数转/分电流3V84001.30A4.5V124001.47A6V165001.60A7.5V208001.70A表 2-32.2.5 电池电源图 2-4电池实物图主要

12、参数:电池厚:15MM 宽:35MM 长:67MM电池重:70G持续放电电流:20C瞬间放电电流:40C放电终止电压:单体208V2.2.6 单片机单片机是系统设计的核心,根据设计要求,本设计采用STM32F103C8T6单片机作为控制器,选择购置单片机最小系统,此系统稳定且非常可靠,所有引脚均引出,能满足设计要求,具体实物如图2-3所示:图2-3 STM32F103C8T6实物图2.2.7 激光传感器针对激光传感器的优点我们选用了12个激光头,对应6个接收管。实物图如图2-4:图2-4 激光传感器实物图2.3 系统整体原理图2.3.1 整体原理综述整个小车系统由单片机最小系统、电机驱动电路、

13、传感器电路、电源供电电路以及单片机的下载在口构成,总的主控制电路图如下列图2-5:图2-5主控制电路图2.3.2 各模块原理综述1单片机最小系统单片机最小系统的三要素是:电源、晶振、复位电路构成。如图2-6为单片机最小系统电路图:图2-6 单片机最小系统1微控制器,STM32F103C8T6微控制单元作为STM32系列的32位单片机,由标准片上外围设备组成,包括32位中央处理器、64KB的Flash存储器、20KB的RAM、两个12位ADC,三个通用16位定时器加一个PWM定时器,以及标准和先进的通讯接口:上两I2CS和SPI接口,三个串行外设接口,一个USB和CAN,组8通道的输入捕捉或输出

14、捕捉的增强型捕捉定时器、两组8通道10路模数转换器、一组8通道脉宽调制模块、一个字节数据链路控制器、29 路独立的数字I/O接口、20路带中断和唤醒功能的数字I/O接口、1个增强型CAN总线接口,同时,单片机集成了锁相环电路可使能耗和性能适应具体操作的需要。2电源是系统正常工作的保障,关系着小车是否能正常运行。比赛使用的是统一提供的7.2V,2000MA NI-CD电池供电。而单片机和传感器需要的是3.3V和5V电源,舵机需要7.2V电源,因此我们需要稳压芯片降低电压以提供各个模块使用。我们常用的集成三端稳压芯片有两种:线性稳压芯片和开关型稳压芯片。线性稳压芯片的特点是反响速度很快、输出纹波小

15、、发热量大、效率低,而开关型稳压型片那么功耗小、效率高,单输出纹波大,电路复杂。经过大量的选型和测试后,我们选择了LM1117和7805。LM1117为低压差线性调节稳压器件,最大输出电流800MA,经过LM1117稳压后,输出3.3V和5V,对单片机和传感器等供电。7805为三端稳压器件,经过7805稳压后,输出7.2V,对舵机供电。2-7图为电源模块根本电路图图2-7电源模块电路图3晶振图2-8晶振电路图4复位电路图2-7复位电路图2、电机驱动模块本次选用飞思卡公司的MC33886电机驱动集成芯片它是一种常见的集成H桥式电机驱动芯片,该芯片具有完善的过流、欠压、过温保护等功能具有最大5A的

16、连续工作电流,部MOSFET导通电阻为120毫欧,使用集成芯片的电路设计简单,可靠性高,由于电机较大,工作电流远不止5A,因此我们采用两片MC3886并联。电路图如2-8:图2-8电机驱动电路3、激光传感器激光发射管发射出去的激光照射到赛道外表时会产生漫反射,这时由漫反射反射回的光束,经过透镜聚焦后聚集在激光接收传感器上,如图2-9所示:图2-9激光传感器原理图根据本次比赛寻双线的赛道特点,我们在激光头及激光传感器的布局上选用了一字形布局,并且采用了摇头的方法,即用舵机来控制其方向。如图2-10所示:图2-10激光头分布图本文使用了12个激光头,6个激光接收管。方案中采用74LS138译码器和

17、三极管驱动,实现分时单独点亮激光管,防止相邻激光头之间的干扰。由于接收管对特定频率围的光波敏感,故需要将激光的发射频率通过PWM调制到180KHz左右,再经过赛道外表漫反射回来,被接收管收到。电路图2-11如下:图2-11激光传感器电路图图2-12激光板图2-13激光驱动板4、舵机控制除了由学校统一给的舵机作为作为控制小车的转向外,我们还增加一个用来控制激光头摆向的舵机,单随动舵机方案是将一个伺服舵机固定在车模上,使其转轴向上。同时将激光传感器安装于舵机上,使其能随舵机轴的转动而左右转动,类似于雷达扫描的工作模式。这种方案下,激光传感器的检测围是车模前方的一个扇形区域,检测围大,检测距离远,并

18、且根本不会丧失黑线。采用这种方案的智能车俗称为 摇头车。如图2-14舵机安装实物图:图2-14 舵机安装图第三章系统软件方案3.1 系统I/O分配对于STM32F103C8T6单片机,PB0接TIM3-CH3,输出PWM波,PB1口接TIM3-CH4,输出反向PWM波, PB8口接前轮打角舵机,PB9接激光排舵机。3.2主程序及流程图开场定时器初始化小车前进激光头1、2、3分别发射激光第一个接收管接收到数据激光头4、5、6分别发射激光激光头7、8、9分别发射激光激光头10、11、12分别发射激光第二个接收管接收到数据第三个接收管接收到数据第四个接收管接收到数据对应激光发射激光接收管未收到两舵机

19、同时向该方向转动两个舵机停顿转动退出图3-1 主程序流程图3.3主要功能模块程序定时器PWM波初始化#includeu8 table8=0xff07,0xff0e,0xff15,0xff1c,0xff23,0xff2A,0xff31,0xff38;u8 flage1,flage2,flage3,flage4,flage5,flage6;/u16 h,m;/void TIM3_PWM_Init();void TIM3_PWM_Confige(void);void GPIO_Confige(void); void TIM3_PWM_Confige(void);static void TIM3_PW

20、M_Mode(void);/void key(void);/ void saomiao(void);void delay(u8 z)u16 i,j;for(i=0;iz;i+) for(j=0;jPB5 ,TIM_CH3-PB0 /GPIO_PinRemapConfig(GPIO_PartialRemap_TIM2, ENABLE); /Timer3局部重映射 TIM3_CH2-PB5 ,TIM_CH3-PB0 /设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形 GPIOB.5 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; /TIM_CH1

21、GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);/初始化GPIO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; /TIM_CH2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Spe

22、ed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);/初始化GPIO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /TIM_CH1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);/初始化GPIO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_

23、8; /TIM_CH2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);/初始化GPIO static void TIM3_PWM_Mode(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure;u16 CCR1_Val = 100

24、; u16 CCR2_Val = 100; u16 CCR3_Val = 500; u16 CCR4_Val = 500; /初始化TIM3 TIM_TimeBaseStructure.TIM_Period = 999; /设置在下一个更新事件装入活动的自动重装载存放器周期的值 TIM_TimeBaseStructure.TIM_Prescaler =0x00E0; /设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; /设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TI

25、M_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 /初始化TIM4 TIM_TimeBaseStructure.TIM_Period = 999; /设置在下一个更新事件装入活动的自动重装载存放器周期的值 TIM_TimeBaseStructure.TIM_Prescaler =0X0402; /设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseS

26、tructure.TIM_ClockDivision = 0; /设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /TIM向上计数模式 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); /根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 /初始化TIM3 Channel2 PWM模式TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; /选择定时器模

27、式:TIM脉冲宽度调制模式1TIM_OCInitStructure.TIM_Pulse = CCR1_Val;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /比拟输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /输出极性:TIM输出比拟极性高TIM_OC3Init(TIM3, &TIM_OCInitStructure); /根据T指定的参数初始化外设TIM3 OC1TIM_OC3PreloadConfig(TIM3,TIM_OCPreload

28、_Enable);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; /选择定时器模式:TIM脉冲宽度调制模式2TIM_OCInitStructure.TIM_Pulse = CCR2_Val;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /比拟输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /输出极性:TIM输出比拟极性高TIM_OC2Init(TIM3, &TIM_OCInitStructu

29、re); /根据T指定的参数初始化外设TIM3 OC2TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能TIM3在CCR2上的预装载存放器/初始化TIM3 Channel2 PWM模式TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; /选择定时器模式:TIM脉冲宽度调制模式1TIM_OCInitStructure.TIM_Pulse = CCR3_Val;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /比拟输出使

30、能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /输出极性:TIM输出比拟极性高TIM_OC3Init(TIM4, &TIM_OCInitStructure); /根据T指定的参数初始化外设TIM3 OC1TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; /选择定时器模式:TIM脉冲宽度调制模式2TIM_OCInitStructure.TIM_Pulse = CCR4_Val;TI

31、M_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /比拟输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /输出极性:TIM输出比拟极性高TIM_OC4Init(TIM4, &TIM_OCInitStructure); /根据T指定的参数初始化外设TIM3 OC2TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable); /使能TIM3在CCR2上的预装载存放器 TIM_Cmd(TIM3, ENABLE); /使

32、能TIM3 TIM_Cmd(TIM4, ENABLE); /使能TIM3 3.3.2 I/O模块初始化void GPIO_Confige(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); /RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); /RCC_APB2PeriphClockCmd(RCC_

33、APB2Periph_GPIOF,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; /PA口作为激光头的扫描 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); /PB作为承受 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode=GPIO_Mod

34、e_IPD; /my_gpiof.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; /my_gpiof.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStruct

35、ure.GPIO_Mode=GPIO_Mode_IPD; /my_gpiof.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; /my_gpiof.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_P

36、in_1; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; /my_gpiof.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; /my_gpiof.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_InitStru

37、cture.GPIO_Pin=GPIO_Pin_14; /PA口作为激光头的扫描 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; /PA口作为激光头的扫描 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_S

38、peed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;/开启GPIOA_0引脚 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; /设置该IO口为下拉输出 GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;/开启GPIOC_13引脚 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_

39、IPU;/设置该IO为上拉输出 GPIO_Init(GPIOC,&GPIO_InitStructure); void saomiao(void) u8 i ,flage8=1,flage9=1; for(i=0;i160) h=160; m=h; if(flage6=1|flage4=1) m=h; flage8=0; flage8=1; if(flage2=1|flage3=1) if(flage8=1) h=h+10; m=h; GPIO_WriteBit(GPIOB, GPIO_Pin_13, Bit_RESET); TIM_Setpare4(TIM4,h); if(h160) h=16

40、0; if(flage2=1|flage3=1) m=h; flage8=0; if(flage4=1|flage6=1) if(flage9=1) h=h-10; m=h; GPIO_WriteBit(GPIOB, GPIO_Pin_14, Bit_RESET); TIM_Setpare4(TIM4,h); if(h90) h=90; if(flage2=1|flage3=1) m=h; flage9=0; flage9=1; TIM_Setpare4(TIM4,m); GPIO_WriteBit(GPIOB, GPIO_Pin_14, Bit_SET); GPIO_WriteBit(GPIOB, GPIO_Pin_13, Bit_SET); TIM_Setpare4(TIM4,m); . z.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!