staticvoidtransfer_done_rx(structdma_resource*constresource ){dma_start_transfer_job(&usart_dma_resource_tx);}
staticvoidtransfer_done_tx(structdma_resource*constresource ){dma_start_transfer_job(&usart_dma_resource_rx);}
structdma_resource_config config;
dma_get_config_defaults(&config);
config.peripheral_trigger = EDBG_CDC_SERCOM_DMAC_ID_RX;config.trigger_action = DMA_TRIGGER_ACTON_BEAT;
dma_allocate(resource, &config);
structdma_descriptor_config descriptor_config;
dma_descriptor_get_config_defaults(&descriptor_config);
descriptor_config.beat_size = DMA_BEAT_SIZE_HWORD;descriptor_config.src_increment_enable =false;descriptor_config.block_transfer_count = BUFFER_LEN;descriptor_config.destination_address =(uint32_t)string+sizeof(string);descriptor_config.source_address =(uint32_t)(&usart_instance.hw->USART.DATA.reg);
dma_descriptor_create(descriptor, &descriptor_config);
structdma_resource_config config;
dma_get_config_defaults(&config);
config.peripheral_trigger = EDBG_CDC_SERCOM_DMAC_ID_TX;config.trigger_action = DMA_TRIGGER_ACTON_BEAT;
dma_allocate(resource, &config);
structdma_descriptor_config descriptor_config;
dma_descriptor_get_config_defaults(&descriptor_config);
descriptor_config.beat_size = DMA_BEAT_SIZE_HWORD;descriptor_config.dst_increment_enable =false;descriptor_config.block_transfer_count = BUFFER_LEN;descriptor_config.source_address = (uint32_t)string+sizeof(string);descriptor_config.destination_address =(uint32_t)(&usart_instance.hw->USART.DATA.reg);
dma_descriptor_create(descriptor, &descriptor_config);