void init_DMA()
{
  /*ADC_DMA*/
  dma_init_struct.DMA_CHx = DMA_CH15;   //使用Ch15通道
  dma_init_struct.DMA_Req = ADC0_DMAREQ;        //DMA请求源为ADC0
  dma_init_struct.DMA_PeriodicTriggerEnable = TRUE;      //周期触发
  dma_init_struct.DMA_MajorLoopCnt = LENGTH;        //主循环计数滤波数组长度次
  dma_init_struct.DMA_MinorByteCnt = 2; //次循环传输字节计数(由于ADC采样为12位,因此传输2字节)
  dma_init_struct.DMA_SourceAddr = (uint32)&(ADC0->R[0]);       //源地址:ADC0结果寄存器A地址
  dma_init_struct.DMA_SourceDataSize = DMA_SRC_16BIT;   //源地址传输数据宽度16位
  dma_init_struct.DMA_DestAddr = (uint32)&Result_A;       //目的地址
  dma_init_struct.DMA_DestDataSize = DMA_DST_16BIT;     //目的地址传输数据宽度16位
  dma_init_struct.DMA_AutoDisableReq = FALSE;   //禁用自动禁用请求,即不受主循环计数计数限制
  dma_init_struct.DMA_MajorCompleteIntEnable = TRUE;
  dma_init_struct.DMA_Isr = dmaisr;
  dma_init_struct.DMA_DestAddrOffset = 2;       //目的地址偏移:每次读入增加2
  //dma_init_struct.DMA_LastDestAddrAdj = -(2*LENGTH);
  //初始化DMA
  LPLD_DMA_Init(dma_init_struct);
  //使能DMA请求
  LPLD_DMA_EnableReq(DMA_CH15); 
  LPLD_DMA_EnableIrq(dma_init_struct);
  
  //  /*DAC_DMA*/
  //  dma2_init_struct.DMA_CHx = DMA_CH16;   //使用Ch15通道
  //  dma2_init_struct.DMA_Req = ADC1_DMAREQ;        //DMA请求源为DAC0
  //  dma2_init_struct.DMA_PeriodicTriggerEnable = TRUE;      //周期触发
  //  dma2_init_struct.DMA_MajorLoopCnt = LENGTH;        //主循环计数滤波数组长度次
  //  dma2_init_struct.DMA_MinorByteCnt = 2; //次循环传输字节计数(由于ADC采样为12位,因此传输2字节)
  //  dma2_init_struct.DMA_SourceAddr = (uint32)&Result_B;       //源地址:
  //  dma2_init_struct.DMA_SourceDataSize = DMA_SRC_16BIT;   //源地址传输数据宽度16位
  //  dma2_init_struct.DMA_SourceAddrOffset = 2;
  //  dma2_init_struct.DMA_LastSourceAddrAdj = -(2*LENGTH);
  //  dma2_init_struct.DMA_DestAddr = (uint32)&(DAC0->DAT[0].DATL);       //目的地址
  //  dma2_init_struct.DMA_DestDataSize = DMA_DST_16BIT;     //目的地址传输数据宽度16位
  //  //dma2_init_struct.DMA_DestAddrOffset = 2; 
  //  dma2_init_struct.DMA_MajorCompleteIntEnable = TRUE;
  //  dma2_init_struct.DMA_Isr = dma2isr;
  //  dma2_init_struct.DMA_AutoDisableReq = FALSE;   //禁用自动禁用请求,即不受主循环计数计数限制
  // // dma2_init_struct.DMA_LastDestAddrAdj = -(2*LENGTH);
  //  LPLD_DMA_Init(dma2_init_struct);
  //  //使能DMA请求
  //  LPLD_DMA_EnableReq(DMA_CH16); 
  //  LPLD_DMA_EnableIrq(dma2_init_struct);
  
}
/*
 * 初始化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
}
/*
 * DAM CH0中断函数
 *
 */
void dma_isr(void)
{
  LPLD_DMA_EnableReq(DMA_CH1);         //使能DMA请求
}