TMS320F28335入门(四)外部中断

//C28335一共96中断,可以使用的有58个中断,其余保留
//C28335的中断请求可以分成:
//可屏蔽中断:通过判断优先级选择是否处理
//不可屏蔽中断:强制停止CPU进程,进入中断程序,比如复位和NMI。
//片内中断源:PWM、CAP、QEP、Timer等
//片外中断源:外部中断输入引脚XINT1、XINT2引入的信号

//PIE作为中断管理模块:主要是用来在有限中断通道的情况下,管理多个中断源触发
//PIE模块处理INT1~INT12组中断源,每组中断源下包含8路中断通道(INT1.x(x = 1、2、…、8));
//定时器1、2的中断源分别为INT13、INT14

//中断优先级
//INT1>INT2>…>INT12;
//INT1.1>INT1.2>…>INT1.8;

//初始化系统函数
InitSysCtrl();
//禁止cpu中断
DINT;
//初始化PIE控制
InitPieCtrl();
//禁止中断并清除中断标志位
IER = 0;	//全局中断使能
IFR = 0;	//全局标志位
//初始化PIE向量表
InitPieVectTable();
//将外部中断的中断服务函数映射到中断向量表
EALLOW;
PieVectTable.XINT3 = &xint3_isr;
PieVectTable.XINT4 = &xint4_isr;
EDIS;
//清除计数值
Xint3Count = 0;
Xint4Count = 0;
LoopCount = 0;
//使能CPU级中断
IER |= M_INT12;
//使能PIE块
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
//使能PIE 12组 INT1 、 INT2
PieCtrlRegs.PIEIER12.bit.INTx1 = 1;
PieCtrlRegs.PIEIER12.bit.INTx2 = 1;
//开启中断
EINT;
//关寄存器写保护
EALLOW;
GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 0x1c;
GpioIntRegs.GPIOXINT4SEL.bit.GPIOSEL = 0x1d;
//开寄存器写保护
EDIS;
//配置 XINT1
//Falling edge interrupt 下降沿中断
XIntruptRegs.XINT3CR.bit.POLARITY = 0;
//Rising edge interrupt  上升沿中断
XIntruptRegs.XINT4CR.bit.POLARITY = 1;
//使能外部中断
XIntruptRegs.XINT3CR.bit.ENABLE = 1;
XIntruptRegs.XINT4CR.bit.ENABLE = 1;
//主循环


interrupt void xint3_isr(void){
	//中断次数计数器
	Xint3Count++;
	//中断内容
	GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;

	//确认中断结束
	PieCtrlRegs.PIEACK.all = PIEACK_GROUP12;
}

interrupt void xint4_isr(void){
	//中断次数计数器
	Xint4Count++;
	//中断内容
	GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;

//确认中断结束
PieCtrlRegs.PIEACK.all = PIEACK_GROUP12;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值