예제 #1
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;
}
예제 #2
0
//----------------------------------------------------------------------------------------------------
void UART_Init(void)
{
  uart_init_struct.UART_Uartx = UART4;
  uart_init_struct.UART_BaudRate = 115200;
  uart_init_struct.UART_RxPin =PTE25; //接收引脚
  uart_init_struct.UART_TxPin =PTE24; //发送引脚

  LPLD_UART_Init(uart_init_struct);
}
/*
 * 初始化UART5模块
 *
 */
void uart_init(void)
{
  uart0_init_struct.UART_Uartx = UART0; //使用UART5
  uart0_init_struct.UART_BaudRate = 9600; //设置波特率9600
  uart0_init_struct.UART_RxPin = PTB16;  //接收引脚为PTE9
  uart0_init_struct.UART_TxPin = PTB17;  //发送引脚为PTE8
  uart0_init_struct.UART_RxIntEnable = TRUE;    //使能接收中断
  uart0_init_struct.UART_RxIsr = uart_isr;      //设置接收中断函数
  //初始化UART
  LPLD_UART_Init(uart0_init_struct);
  //使能UART中断
  LPLD_UART_EnableIrq(uart0_init_struct);
}
예제 #4
0
void uart4_bluetooth_init(void)
{
	uart4_init_struct.UART_Uartx = UART4; //使用UART5
	uart4_init_struct.UART_BaudRate = 115200; //设置波特率115200
	uart4_init_struct.UART_RxPin = PTE25;  //接收引脚为PTE25
	uart4_init_struct.UART_TxPin = PTE24;  //发送引脚为PTE24
	uart4_init_struct.UART_RxIntEnable = TRUE;  //使能接收中断
	uart4_init_struct.UART_RxIsr = uart4_isr;  //设置接收中断函数	
	//初始化UART
	LPLD_UART_Init(uart4_init_struct);
	LPLD_UART_EnableIrq(uart4_init_struct);
	LPLD_UART_PutCharArr(UART4, "Initial uart4 successful.\r\n", 29);
}
예제 #5
0
파일: car_init.c 프로젝트: HolaRobo/car
void uart_interr_init()
{
    UART_InitTypeDef term_port_structure={0};
    
    term_port_structure.UART_Uartx = TERM_PORT;
    term_port_structure.UART_BaudRate = TERMINAL_BAUD;
    term_port_structure.UART_RxPin = PTA15;
    term_port_structure.UART_TxPin = PTA14;
    term_port_structure.UART_RxIntEnable = TRUE;    //使能接收中断
    term_port_structure.UART_RxIsr = uart_isr;      //设置接收中断函数
    LPLD_UART_Init(term_port_structure);
    
    LPLD_UART_EnableIrq(term_port_structure);    //Enable uart interrupt
}
/*
 * 初始化UART5模块
 *
 */
