首页 > 代码库 > 28335外部中断
28335外部中断
/*****************************************************************************
Copyright: 2014,Tkai
File name: main.c
Description:28335外部中断测试
Author:
Version: v1.0
Date: 2014.05.27
History: 无
*****************************************************************************/
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
/*************************************************
Function: gpio_init()
Description: IO的初始化
Calls: NO
Called By: main()
Table Accessed: 无
Table Updated: 无
Input: void
Output: NULL
Return: void
Others: NO
*************************************************/
void gpio_init(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.all=0x0000;//IO做为GPIO
GpioCtrlRegs.GPADIR.all=0xffff;//GPIO输出使能
EDIS;
}
/*************************************************
Function: Ext_isr()
Description: 外部中断服务程序
Calls: NO
Called By: Ext_init()
Table Accessed: 无
Table Updated: 无
Input: void
Output: NULL
Return: void
Others: NO
*************************************************/
interrupt void Ext_isr(void)
{
GpioDataRegs.GPATOGGLE.all=0xffff;//IO状态转换
PieCtrlRegs.PIEACK.all=0xffff;//开所有中断
}
/*************************************************
Function: Ext_init()
Description: 外部中断的初始化
Calls: NO
Called By: main()
Table Accessed: 无
Table Updated: 无
Input: void
Output: NULL
Return: void
Others: NO
*************************************************/
void Ext_init(void)
{
InitSysCtrl();
InitPieVectTable();
InitPieCtrl();
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO15=0; //IO15设为GPIO
GpioCtrlRegs.GPADIR.bit.GPIO15=0; //GPIO15设为输入
GpioCtrlRegs.GPAPUD.bit.GPIO15=1; //GPIO15内部上拉
PieVectTable.XINT1=&Ext_isr; //中断服务程序指定
GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL=15;//GPIO15设为外部中断
XIntruptRegs.XINT1CR.bit.ENABLE=1; //INT1打开
XIntruptRegs.XINT1CR.bit.POLARITY=1;//下降沿有效
EDIS;
DINT;
IER=0x0000;
IFR=0x0000;
PieCtrlRegs.PIEIER1.bit.INTx4=1; //INTx4 外部中断号
PieCtrlRegs.PIECTRL.bit.ENPIE=1; //打开中断
IER=M_INT1; //打开中断
EINT;
}
/*************************************************
Function: main()
Description: 主函数
Calls: gpio_init(),Ext_init()
Called By: NO
Table Accessed: 无
Table Updated: 无
Input: void
Output: NULL
Return: void
Others: NO
*************************************************/
void main(void)
{
gpio_init();
Ext_init();
GpioDataRegs.GPADAT.all=0x0000;
while(1);
}