ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:1.29MB ,
资源ID:26486587      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26486587.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(stm32实训总结.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

stm32实训总结.docx

1、stm32实训总结实践形式: 校内实践基地实践 校外实践基地 导师联系校外实践 自行联系校外实践 其他_起止日期:2015.12.14-2015.12.25实践总结(要求写明实践地点、实践时间、指导教师、实践目的、实践内容和完成情况,字数及其它具体要求由各学院根据学科情况自行制定。)实践地点实践目的1. 利用所学过的基础知识,通过本次电子实习培养独立解决实际问题的能力。2. 巩固本课程所学习的理论知识和实验技能。3. 了解循迹小车构成的设计方法。4. 掌握常用电子电路的一般设计方法,提高设计能力和实验、动手能力,为今后从事电子电路的设计、研制电子产品打下基础。5. 培养团队的协作和沟通能力。实

2、践内容:一、 智能小车配置本次实训中所用到的智能小车如图1所示,其主要配置包括:图1 智能小车1、 小车底盘小车底盘是机器人最重要的载体,相当于人体的驱干,ZK-4WD小车平台采用差速转弯非常灵活可以实现原地打转。小车平台大小刚好可以承载一些如驱动器控制器、控制器、电池、传感器等。图2 小车底盘2、驱动器小车直流电机工作电流一般是200-400MA,有些更大,如果一个小车是二个轮子,那么总的电流在400-800MA左右,这些电机轮子都是要接受单片机指令执行相应的动作,而市面有的单片机IO 口一般只能提供5MA到10MA的电流,直接驱动不了电机,所以需要一个驱动模块,放大电流。驱动采用专业的L2

3、98N驱动芯片。图3 L298N驱动芯片3、控制器图4为控制器STM32核心板,STM32平台采用核心板+外围板方式。核心板主要包括STM32F103VET6最小系统、按键、LED灯、TF卡、串口和JTAG电路。可以完成STM32内部资源的大部分开发应用。外围板包括数码管电路、存储器电路、红外、光敏电阻、温度传感器、ULN2003电路、步进电机、蜂鸣器、DS1302时钟电路和CAN总线等电路设计,基本包括了STM32的所有资源、同时又对IIC、单总线、SPI总线、CAN总线等协议进行了硬件设计。图4 控制器STM32核心板4、小车所需的能源一般采用低内阻的充电电池套装。图5 小车所需的充电电池

4、5、寻迹传感器用来识别黑白线,小车沿着黑白线行走,就需要寻迹传感器。原理:寻迹传感器通常采用红外的方式,红外管发射出来的红外光通过地面(白色)反射回来,在接收管里收到信号,一旦碰到黑线,那么红外光都被吸收,接收管没有接收到信号,从而得知传感器是否压线,从而调整小车运行方向。图6 寻迹传感器二、 硬件接口电路设计图7 硬件接线图三、 软件编程实现在空的Demo中打开软件编程界面编写程序,如图8所示。图8 软件编程界面小车寻迹控制程序包括主程序和中断程序如下:主程序:#include stm32f10x.h void GPIO_Config()GPIO_InitTypeDef GPIO_InitS

5、truct;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOB, &GPIO_InitStruct);void HW_Config()GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStruct.G

6、PIO_Speed=GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOC, &GPIO_InitStruct);GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource0);GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource1);GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2);GPIO_EXTILine

7、Config(GPIO_PortSourceGPIOC, GPIO_PinSource3);void CAR_Config()GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOD, &GPIO_InitStruct);void EXIT_Config()EXTI_InitTypeDef EXTI_Init

8、Struct;EXTI_InitStruct.EXTI_Line=EXTI_Line0;EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStruct);EXTI_InitStruct.EXTI_Line=EXTI_Line1;EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStruc

9、t.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStruct);EXTI_InitStruct.EXTI_Line=EXTI_Line2;EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStruct);EXTI_

10、InitStruct.EXTI_Line=EXTI_Line3;EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStruct);void NVIC_Config()NVIC_InitTypeDef NVIC_InitStruct;NVIC_InitStruct.NVIC_IRQChannel=EXTI0_IRQn;NVIC_InitStruct

11、.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);NVIC_InitStruct.NVIC_IRQChannel=EXTI1_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;NVIC_Ini

