华大HC32F460 DMA RAM TO RAM传输实验

本文介绍了如何在华大HC32F460单片机上使用DMA进行RAM到RAM的数据快速传输实验。通过MDK5.22软件,详细阐述了从工程配置、DMA驱动添加、模式设置、中断处理到实际传输过程的步骤,并提供了中断回调函数的创建。实验中涉及四种不同的传输方式,通过串口观察传输效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实验目标

       本实验通过调用DMA相关库函数实现RAM到RAM的快速数据传输,工程中举了4种情况传数.通过串口可以观察相应的现象。

2.实验准备

       硬件搭建:ZW-HC32F460-BZ标准版开发板1套

       软件搭建:MDK5.22

3.驱动代码

 【外围DMA初始化函数】

    函数原型:   u8 DMAInt( void )

   功能说明:   外围DMA的初始化,初始一个从源地址到目标地址的传送,同时引起传送结束中断

   输入参数:   DesAddr,传输的目标地址

   输出参数:   0为成功,其它为不成功

   特殊备注:   源地址,目标地址,数据宽度等都可以在头文件中配置.

u8 DMAInt(  DMA_S *dmas )

{

    u32 i;

    stc_dma_config_t stcDmaCfg;

    MEM_ZERO_STRUCT( stcDmaCfg );

    DMAisrInt( dmas->BtcCb, dmas->TcCb );

    /* Disable DMA1. */

    DMA_Cmd( DMA_UNIT, Disable );

    DMA_ClearIrqFlag( DMA_UNIT, DMA_CHX, BlkTrnCpltIrq );   //清块传输完成中断

    DMA_ClearIrqFlag( DMA_UNIT, DMA_CHX, TrnCpltIrq );      //清传输完成中断

    /* set the destination address */

    stcDmaCfg.u32DesAddr = ( u32 )( dmas->DesAddr );        //设置源地址

    stcDmaCfg.u32SrcAddr = ( u32 )( dmas->SrcAddr );

    stcDmaCfg.u16BlockSize = dmas->BlockSize;               //配置块的尺寸为1个数据,数据的宽度由.CHxCTL->HSIZE决定

                                                            //最大1024个数据

    stcDmaCfg.u16TransferCnt = dmas->TransferCnt;           //传多少个块,最大65535

    //通道配置

    stcDmaCfg.stcDmaChCfg.enLlpEn = Disable;                //连锁传输配置位关闭

    stcDmaCfg.stcDmaChCfg.enSrcRptEn = Disable;             //源地址重复传输始能 是否允许重载源地址初值

    stcDmaCfg.stcDmaChCfg.enDesRptEn = Disable;             //目标重复传输始能 是否允许重载目标地址初值

    //设置源地址和目标地址模式

    stcDmaCfg.stcDmaChCfg.enSrcInc = ( en_dma_address_mode_t )DMA_SRC_ADDR_MODE;    //地址增长模式

    stcDmaCfg.stcDmaChCfg.enDesInc = ( en_dma_address_mode_t )DMA_DES_ADDR_MODE;

    //开启通道中断

    stcDmaCfg.stcDmaChCfg.enIntEn = ( en_functional_state_t )DMA_INT_EN;            //Enable;                 //对应通道的中断使能

    for( i = 0; i < 2; i ++ )   

    {

        if( dmas->width & ( 0x01l <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值