Esempio n. 1
0
void main (void)
{
#if(PREEMPTION == 1)
  //配置PIT0的NVIC分组
  nvic_init_struct.NVIC_IRQChannel = PIT0_IRQn;
  nvic_init_struct.NVIC_IRQChannelGroupPriority = NVIC_PriorityGroup_1;
  nvic_init_struct.NVIC_IRQChannelPreemptionPriority = 0;
  LPLD_NVIC_Init(nvic_init_struct);
  //配置PIT1的NVIC分组
  nvic_init_struct.NVIC_IRQChannel = PIT1_IRQn;
  nvic_init_struct.NVIC_IRQChannelGroupPriority = NVIC_PriorityGroup_1;
  nvic_init_struct.NVIC_IRQChannelPreemptionPriority = 1;
  LPLD_NVIC_Init(nvic_init_struct);
#endif
  
  //配置PIT0
  pit0_init_struct.PIT_Pitx = PIT0;
  pit0_init_struct.PIT_PeriodMs = 500;
  pit0_init_struct.PIT_Isr = pit0_isr;
  LPLD_PIT_Init(pit0_init_struct);
  //配置PIT1
  pit1_init_struct.PIT_Pitx = PIT1;
  pit1_init_struct.PIT_PeriodMs = 1000;
  pit1_init_struct.PIT_Isr = pit1_isr;
  LPLD_PIT_Init(pit1_init_struct);
  
  LPLD_PIT_EnableIrq(pit0_init_struct);
  LPLD_PIT_EnableIrq(pit1_init_struct);
  
  while(1)
  {
  } 
}
Esempio n. 2
0
void control_init(void)
{
  init_gpio();
  init_pwm();
  LPLD_UART_Init(UART2, 115200);  //裁判机
  LPLD_UART_RIE_Enable(UART2, uart2_recv_isr);
  while (!GetCmdAction());
  
  while(1) {
      right_set_v(V_SLOW);
      left_set_v(V_SLOW);
	  scan_infrared(r1, r2, r3, r4);
	  if(IS_AT_CORNER()) break;
  }
  
  motor_time_wait = 0;
  while (1) {
	if(motor_time_wait < 100000)//等待电机反应时间 不然直接下一步有影响 没有彻底停下来
	{
        motor_time_wait ++;
        right_set_v(0);
        left_set_v(0);
	}
	else
	{
        motor_time_wait = 0;
		break;
	}
  }
  
  can_interrupt = 1;
  //计时器寄存器每减少50过1us
  LPLD_UART_Init(UART1, 19200); //读卡器
  
  LPLD_UART_Init(UART3, 9600);  //蓝牙
  LPLD_UART_Init(UART4, 9600); 
  LPLD_UART_Init(UART5, 19200); //读卡器
  LPLD_UART_RIE_Enable(UART1, uart1_recv_isr);
  
  LPLD_UART_RIE_Enable(UART3, uart3_recv_isr);
  //LPLD_UART_RIE_Enable(UART4, uart4_recv_isr);
  LPLD_UART_RIE_Enable(UART5, uart5_recv_isr);
  LPLD_LPTMR_Init(MODE_PLACC, 0, LPTMR_ALT1, IRQ_DISABLE, NULL);
  //UP_LCD_Init();		//初始化LCD
  LPLD_ADC_Init(ADC0, MODE_16, CONV_SING);
  
  memset(control_callbacks, NULL, sizeof(control_callbacks));
  memset(r1, 0, sizeof(r1));
  memset(r2, 0, sizeof(r2));
  memset(r3, 0, sizeof(r3));
  memset(r4, 0, sizeof(r4));
  
  LPLD_PIT_Init(PIT0, 5000, pit_isr0); //电机控制
  LPLD_PIT_Init(PIT1, 100000, pit_isr1);  //计时
  TIME_PASSED = 0;
}
void init_PIT()
{
  pit0_init_struct.PIT_Pitx = PIT0;     //选择PIT0
  pit0_init_struct.PIT_PeriodUs = MY_SAMPLE_TIME;  //PIT0计数周期500ms
  pit0_init_struct.PIT_Isr = pitdacisr;
  //初始化PIT0
  LPLD_PIT_Init(pit0_init_struct); 
  LPLD_PIT_EnableIrq(pit0_init_struct);
}
//--------------------------------------------------------------------------------------------------------
void PIT_Init(void)
{
  pit_init_struct.PIT_Pitx = PIT0;
  pit_init_struct.PIT_PeriodMs = 1;      //定时周期1毫秒
  pit_init_struct.PIT_Isr = PIT_Signal;  //设置中断函数名

  LPLD_PIT_Init(pit_init_struct);
  LPLD_PIT_EnableIrq(pit_init_struct);
}
/*
 * 初始化PIT定时器
 *
 */
