7.8.1.1.2 Code
Copy-paste the following setup code to your user application:
Add the below section to user application initialization (typically the start of main()):#define DATA_LENGTH (512)staticuint8_t source_memory[DATA_LENGTH];staticuint8_t destination_memory[DATA_LENGTH];staticvolatilebooltransfer_is_done =false;COMPILER_ALIGNED(16)DmacDescriptor example_descriptor SECTION_DMAC_DESCRIPTOR;staticvoidtransfer_done(struct dma_resource* const resource ){transfer_is_done =true;}staticvoidconfigure_dma_resource(structdma_resource *resource){structdma_resource_config config;dma_get_config_defaults(&config);dma_allocate(resource, &config);}staticvoidsetup_transfer_descriptor(DmacDescriptor *descriptor ){structdma_descriptor_config descriptor_config;dma_descriptor_get_config_defaults(&descriptor_config);descriptor_config.block_transfer_count =sizeof(source_memory);descriptor_config.source_address = (uint32_t)source_memory +sizeof(source_memory);descriptor_config.destination_address = (uint32_t)destination_memory +sizeof(source_memory);dma_descriptor_create(descriptor, &descriptor_config);}
configure_dma_resource(&example_resource);setup_transfer_descriptor(&example_descriptor);dma_add_descriptor(&example_resource, &example_descriptor);dma_register_callback(&example_resource, transfer_done,DMA_CALLBACK_TRANSFER_DONE);dma_enable_callback(&example_resource, DMA_CALLBACK_TRANSFER_DONE);for(uint32_t i = 0; i < DATA_LENGTH; i++) {source_memory[i] = i;}
