/*****************************************************************************
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);
}
原文地址:http://www.cnblogs.com/luxiaolai/p/3755918.html