void pit_init(void)
{
  //配置定时周期中断参数
  pit_init_struct.PIT_Pitx = PIT0;
  pit_init_struct.PIT_PeriodMs = 20;    //20毫秒产生一起中断
  pit_init_struct.PIT_Isr = pit_isr;
  //初始化PIT
  LPLD_PIT_Init(pit_init_struct);
  //使能PIT定时中断
  LPLD_PIT_EnableIrq(pit_init_struct);
}
/*
 * 初始化PIT0和PIT1通道
 *
 */
void pit_init(void)
{
  //配置PIT0参数
  pit0_init_struct.PIT_Pitx = PIT0;
  pit0_init_struct.PIT_PeriodS = 2;     //定时周期2秒
  pit0_init_struct.PIT_Isr = pit0_isr;  //设置中断函数
  //初始化PIT0
  LPLD_PIT_Init(pit0_init_struct);  
    
  //配置PIT1参数
  pit1_init_struct.PIT_Pitx = PIT1;
  pit1_init_struct.PIT_PeriodMs = 1000; //定时周期1000毫秒
  pit1_init_struct.PIT_Isr = pit1_isr;  //设置中断函数
  //初始化PIT1
  LPLD_PIT_Init(pit1_init_struct);
  
  //使能PIT0和PIT1
  LPLD_PIT_EnableIrq(pit0_init_struct);
  LPLD_PIT_EnableIrq(pit1_init_struct);
}
Esempio n. 7
0
void control_init()  //初始化方向,速度和传感器映射顺序
{
      LPLD_PIT_Init(PIT0,20000,do_control); //设置20ms中断,每20ms控制一次电机
	  for(int i=0; i<EVEN_NUM; i++)
	  {
		for(int j=0; j<CONTROL_ACTION_NUM; j++)
		{
			control_call_back_function[j][i]=NULL;
		}
	  }
        //for(int i=0;i<10;i++) bad_infrare[i]=0;  //标记损坏的红外,暂不用
      //  bad_infrare[5]=1;
}
Esempio n. 8
0
void pit_init()
{
    PIT_InitTypeDef pit0_init_struct={PIT0};
    
    pit0_init_struct.PIT_Pitx = PIT0;            //配置PIT0参数
    pit0_init_struct.PIT_PeriodMs = PIT0_MS;     //定时周期
    pit0_init_struct.PIT_Isr = pit0_isr;         //设置中断函数
    
    LPLD_PIT_Init(pit0_init_struct);             //初始化PIT0
    
    LPLD_PIT_EnableIrq(pit0_init_struct);        //使能PIT0
    
    PIT->CHANNEL[PIT1].LDVAL = 0xFFFFFFFF;       //用于测程序执行时间
    PIT->CHANNEL[PIT1].TCTRL |= PIT_TCTRL_TEN_MASK;
}
Esempio n. 9
0
void infrare_init()
{
	//前排红外front_infrare
	LPLD_GPIO_Init(PTB, 9, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 10, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 11, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 18, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 19, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 20, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 21, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 22, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTC, 6, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTC, 7, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTC, 8, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	//后排红外tail_infrare
	LPLD_GPIO_Init(PTB, 0, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTA, 5, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTA, 12, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTA, 13, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTA, 14, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTA, 16, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTA, 17, DIR_INPUT, INPUT_PUP, IRQC_DIS);

	LPLD_GPIO_Init(PTD, 1, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTD, 2, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTD, 3, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTB, 1, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	//左侧红外left_infrare
	LPLD_GPIO_Init(PTE, 24, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTE, 25, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTE, 26, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	//右侧红外right_infrare
	LPLD_GPIO_Init(PTC, 9, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTC, 12, DIR_INPUT, INPUT_PUP, IRQC_DIS);
	LPLD_GPIO_Init(PTC, 13, DIR_INPUT, INPUT_PUP, IRQC_DIS);  

	LPLD_PIT_Init(PIT1,5000,infrare_update);
}
Esempio n. 10
0
void pit_init(PITx PIT_Pitx, uint32 PIT_PeriodUs)
{
	pit_init_struct.PIT_Pitx = PIT_Pitx;     //选择PIT0
	pit_init_struct.PIT_PeriodUs = PIT_PeriodUs;  //PIT0计数周期500ms
	LPLD_PIT_Init(pit_init_struct);  
}