赞
踩
1–原理:
通过开发板上的三个按键控制三个模式–按键1,2,3分别代表蓝牙控制,红外循迹,舵机加超声波避障,切换功能时按复位键就行;
2:代码;
主函数:
#include "move.h" #include "sys.h" #include "delay.h" #include "usart.h" #include "trailing.h" #include "key.h" #include "control.h" #include "wave.h" int main() { u8 mode; Stm32_Clock_Init(9); delay_init(72); key_init(); uart_init(72,9600); MOVE_Init(7199,0);//PWM频率=72000(719+1)=100Khz left_PWM=100; right_PWM=100; stop(); while(1) { go(10); mode=key(); printf("mode%d",mode); switch(mode) { case 1:control();break; case 2:trailing();break; case 3:wave_init(); default:break; } } }
按键控制:
key.h
#ifndef _KEY_H_
#define _KEY_H_
#include "sys.h"
#define KEY_0 PCin(5)
#define KEY_1 PAin(15)
#define KEY_UP PAin(0)
void key_init(void);
u8 key(void);
#endif
key.c
#include "key.h" void key_init() { RCC->APB2ENR |=1<<2; RCC->APB2ENR |=1<<4; GPIOA->CRL &=0XFFFFFFF0;//PA0 GPIOA->CRL |=0X00000008; GPIOA->CRH &=0X0FFFFFFF;//PA15 GPIOA->CRH |=0X80000000; GPIOA->CRL &=0XFF0FFFFF;//PC5 GPIOA->CRL |=0X00800000; } u8 key() { key_init(); if(KEY_0==0) return 1; else if(KEY_1==0) return 2; else if(KEY_UP==1) return 3; else return 0; }
该部分代码都比较简单;
到这小车主体功能大概就差不多了,下篇介绍下硬件方面的问题;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。