📄 main.c
字号:
#include <csl.h>
#include <csl_edma.h>
#include <csl_irq.h>
#include "base.h"
#define LED (*(unsigned char *)0x60000000)
unsigned int buffs_[100]={0x1c,0x1f,0,5,5,55,7,7,8,8};
unsigned int buffd_[100];
unsigned int buffd0_[100];
EDMA_Handle hedma_xevt0_;
EDMA_Handle hedma_xevt1_;
EDMA_Handle hedma_re_xevt0_;
EDMA_Handle hedma_re_xevt1_;
void edma_isr(int tcc)
{
if(tcc ==12)
LED = 0x01;
if(tcc ==14)
LED = 0x02;
}
void main(void)
{
char i,j;
EDMA_Config edma_cfg_xevt0 = {
EDMA_OPT_RMK(
EDMA_OPT_PRI_LOW,
EDMA_OPT_ESIZE_32BIT,
EDMA_OPT_2DS_NO,
EDMA_OPT_SUM_INC,
EDMA_OPT_2DD_NO,
EDMA_OPT_DUM_INC,
EDMA_OPT_TCINT_YES, // EDMA Interrupt enable
EDMA_OPT_TCC_OF(12),
EDMA_OPT_TCCM_DEFAULT,
EDMA_OPT_ATCINT_DEFAULT,
EDMA_OPT_ATCC_DEFAULT,
EDMA_OPT_PDTS_DEFAULT,
EDMA_OPT_PDTD_DEFAULT,
EDMA_OPT_LINK_NO, // auto reload
EDMA_OPT_FS_YES
),
EDMA_SRC_OF(buffs_),
EDMA_CNT_RMK(
EDMA_CNT_FRMCNT_OF(0),
EDMA_CNT_ELECNT_OF(100)
),
EDMA_DST_OF(buffd_),
EDMA_IDX_OF(0),
EDMA_RLD_RMK(
EDMA_RLD_ELERLD_OF(0),
EDMA_RLD_LINK_OF(0)
)
};
EDMA_Config edma_cfg_xevt1 = {
EDMA_OPT_RMK(
EDMA_OPT_PRI_LOW,
EDMA_OPT_ESIZE_32BIT,
EDMA_OPT_2DS_NO,
EDMA_OPT_SUM_INC,
EDMA_OPT_2DD_NO,
EDMA_OPT_DUM_INC,
EDMA_OPT_TCINT_NO, // EDMA Interrupt enable
EDMA_OPT_TCC_OF(14),
EDMA_OPT_TCCM_DEFAULT,
EDMA_OPT_ATCINT_DEFAULT,
EDMA_OPT_ATCC_DEFAULT,
EDMA_OPT_PDTS_DEFAULT,
EDMA_OPT_PDTD_DEFAULT,
EDMA_OPT_LINK_NO, // auto reload
EDMA_OPT_FS_YES
),
EDMA_SRC_OF(buffs_),
EDMA_CNT_RMK(
EDMA_CNT_FRMCNT_OF(0),
EDMA_CNT_ELECNT_OF(100)
),
EDMA_DST_OF(buffd0_), // McBsp2 DXR2 Address
EDMA_IDX_OF(0),
EDMA_RLD_RMK(
EDMA_RLD_ELERLD_OF(0),
EDMA_RLD_LINK_OF(0)
)
};
hedma_xevt0_ = EDMA_open(EDMA_CHA_XEVT0, EDMA_OPEN_RESET);
EDMA_config(hedma_xevt0_, &edma_cfg_xevt0);
hedma_xevt1_ = EDMA_open(EDMA_CHA_XEVT1, EDMA_OPEN_RESET);
EDMA_config(hedma_xevt1_, &edma_cfg_xevt1);
EDMA_chain(hedma_xevt0_,hedma_xevt1_,EDMA_TCC_SET,0);
EDMA_enableChaining(hedma_xevt1_);
EDMA_intEnable(EDMA_CHA_XEVT0);
EDMA_intClear(EDMA_CHA_XEVT0);
EDMA_intEnable(EDMA_CHA_XEVT1);
EDMA_intClear(EDMA_CHA_XEVT1);
IRQ_enable(IRQ_EVT_EDMAINT);
IRQ_globalEnable();
EDMA_intHook(EDMA_CHA_XEVT0, edma_isr);
EDMA_intHook(EDMA_CHA_XEVT1, edma_isr);
while(1){
for(i = 0 ; i < 5; i++)
buffs_[i] =j++;
EDMA_setChannel(hedma_xevt0_);
//delay_us(2000000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -