初级会员
- 积分
- 87
- 金钱
- 87
- 注册时间
- 2019-7-12
- 在线时间
- 40 小时
|
l298n驱动电机
#include "motor.h"
#include "timer.h"
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "delay.h"
void Motor_12_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //PB6 ×óê1Äüòy½Å PB7óéê1Äüòy½Å
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_SetBits(GPIOD,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);
}
void Go_Ahead(void)
{
TIM_SetCompare1(TIM4,400);
motor_In1=0;
motor_In2=1;
TIM_SetCompare2(TIM4,400);
motor_In3=1;
motor_In4=0;
}
void Move_Back(void)
{
TIM_SetCompare1(TIM4,20);
motor_In1=1;
motor_In2=0;
TIM_SetCompare2(TIM4,20);
motor_In3=0;
motor_In4=1;
}
void Turn_Right(void)
{
TIM_SetCompare1(TIM4,400);
motor_In1=0;
motor_In2=1;
TIM_SetCompare2(TIM4,200);
motor_In3=1;
motor_In4=0;
}
void Turn_Left(void)
{
TIM_SetCompare1(TIM4,200);
motor_In1=0;
motor_In2=1;
TIM_SetCompare2(TIM4,400);
motor_In3=1;
motor_In4=0;
}
void Stop_stop(void)
{
TIM_SetCompare1(TIM4,400);
motor_In1=0;
motor_In2=0;
TIM_SetCompare2(TIM4,400);
motor_In3=0;
motor_In4=0;
}
主函数
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "motor.h"
#include "adc.h"
/************************************************
ALIENTEKÕ½½¢STM32¿a·¢°åêμÑé9
PWMêä3öêμÑé
¼¼êõÖ§3Ö£owww.openedv.com
ìÔ±|μêÆì£ohttp://eboard.taobao.com
1Øע΢DÅ1«Öúƽì¨Î¢DÅoÅ£o"ÕyμãÔ-×ó"£¬Ãa·Ñ»ñè¡STM32×êáÏ¡£
1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
×÷ÕߣoÕyμãÔ-×ó @ALIENTEK
************************************************/
int main(void)
{
u16 adc1;
u16 adc2;
u16 adc3;
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÖD¶ÏóÅÏ輶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏ輶£¬2λÏìó|óÅÏ輶
uart_init(115200); //′®¿ú3õê¼»ˉÎa115200
LED_Init(); //LED¶Ë¿ú3õê¼»ˉ
Adc_Init(); //ADC3õê¼»ˉ
TIM4_Int_Init(9999,7199);
TIM4_PWM_Init(899,0);
Motor_12_Config();
while(1)
{
adc1=Get_Adc_Average(ADC_Channel_1,10); //ÖD
adc2=Get_Adc_Average(ADC_Channel_5,10); //óò
adc3=Get_Adc_Average(ADC_Channel_6,10); //×ó
printf("í¨μà1=%d\n,í¨μà2=%d\n,í¨μà3=%d\n",adc1,adc2,adc3);
// if(adc1<1400&&adc2>1400&&adc3<1400)
// {
// Go_Ahead();
//
// }
// else if(adc1>1400&&adc2<4100&&adc3>1400)
// {
// Turn_Left();
// }
// else if(adc1>1100&&adc2>1100&&adc3<1100)
// {
// Turn_Right();
// }
//
// else if(adc1<1100&&adc2<1100&&adc3<1100)
// {
// Stop_stop();
//
// }
if(adc2>1400)
{
Go_Ahead();
}
else if(adc2>1400&&adc3>1400)
{
Turn_Left();
}
}
}
|
|