#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**********************/
|