#include "stm32f4xx.h"
#include "bsp_general_tim.h"
#include "bsp_key.h"
#include "bsp_motor.h"
#include "bsp_irda.h"
#include "bsp_SysTick.h"
#include "bsp_led.h"
#define CLI() __set_PRIMASK(1) /* 关闭总中断 */
#define SEI() __set_PRIMASK(0) /* 开放总中断 */
extern __IO uint16_t ChannelPulse;
extern uint8_t frame_flag;
extern uint8_t isr_cnt;
extern uint8_t frame_cnt;
/**
* @brief Scan_Deal函数
* @param 无
* @retval 无
*/
void Adjust_PWM(void)
{
/* 扫描KEY1 */
if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON )
{
/* 增大占空比 */
if(ChannelPulse<1000)
ChannelPulse+=100;
else
ChannelPulse=1000;
TIM_SetCompare1(GENERAL_TIM,ChannelPulse);
TIM_SetCompare3(GENERAL_TIM,ChannelPulse);
}
/* 扫描KEY2 */
if( Key_Scan(KEY2_GPIO_PORT,KEY2_PIN) == KEY_ON )
{
/* 减小占空比 */
if(ChannelPulse>=300)
ChannelPulse-=100;
else
ChannelPulse=0;
TIM_SetCompare1(GENERAL_TIM,ChannelPulse);
TIM_SetCompare3(GENERAL_TIM,ChannelPulse);
}
}
/**
* @brief ControlCar函数
* @param 无
* @retval 无
*/
void ControlCar(void)
{
uint8_t key_val;
for(;;)
{
if( frame_flag == 1 ) /* 一帧红外数据接收完成 */
{
key_val = IrDa_Process();
/* 不同的遥控器面板对应不同的键值,需要实际测量 */
switch( key_val )
{
case 2:
{
LED1_TOGGLE;
car_go;
break;
}
case 152:
{
LED1_TOGGLE;
car_back;
break;
}
case 224:
{
LED1_TOGGLE;
car_left;
break;
}
case 144:
{
LED1_TOGGLE;
car_right;
break;
}
case 168:
{
LED1_TOGGLE;
car_stop;
break;
}
case 34:
{
LED1_TOGGLE;
car_left_360;
break;
}
case 194:
{
LED1_TOGGLE;
car_right_360 ;
break;
}
default:
break;
}
}
}
}
/**
* @brief main函数
* @param 无
* @retval 无
*/
int main(void)
{
/* 配置SysTick 为10us中断一次 */
SysTick_Init();
/* 重新配置SysTick的中断优先级为最高,要不然SysTick延时中断抢占不了IO EXTI中断
* 因为SysTick初始化时默认配置的优先级是最低的
* 或者当你用其他定时器做延时的时候,要配置定时器的优先级高于IO EXTI中断的优先级
*/
NVIC_SetPriority (SysTick_IRQn, 0);
/* 初始化按键GPIO */
/* 初始化按键GPIO */
/* config the led */
LED_GPIO_Config();
LED1_ON;
/* 初始化按键GPIO */
Key_GPIO_Config();
/*初始化MOTOR GPIO */
MOTOR_GPIO_Config();
/* 初始化通用定时器PWM输出 */
TIMx_Configuration();
/* 初始化红外接收头CP1838用到的IO */
IrDa_Init();
while(1)
{
Adjust_PWM();
ControlCar();
}
}
/*********************************************END OF FILE**********************/
|