void uart_init(void)
{
  uart5_init_struct.UART_Uartx = UART5;  //使用UART5
  uart5_init_struct.UART_BaudRate = 9600; //设置波特率9600
  uart5_init_struct.UART_RxPin = PTE9;  //接收引脚为PTE9
  uart5_init_struct.UART_TxPin = PTE8;  //发送引脚为PTE8

#if USE_FIFO_Tx_Rx == USE
  uart5_init_struct.RxFIFO.FIFO_Enable = TRUE;
  uart5_init_struct.TxFIFO.FIFO_Enable = TRUE;
  uart5_init_struct.RxFIFO.FIFO_WaterMark = 1;
  uart5_init_struct.RxFIFO.FIFO_BufFlow_IntEnable = TRUE;
  uart5_init_struct.TxFIFO.FIFO_WaterMark = 1;
  uart5_init_struct.TxFIFO.FIFO_BufFlow_IntEnable = TRUE;
#endif
  
#if USE_DMA_Tx_Rx == USE
  uart5_init_struct.UART_RxDMAEnable = TRUE;    //使能接收DMA
  uart5_init_struct.UART_TxDMAEnable = TRUE;    //使能发送DMA
  //配置接收DMA
  uart_rev_dma_init_struct.DMA_CHx = DMA_CH0;                     //选择DMA CH0作为通道
  uart_rev_dma_init_struct.DMA_MajorLoopCnt   = sizeof(recv_ram_buf); //设置计数器长度为数组长度
  uart_rev_dma_init_struct.DMA_MinorByteCnt   = 1;                //设置每次的长度为byte
  uart_rev_dma_init_struct.DMA_MajorCompleteIntEnable = TRUE;     //设置DMA 计数器清零中断
  uart_rev_dma_init_struct.DMA_Req            = UART5_REV_DMAREQ; //设置DMA 请求为 UART rev
  uart_rev_dma_init_struct.DMA_DestAddr       = (uint32)recv_ram_buf; //设置目的地址为 recv_ram_buf
  uart_rev_dma_init_struct.DMA_DestAddrOffset = 1;                //每一次DMA请求,地址加1
  uart_rev_dma_init_struct.DMA_DestDataSize   = DMA_DST_8BIT;     //设置目的长度为byte
  uart_rev_dma_init_struct.DMA_SourceAddr     = (uint32)&UART5->D;//设置UART D为源地址
  uart_rev_dma_init_struct.DMA_SourceDataSize = DMA_SRC_8BIT;     //设置源长度为byte
  uart_rev_dma_init_struct.DMA_AutoDisableReq = FALSE;            //循环接收
  uart_rev_dma_init_struct.DMA_Isr = dma_isr;
  //配置发送DMA
  uart_trn_dma_init_struct.DMA_CHx = DMA_CH1;                     //选择DMA CH0作为通道
  uart_trn_dma_init_struct.DMA_MajorLoopCnt   = sizeof(recv_ram_buf); //设置计数器长度为数组长度
  uart_trn_dma_init_struct.DMA_MinorByteCnt   = 1;                //设置每次的长度为byte
  uart_trn_dma_init_struct.DMA_MajorCompleteIntEnable = FALSE;    //清空DMA 计数器清零中断
  uart_trn_dma_init_struct.DMA_Req            = UART5_TRAN_DMAREQ;//设置DMA 请求为 UART trn
  uart_trn_dma_init_struct.DMA_SourceAddr     = (uint32)recv_ram_buf; //设置目的地址为 recv_ram_buf
  uart_trn_dma_init_struct.DMA_SourceAddrOffset = 1;               //每一次DMA请求,地址加1
  uart_trn_dma_init_struct.DMA_SourceDataSize = DMA_SRC_8BIT;     //设置源长度为byte
  uart_trn_dma_init_struct.DMA_DestAddr       = (uint32)&UART5->D;//设置UART D为源地址
  uart_trn_dma_init_struct.DMA_DestDataSize   = DMA_DST_8BIT;     //设置目的长度为byte
  uart_trn_dma_init_struct.DMA_AutoDisableReq = TRUE;             //禁止循环发送
  
  LPLD_DMA_Init(uart_rev_dma_init_struct); //初始化DMA 接收
  LPLD_DMA_Init(uart_trn_dma_init_struct); //初始化DMA 发送
  LPLD_DMA_EnableReq(DMA_CH0);         //使能DMA请求

  LPLD_DMA_EnableIrq(uart_rev_dma_init_struct);   //使能DMA CH0中断
#endif
  
  uart5_init_struct.UART_RxIntEnable = TRUE;    //使能接收中断
  uart5_init_struct.UART_TxIntEnable = TRUE;    //使能发送中断
  uart5_init_struct.UART_RxIsr = uart_isr;      //设置接收中断函数
  LPLD_UART_Init(uart5_init_struct);            //初始化UART
  
#if USE_DMA_Tx_Rx != USE
  //使能UART中断
  LPLD_UART_EnableIrq(uart5_init_struct);
#endif
}