使用TMS320F28377D开发板,写一个使用GPIO46作为按键输入中断的epwm程序
时间: 2024-03-24 09:39:43 浏览: 62
好的,让我来帮您解答这个问题。
首先,您需要在您的开发板上连接好GPIO46和按键。接下来,您可以使用以下代码作为参考来设置GPIO46作为按键输入中断并编写epwm程序:
```c
#include "F2837xD_device.h"
#include "F2837xD_Examples.h"
interrupt void epwm_isr(void);
void main(void)
{
InitSysCtrl();
InitPieCtrl();
// 使能PIE
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
// 初始化EPWM
InitEPwm1Gpio();
InitEPwm1();
// 设置GPIO46为输入引脚
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO46 = 0;
GpioCtrlRegs.GPIOQSEL2.bit.GPIOQ14 = 0;
GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0xFF;
EDIS;
// 使能GPIO46的中断
PieCtrlRegs.PIEIER12.bit.INTx14 = 1;
IER |= M_INT12;
// 启用全局中断
EINT;
ERTM;
// 死循环
for(;;);
}
interrupt void epwm_isr(void)
{
// 处理EPWM中断
// ...
// 清除中断标志位
EPwm1Regs.ETCLR.bit.INT = 1;
// 返回
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}
interrupt void gpio46_isr(void)
{
// 处理GPIO46中断
// ...
// 清除中断标志位
PieCtrlRegs.PIEACK.all = PIEACK_GROUP12;
}
```
这段代码中,我们首先初始化了系统控制和PIE控制。然后,我们初始化了EPWM模块,并将GPIO46设置为输入引脚。接下来,我们使能了GPIO46的中断,并在EPWM模块中设置了一个中断服务函数。最后,我们启用了全局中断,并进入了一个死循环。
在中断服务函数中,您可以处理EPWM中断和GPIO46中断。处理完毕后,您需要清除中断标志位,并返回。
希望这段代码可以帮助您完成您的项目。如果您有任何问题,请随时联系我。
阅读全文