本模块基于TI公司DSP28335微控制器,实现六路外部中断与三路PWM输出功能,适用于电机控制和工业自动化等领域。
/*关于外部中断与PWM的配置:HRX6路外部中断分别对应3路PWM(pwm1下层两路、PWM2Z轴、PWM3中间轴),其中奇数号中断靠近电机,偶数号远离电机*/
#include DSP2833x_Device.h // DSP2833x设备头文件
#include DSP2833x_Examples.h // DSP2833x示例代码头文件
void ISRExint1(void); // ExInt1中断处理函数声明
void ISRExint2(void); // ExInt2中断处理函数声明
void ISRExint3(void); // ExInt3中断处理函数声明
void ISRExint4(void); // ExInt4中断处理函数声明
void ISRExint5(void); // ExInt5中断处理函数声明
void ISRExint6(void); // ExInt6中断处理函数声明
Uint16 *ExRamStart = (Uint16 *)0x100000; // 外部RAM起始地址定义
void EPwmSetup(); // PWM初始化设置函数原型声明
int flag;
Uint16 i;
void configtestled(void); // 测试LED配置函数原型声明
int main() {
InitXintf16Gpio();
IER = 0x0000; // 初始化中断使能寄存器为全零,禁用所有CPU中断
IFR = 0x0000;
InitPieCtrl(); // 初始化PIE控制器
InitPieVectTable();
EALLOW; // 开启保护模块访问权限
PieVectTable.XINT1 = &ISRExint1; // 设置中断向量表,将外部中断与对应的处理函数关联起来
PieVectTable.XINT2 = &ISRExint2;
PieVectTable.XINT3 = &ISRExint3;
PieVectTable.XINT4 = &ISRExint4;
PieVectTable.XINT5 = &ISRExint5;
PieVectTable.XINT6 = &ISRExint6;
EDIS; // 关闭保护模块访问权限
InitExInt(); // 初始化外部中断
InitSysCtrl(); // 初始化系统控制
DINT; // 禁用CPU全局中断
}