为了感谢老大,也是为了和兄弟们共享,下面给出调试成功的代码
- /* 按键 EDMA3 事件触发测试 */
- #include "TL6748.h" // 创龙 DSP6748 开发板相关声明
- #include "hw_types.h" // 宏命令
- #include "hw_syscfg0_C6748.h" // 系统配置模块寄存器
- #include "soc_C6748.h" // DSP C6748 外设寄存器
- #include "psc.h" // 电源与睡眠控制宏及设备抽象层函数声明
- #include "gpio.h" // 通用输入输出口宏及设备抽象层函数声明
- #include "interrupt.h" // DSP C6748 中断相关应用程序接口函数声明及系统事件号定义
- #include "edma.h" // 直接内存访问宏及设备抽象层函数声明
- #include "edma_event.h" // 直接内存访问事件
- // 软件断点
- #define SW_BREAKPOINT asm(" SWBP 0 ");
- volatile char StringScr[] = "Tronlong GPIO KEY EDMA3 Application......nr";
- volatile char StringDst[64];
- // EDMA3 配置
- unsigned int chType = EDMA3_CHANNEL_TYPE_DMA;
- unsigned int chNum = EDMA3_CHA_GPIO_BNKINT6;//my_modify,EDMA3_CHA_GPIO_BNKINT0
- unsigned int tccNum = EDMA3_CHA_GPIO_BNKINT6;//my_modify,EDMA3_CHA_GPIO_BNKINT0
- unsigned int trigMode = EDMA3_TRIG_MODE_EVENT;
- unsigned int evtQ = 0;
- void PSCInit(void)
- {
- // 使能 GPIO 模块
- // 对相应外设模块的使能也可以在 BootLoader 中完成
- PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);//my_modify,SOC_PSC_1_REGS,unconcerned
- // 使能 EDMA3CC_0
- PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_CC1, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);//my_modify,HW_PSC_TC0,unconcerned
- // 使能 EDMA3TC_0
- PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_TC1, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);//my_modify,HW_PSC_CC0,unconcerned
- }
- void InterruptInit(void)
- {
- // 初始化 DSP 中断控制器
- IntDSPINTCInit();
- // 使能 DSP 全局中断
- IntGlobalEnable();
- }
- void GPIOBankPinMuxSet(void)
- {
- // 配置相应的 GPIO 口功能为普通输入输出口
- // 核心板 LED
- GPIOBank6Pin13PinMuxSetup();
- // 底板按键
- //GPIOBank0Pin6PinMuxSetup();
- //GPIOBank1Pin15PinMuxSetup();
- GPIOBank6Pin1PinMuxSetup();//my_modify
- }
- void GPIOBankPinInit(void)
- {
- // 核心板 LED
- GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); // GPIO6[13]
- // 底板按键
- //GPIODirModeSet(SOC_GPIO_0_REGS, 7, GPIO_DIR_INPUT); // USER0 KEY GPIO0[6]
- //GPIODirModeSet(SOC_GPIO_0_REGS, 32, GPIO_DIR_INPUT); // USER1 KEY GPIO1[15]
- GPIODirModeSet(SOC_GPIO_0_REGS, 98, GPIO_DIR_INPUT); // my_modify GPIO6[1]
- }
- void EDMA3GpioInit()
- {
- EDMA3CCPaRAMEntry paramSet;
- unsigned int acnt = 64; // 一维
- unsigned int bcnt = 1; // 二维
- unsigned int ccnt = 1; // 三维
- // 申请 EDMA3 通道
- EDMA3RequestChannel(SOC_EDMA31CC_0_REGS, chType, chNum, tccNum, evtQ);//my_modify,SOC_EDMA30CC_0_REGS
- // 配置参数 RAM
- paramSet.srcAddr = (unsigned int)(&StringScr);
- paramSet.destAddr = (unsigned int)(&StringDst);
- paramSet.aCnt = (unsigned short)acnt;
- paramSet.bCnt = (unsigned short)bcnt;
- paramSet.cCnt = (unsigned short)ccnt;
- // 设置 SRC / DES 索引
- paramSet.srcBIdx = (short)acnt;
- paramSet.destBIdx = (short)acnt;
- // A Sync 传输模式(一维传输模式)
- paramSet.srcCIdx = (short)acnt;
- paramSet.destCIdx = (short)acnt;
- paramSet.linkAddr = (unsigned short)0xFFFFu;
- paramSet.bCntReload = (unsigned short)0u;
- paramSet.opt = 0u;
- // Src 及 Dest 使用自增(INCR)模式
- paramSet.opt &= 0xFFFFFFFCu;
- // 配置 TCC
- paramSet.opt |= ((tccNum << EDMA3CC_OPT_TCC_SHIFT) & EDMA3CC_OPT_TCC);
- // 写参数 RAM
- EDMA3SetPaRAM(SOC_EDMA31CC_0_REGS, chNum, ¶mSet);//my_modify,SOC_EDMA30CC_0_REGS
- // 使能传输
- EDMA3EnableTransfer(SOC_EDMA31CC_0_REGS, chNum, trigMode);//my_modify,SOC_EDMA30CC_0_REGS
- }
- void USER0KEYIsr(void)
- {
- // 禁用 GPIO BANK 6 中断
- //GPIOBankIntDisable(SOC_GPIO_0_REGS, 0);
- //GPIOBankIntDisable(SOC_GPIO_0_REGS, 1);//my_modify,GPIO1[15],unconcerned
- GPIOBankIntDisable(SOC_GPIO_0_REGS, 6);//my_modify,GPIO6[1],unconcerned
- // 清除 GPIO BANK 6 中断事件
- //IntEventClear(SYS_INT_GPIO_B0INT);
- //IntEventClear(SYS_INT_GPIO_B1INT);
- IntEventClear(SYS_INT_GPIO_B6INT);//my_modify,unconcerned
- //if(GPIOPinIntStatus(SOC_GPIO_0_REGS, 7) == GPIO_INT_PEND)
- //if(GPIOPinIntStatus(SOC_GPIO_0_REGS, 32) == GPIO_INT_PEND)
- if(GPIOPinIntStatus(SOC_GPIO_0_REGS, 98) == GPIO_INT_PEND)//my_modify
- {
- // 清除中断状态
- //GPIOPinIntClear(SOC_GPIO_0_REGS, 7);
- //GPIOPinIntClear(SOC_GPIO_0_REGS, 32);
- GPIOPinIntClear(SOC_GPIO_0_REGS, 98);//my_modify,unconcerned
- // 核心板 LED
- unsigned int i;
- GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_HIGH);
- for(i=0x00FFFFFF;i>0;i--); // 延时
- GPIOPinWrite(SOC_GPIO_0_REGS, 110, GPIO_PIN_LOW);
- }
- // 使能 GPIO BANK 6 中断
- //GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);
- GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);//my_modify
- // 释放之前分配的 EDMA3 通道
- EDMA3FreeChannel(SOC_EDMA31CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, chNum, trigMode, tccNum, evtQ);//my_modify,SOC_EDMA30CC_0_REGS
- // EDMA3 初始化
- EDMA3GpioInit();
- }
- void GPIOBankPinInterruptInit(void)
- {
- // 底板按键中断
- // 配置 USER0 KEY GPIO0[6] 为下降沿触发
- //GPIOIntTypeSet(SOC_GPIO_0_REGS, 7, GPIO_INT_TYPE_FALLEDGE);
- //GPIOIntTypeSet(SOC_GPIO_0_REGS, 32, GPIO_INT_TYPE_FALLEDGE);//my_modify,GPIO1[15],unconcerned
- GPIOIntTypeSet(SOC_GPIO_0_REGS, 98, GPIO_INT_TYPE_FALLEDGE);//my_modify,GPIO6[1],unconcerned
- // 使能 GPIO BANK 中断
- //GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);
- //GPIOBankIntEnable(SOC_GPIO_0_REGS, 1); // USER0 KEY GPIO1[15] //my_modify,unconcerned
- GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); // USER0 KEY GPIO6[1] //my_modify,unconcerned
- // 注册中断服务函数
- //IntRegister(C674X_MASK_INT6, USER0KEYIsr);
- IntRegister(C674X_MASK_INT15, USER0KEYIsr);//my_modify,unconcerned
- // 映射中断到 DSP 可屏蔽中断
- //IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
- IntEventMap(C674X_MASK_INT15, SYS_INT_GPIO_B6INT);//my_modify,SYS_INT_GPIO_B0INT
- // 使能 DSP 可屏蔽中断
- //IntEnable(C674X_MASK_INT6);
- IntEnable(C674X_MASK_INT15);//my_modify,unconcerned
- }
- int main(void)
- {
- // 外设使能配置
- PSCInit();
- // 管脚复用配置
- GPIOBankPinMuxSet();
- // GPIO 管脚初始化
- GPIOBankPinInit();
- // DSP 中断初始化
- InterruptInit();
- // GPIO 管脚中断初始化
- GPIOBankPinInterruptInit();
- // EDMA3 初始化
- EDMA3GpioInit();
- // 主循环
- for(;;)
- {
- }
- }
复制代码
。
恭喜成功了 呵呵~ 多谢分享
|
|
2019-6-12 16:58:02
评论
举报
|
|
|