12、tStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);NVIC_InitStruct.NVIC_IRQChannel=EXTI2_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);NVIC_InitStruct.NVIC_IRQChan

13、nel=EXTI3_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);void TIM_Config()TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;TIM_OCInitTypeDef TIM_OCInitStruct;TIM_TimeBaseInitStr

14、uct.TIM_Prescaler=360-1;TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStruct.TIM_Period=200-1;TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStruct);TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;/YSTIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStruct.TIM_Pulse=8

15、0;TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High; /有效值赋值TIM_OC1Init(TIM4,&TIM_OCInitStruct);TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;/YXTIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStruct.TIM_Pulse=85;TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OC2Init(TIM4,

16、&TIM_OCInitStruct);TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;/ZSTIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStruct.TIM_Pulse=80;TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High; /有效值赋值TIM_OC3Init(TIM4,&TIM_OCInitStruct);TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;/ZXTIM_OC

17、InitStruct.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStruct.TIM_Pulse=85;TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High; /有效值赋值TIM_OC4Init(TIM4,&TIM_OCInitStruct);TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable);TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable);TIM_OC3PreloadConfig(TIM4,TIM

18、_OCPreload_Enable);TIM_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM4,ENABLE);TIM_Cmd(TIM4,ENABLE);int main()RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);GPI

19、O_Config();HW_Config();TIM_Config();CAR_Config();EXIT_Config();NVIC_Config();while(1)GPIO_Write(GPIOD,0x0066);中断程序:void delay(uint16_t z)uint16_t i = 0;while(z-)for(i=0;i1;i+);void EXTI0_IRQHandler(void)EXTI_ClearITPendingBit(EXTI_Line0);GPIO_Write(GPIOD,0x0069);if (GPIO_ReadInputDataBit(GPIOC, GPIO

20、_Pin_0)=SET)while (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0)=SET) void EXTI1_IRQHandler(void)EXTI_ClearITPendingBit(EXTI_Line1);GPIO_Write(GPIOD,0x0069);if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1)=SET)while (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1)=SET) void EXTI2_IRQHandler(void)EXTI_ClearITPending

21、Bit(EXTI_Line2);GPIO_Write(GPIOD,0x0096);if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2)=SET)while (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2)=SET) void EXTI3_IRQHandler(void)EXTI_ClearITPendingBit(EXTI_Line3);GPIO_Write(GPIOD,0x0096);if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_3)=SET)while (GPIO_ReadInput

22、DataBit(GPIOC, GPIO_Pin_3)=SET) 四、 小车调试打开图标,如图9示:图9 ISP程序下载点击联机下载时的程序文件,然后选择要下载的hex(目标文件)程序,如图10所示。图10 ISP程序下载寻迹功能:接通电源后,小车会沿着地上的黑线行驶,小车配有4个红外传感器,当左边的两个红外传感器检测到黑线时,小车向左转;当右边的两个红外传感器检测到黑线时,小车向右转,具体可通过PWM控制L298N来控制小车速度,达到小车寻迹行驶的目的。调试中出现的问题及解决方法:问题:小车的速度太慢;解决:通过改变定时器参数,调节占空比来达到调节小车速度的目的。问题:小车在拐弯时的弯度太大,

23、寻迹不准确;解决:将小车上的四个红外探头的距离调近一些,并且调整红外探头的灵敏度,使小车能够在不冲出轨迹的前提下快速转弯。 问题:小车速度太快时,小车会冲出轨迹,导致无法继续寻迹;解决:通过多次试验,找到最合适的参数值,以最快的速度完成寻迹。五、 收获首先感谢自动化系为我们提供这次宝贵的培训机会,感谢两位老师的悉心指导,通过为期十天的STM32智能小车实训,我基本掌握了智能小车的硬件设计,软件编程调试等内容,了解循迹小车构成的设计方法,掌握常用电子电路的一般设计方法,提高设计能力和实验、动手能力。通过本次电子实习,我加强了对于本课程所学习的理论知识的理解,提高了实验技能和独立解决实际问题的能力以及团队的协作和沟通能力,并且产生了对于嵌入式开发的浓厚兴趣。以后将继续深入学习STM32,掌握STM32开发流程及编程思想,为以后的工作和发展打下良好的基础,为今后从事电子电路的设计、研制电子产品打下基础。最后,期待学院以后还会给学生提供更多方面的培训。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1