- #include "stm32f10x.h" // Device header
- #include "pwm.h"
- #include "Timer.h"
- /*
-
- TIM1(高级定时器):CH1-CH4: PWM输出控制四个电机
- PA8 左前
- PA9 左后
- PA10 右前
- PA11 右后
- TIM2:CH1-CH2: 左后轮编码器A、B相 PA0,PA1
- TIM3:CH1-CH2: 右后轮编码器A、B相 PA6,PA7
- TIM4:定时测速调速
-
- 红外:PB12,PB13,PB14
-
- TB6612N逻辑输入:(1 0正转,0 1反转)
- PB0,PB1:左前 通道1
- PB5,PB8:右前 通道3
- PA3,PA2:左后 通道2
- PB10,PB11:右后 通道4
- */
-
- void GPIOB_Init(void)
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
-
- GPIO_InitTypeDef GPIO_InitStructure;
- /*红外out引脚:PB12,PB13,PB14*/
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
- /*初始为低电平*/
- GPIO_ResetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11);
- GPIO_ResetBits(GPIOA,GPIO_Pin_2 | GPIO_Pin_3);
- }
-
-
- void forward(u16 speed)
- {
- TIM_SetCompare1(TIM1,speed);
- TIM_SetCompare2(TIM1,speed);
- TIM_SetCompare3(TIM1,speed);
- TIM_SetCompare4(TIM1,speed);
- GPIO_SetBits(GPIOB,GPIO_Pin_0| GPIO_Pin_5 | GPIO_Pin_10);
- GPIO_SetBits(GPIOA,GPIO_Pin_3);
- GPIO_ResetBits(GPIOB,GPIO_Pin_1| GPIO_Pin_8 | GPIO_Pin_11);
- GPIO_ResetBits(GPIOA,GPIO_Pin_2);
- }
-
- void back(u16 speed)
- {
- TIM_SetCompare1(TIM1,speed);
- TIM_SetCompare2(TIM1,speed);
- TIM_SetCompare3(TIM1,speed);
- TIM_SetCompare4(TIM1,speed);
- GPIO_SetBits(GPIOB,GPIO_Pin_1| GPIO_Pin_8 | GPIO_Pin_11);
- GPIO_SetBits(GPIOA,GPIO_Pin_2);
- GPIO_ResetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_10);
- GPIO_ResetBits(GPIOA,GPIO_Pin_3);
- }
-
- void turn_left(u16 speed1,u16 speed2)
- {
- TIM_SetCompare1(TIM1,speed1);
- TIM_SetCompare2(TIM1,speed1);
- TIM_SetCompare3(TIM1,speed2);
- TIM_SetCompare4(TIM1,speed2);
- GPIO_SetBits(GPIOB,GPIO_Pin_0| GPIO_Pin_5 | GPIO_Pin_10);
- GPIO_SetBits(GPIOA,GPIO_Pin_3);
- GPIO_ResetBits(GPIOB,GPIO_Pin_1| GPIO_Pin_8 | GPIO_Pin_11);
- GPIO_ResetBits(GPIOA,GPIO_Pin_2);
- }
-
- void turn_right(u16 speed1,u16 speed2)
- {
- TIM_SetCompare1(TIM1,speed1);
- TIM_SetCompare2(TIM1,speed1);
- TIM_SetCompare3(TIM1,speed2);
- TIM_SetCompare4(TIM1,speed2);
- GPIO_SetBits(GPIOB,GPIO_Pin_0| GPIO_Pin_5 | GPIO_Pin_10);
- GPIO_SetBits(GPIOA,GPIO_Pin_3);
- GPIO_ResetBits(GPIOB,GPIO_Pin_1| GPIO_Pin_8 | GPIO_Pin_11);
- GPIO_ResetBits(GPIOA,GPIO_Pin_2);
- }
- void stop(void)
- {
- GPIO_ResetBits(GPIOB,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11);
- GPIO_ResetBits(GPIOA,GPIO_Pin_2 | GPIO_Pin_3);
- }
-
-
-
-