初级会员

- 积分
- 69
- 金钱
- 69
- 注册时间
- 2016-4-10
- 在线时间
- 26 小时
|
30金钱
刚烧录进去,pwm是有信号的,但把单片机关上打开就没有信号了,试几遍都一样
#include "sys.h"
#include "tim.h"
#include "dir.h"
#define wheel0 PEout(10)// PA0
#define wheel1 PEout(11)// PA1
#define wheel2 PEout(12)// PA2
#define wheel3 PEout(13)// PA3
#define I0 GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_10)
#define I1 GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_11)
#define I2 GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_12)
#define I3 GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_13)
extern u8 mode;
/**********************************/
//mode=1 直行 mode=2 左转 mode=3 右转
int main ()
{
GPIO_cfg();
TIM_PWM1_init();
TIM_PWM2_init();
//while(1){TIM_SetCompare2(TIM3,899);}
//mode=1;
straight_motor();
GPIO_SetBits(GPIOD,GPIO_Pin_10);
GPIO_SetBits(GPIOD,GPIO_Pin_11);
GPIO_SetBits(GPIOD,GPIO_Pin_12);
GPIO_SetBits(GPIOD,GPIO_Pin_13);
while(1)
{
//mode=1;
//straight_motor();
if(I0==1&&I1==1&&I2==1&&I3==1) mode=1;
if(I0==0) mode=2;
if(I3==0) mode=3;
if(mode==2&&I1==0)
mode=1;
if(mode==3&&I2==0)
mode=1;
switch(mode)
{
case 1:
straight_motor();
break;
case 2:
left_motor();
break;
case 3:
right_motor();
break;
default:straight_motor();break;
}
}
}
#include "sys.h"
#include "dir.h"
#include "delay.h"
void GPIO_cfg(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOD, ENABLE); //使能时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
#define wheel0 PEout(10)// PA0
#define wheel1 PEout(11)// PA1
#define wheel2 PEout(12)// PA2
#define wheel3 PEout(13)// PA3
u16 pwmval_straight=0;
u16 pwmval_left=0;
u16 pwmval_right=0;
u8 mode;
/**********************************/
void left_motor(void)
{
//while(1)
//{
//delay_ms(500);
pwmval_left=300;
wheel0=0;
wheel1=0;
wheel2=1;
wheel3=0;
//delay_ms(500);
TIM_SetCompare1(TIM3,pwmval_left);
TIM_SetCompare2(TIM3,900);
//}
}
void right_motor(void)
{
//delay_ms(500);
pwmval_right=300;
wheel0=1;
wheel1=0;
wheel2=0;
wheel3=0;
// delay_ms(500);
TIM_SetCompare2(TIM3,pwmval_right);
TIM_SetCompare1(TIM3,900);
}
void straight_motor(void)
{
//delay_ms(50);
pwmval_straight=800;
wheel0=1;
wheel1=0;
wheel2=1;
wheel3=0;
//delay_ms(50);
TIM_SetCompare1(TIM3,pwmval_straight);
TIM_SetCompare2(TIM3,pwmval_straight);
}
|
|