TI论坛
直播中

黄剑屏

7年用户 258经验值
私信 关注
[问答]

C6416外部中断在没有极性信号输入编译器提示语句无效怎么办?

我是用TMS320C6416T的开发板,用外部中断6作为中断源,在程序配置好相关寄存器,并将程序下载到开发板并运行,在外部中断6引脚未接信号,此时用示波器观察到外部中断6引脚的信号一直是3.3V,通过设置断点观察到程序可以一直进入中断,观察寄存器看到外部中断6的IFR的一直是有效的;另外通过在程序中设置EXTPOL寄存器,编译器提示语句无效,下面是我的程序,求各位大神指教,不甚感激啊!
static GPIO_Config myGpioCfg1=[
0x00000000, //GPGC: 直通模式下向CPU发送中断
0x000000F0, //GPEN: GP4、5、6、7设为输入输出状态
// 0x00000000, //GPDIR: GP0 - GP15 设为输入
0x00000030, //GPDIR: GP4 - GP5 设为输出
0x00000000, //GPVAL: GP0 - GP15 值锁存为0
// 0x00000030, //GPVAL: GP4 - GP5 值锁存为1
0x000000C0, //GPHM: GP4 - GP7 允许接受中断
0x000000C0, //GPLM:GP4 - GP7 允许接受中断
// 0x00000000 //GPPOL: 上升沿触发
0x0000000F //GPPOL: 下降沿触发
];
void main(void)
[
GPIO_Handle myhGpio;
//Initialise CSL
CSL_init();
//配置GPIO
myhGpio = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);
GPIO_config(myhGpio,&myGpioCfg1);
// IRQ_EXTPOL_XIP_OF(0xF);
*( volatile unsigned int* )EXTPOL=0x0000000F;
//中断设置
set_intrupt();

for(;;)[

]
]
////////////////////////////////////////////////////////////////////////////
//中断寄存器配置函数
////////////////////////////////////////////////////////////////////////////
void set_intrupt(void)[
IRQ_setVecs(vectors);
*( volatile unsigned int* )EXTPOL=0x0000000F;
IRQ_resetAll();
IRQ_map(IRQ_EVT_EXTINT6,6);
IRQ_map(IRQ_EVT_EDMAINT,8);
IRQ_nmiEnable();
IRQ_reset(IRQ_EVT_EXTINT6);
IRQ_enable(IRQ_EVT_EXTINT6);
IRQ_enable(IRQ_EVT_EDMAINT);
//允许通道6中断;
EDMA_intEnable(6);
IRQ_globalEnable();
]

回帖(8)

张依然

2020-5-26 11:23:41
void c_int04(void)
[
              GPIOBankIntDisable(SOC_GPIO_0_REGS, 0);
              IntEventClear(SYS_INT_GPIO_B0INT);

              GPIOPinIntClear(SOC_GPIO_0_REGS, 13);
              GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);
]
你看下这个中断子函数,你有没有对对应的寄存器clear。
举报

黄剑屏

2020-5-26 11:35:07
引用: keven杨 发表于 2020-5-26 11:23
void c_int04(void)
[
              GPIOBankIntDisable(SOC_GPIO_0_REGS, 0);

我的程序是进入中断服务函数,先清除该中断标志位,关闭中断,退出中断服务函数时候再使能中断的
举报

李波

2020-5-26 11:53:03
引用: dkhwakd 发表于 2020-5-26 11:35
我的程序是进入中断服务函数,先清除该中断标志位,关闭中断,退出中断服务函数时候再使能中断的

在中断程序里是不需要做中断的关闭与使能的,因为硬件自动把GIE关闭了,退出中断时执行B IRP会自动打开GIE,你要做的是清除模块的中断状态。
                                                                         http://processors.wiki.ti.com/index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
举报

黄剑屏

2020-5-26 12:09:23
引用: lifei639156 发表于 2020-5-26 11:53
在中断程序里是不需要做中断的关闭与使能的,因为硬件自动把GIE关闭了,退出中断时执行B IRP会自动打开GIE,你要做的是清除模块的中断状态。
                                                                         http://processors.wiki.ti.com/index.php/Main_Page
Think Over Before Asking.

哦,这样啊,那我在中断服务子函数中做了中断的关闭与使能,应该是多余的了,但它应该不会影响程序进入中断函数吧。我是在外部中断6引脚直接没有接任何信号时候,用示波器观察到的波形一直是3.3V左右的高电平,但程序跑起来之后,可以连续进入外部中断6,不知道这个是什么原因导致的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分