--毕业设计3--陈亚文(9)

2019-08-03 12:55

基于stm32的智能小车设计

参考文献

[1] 杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003-02-01 [2] 姚文详,宋岩.ARM Cortex-M3权威指南[M].北京:北京航空航天大学出版

社,2009-07

[3] 范书瑞.Cortex-M3嵌入式处理器原理与应用[M].北京:电子工业出版社,

2011-01-01

[4] 李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008:1-260.

[5] 刘军,张洋.原子教你玩STM32[M].北京:北京航空航天大学出版社,2013-05-01

[6] 彭刚,秦志强.基于ARM Cortex-M3的STM32系列[M].北京:电子工业出版社,2011-01

[7] 张自强,晏英俊.基于stm32的步进电机转速控制实验设计[J].实验室科学,2010-12,13(6):59-61

[8] 周柱,孟文,田环宇.基于stm32智能小车设计[J].技术与市场,2011-06,18(6):1-2

[9] 李亚巨,樊东.基于stm32f103zet6的智能小车的制作[J].电子制作,2013-11,(19):52-53

[10] 赵志昊.智能小车的制作 [J].科技传播,2011-11,(21):202-203 [11] 李婕.基于STM32的智能小车的制无线视频监控智能小车设计[D].兰州:兰州理工大学出版社,2014-4:1-56

- 40 -

基于stm32的智能小车设计

附录

附录1

void TIM5_Cap_Init(u16 arr,u16 psc) {

GPIO_InitTypeDef GPIO_InitStructure;

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); //使能TIM5时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PA0 清除之前设置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 输入 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_0);

//初始化定时器5 TIM5

//PA0 下拉

TIM_TimeBaseStructure.TIM_Period = arr; //设定计数器自动重装值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //预分频器 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

//初始化TIM5输入捕获参数

TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01 选择输入端 IC1映射

到TI1上

TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获 TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI1上 TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频 TIM5_ICInitStructure.TIM_ICFilter = 0x00;//IC1F=0000 配置输入滤波器 不滤波 TIM_ICInit(TIM5, &TIM5_ICInitStructure);

//中断分组初始化

NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn; //TIM5中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占优先级2级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //从优先级0级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能

NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

- 41 -

基于stm32的智能小车设计

TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//允许更新中断 ,允许CC1IE捕获中断

TIM_Cmd(TIM5,ENABLE ); //使能定时器5 }

附录2

void EXTIX_Init(void) {

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟

//GPIOD.2 中断线以及中断初始化配置 下降沿触发 GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource1);

EXTI_InitStructure.EXTI_Line=EXTI_Line1; //左1

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

EXTI_InitStructure.EXTI_Line=EXTI_Line2; //最左 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); EXTI寄存器

//GPIOD.3 中断线以及中断初始化配置 下降沿触发 //右 GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);

EXTI_InitStructure.EXTI_Line=EXTI_Line3;

EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

//GPIOD.4 中断线以及中断初始化配置 下降沿触发 //最右

- 42 -

//根据EXTI_InitStruct中指定的参数初始化外设

基于stm32的智能小车设计

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);

EXTI_InitStructure.EXTI_Line=EXTI_Line4;

EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器

NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;

//使能左1所在的外部中断

//抢占优先级2,

//子优先级3

//

通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x06; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 使能外部中断通道

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; 断通道

//使能最左所在的外部中

//抢占优先级2, //子优先级2 //

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x04; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 使能外部中断通道

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn; 通道

//使能右1所在的外部中断

//抢占优先级2 //子优先级1

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x07;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道

NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; 断通道

//使能最右所在的外部中

//抢占优先级2 //子优先级0

//

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x05; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 使能外部中断通道

NVIC_Init(&NVIC_InitStructure);

//根据NVIC_InitStruct中指定的参数初始化外设

NVIC寄存器 EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE1上的中断标志位

EXTI_ClearITPendingBit(EXTI_Line2); //清除LINE1上的中断标志位 EXTI_ClearITPendingBit(EXTI_Line3); //清除LINE1上的中断标志位 EXTI_ClearITPendingBit(EXTI_Line4); //清除LINE1上的中断标志位 }

- 43 -

基于stm32的智能小车设计

附录3

void farward_Low(void) {

GPIO_SetBits(GPIOD,GPIO_Pin_8); GPIO_ResetBits(GPIOD,GPIO_Pin_9); GPIO_SetBits(GPIOD,GPIO_Pin_10); GPIO_ResetBits(GPIOD,GPIO_Pin_11); TIM_SetCompare1(TIM3,1000); TIM_SetCompare3(TIM3,1000); }

void Left_Low(void) {

GPIO_SetBits(GPIOD,GPIO_Pin_8); GPIO_ResetBits(GPIOD,GPIO_Pin_9); GPIO_SetBits(GPIOD,GPIO_Pin_10); GPIO_ResetBits(GPIOD,GPIO_Pin_11); TIM_SetCompare1(TIM3,1000); TIM_SetCompare3(TIM3,400); }

void Right_Low(void) {

GPIO_SetBits(GPIOD,GPIO_Pin_8); GPIO_ResetBits(GPIOD,GPIO_Pin_9); GPIO_SetBits(GPIOD,GPIO_Pin_10); GPIO_ResetBits(GPIOD,GPIO_Pin_11); TIM_SetCompare1(TIM3,400); TIM_SetCompare3(TIM3,1000); }

void backward(void) {

GPIO_ResetBits(GPIOD,GPIO_Pin_8); GPIO_SetBits(GPIOD,GPIO_Pin_9); GPIO_ResetBits(GPIOD,GPIO_Pin_10); GPIO_SetBits(GPIOD,GPIO_Pin_11); TIM_SetCompare1(TIM3,2000); TIM_SetCompare3(TIM3,2000); }

void stopward(void) {

GPIO_SetBits(GPIOD,GPIO_Pin_8); GPIO_SetBits(GPIOD,GPIO_Pin_9);

GPIO_SetBits(GPIOD,GPIO_Pin_10); TIM_SetCompare3(TIM3,2000); GPIO_SetBits(GPIOD,GPIO_Pin_11); TIM_SetCompare1(TIM3,2000);} 附录4

- 44 -


--毕业设计3--陈亚文(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:组织行为学名词解释

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: