学习笔记使用F28069为例,但是其具有通用意义,学习C2000系列均可参考该例子。
本节中,介绍一下使用GPIO中断的方法。
以GPIO4为例,设置为双边沿触发中断。在中断中设置GPIO4的输出。
设置步骤如下:
1. GPIO
初始化
需要将GPIO4
设置为输入,GPIO6
设置为输出。
程序初始化代码如下:
- EALLOW;
- GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0x00;
- GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0x00; // 设置GPIO4,GPIO6 为GPIO
- GpioCtrlRegs.GPADIR.bit.GPIO4 = 0; // 设置GPIO4为输入
- GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; // 设置GPIO6 为输出
- EDIS;
复制代码2.
设置GPIO4
为外部中断3
(XINT3
)的中断源
- EALLOW;
- GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 4;
- EDIS;
复制代码3.
设置XINT3的边沿触发:双边沿触发
- XIntruptRegs.XINT3CR.bit.POLARITY = 3;
复制代码4.
使能 XINT3 中断
- XIntruptRegs.XINT3CR.bit.ENABLE = 1;
复制代码5.
使能PIE
级及CPU
级中断向量
- PieCtrlRegs.PIEIER12.bit.INTx1 = 1;
- IER |= M_INT12;
- EINT; // Enable Global interrupt INTM
- ERTM; // Enable Global realtime interrupt DBGM
- PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
复制代码6.
中断服务函数的设置
- interrupt void xint3_isr(void)
- {
- PieCtrlRegs.PIEACK.all = PIEACK_GROUP12;
- GpioDataRegs.GPASET.bit.GPIO6 = 1;//继电器关闭,COM接ON
- if( GpioDataRegs.GPADAT.bit.GPIO4 == 1) //有阻碍物
- GpioDataRegs.GPASET.bit.GPIO6 = 1; //继电器关闭,COM接ON
- else
- GpioDataRegs.GPACLEAR.bit.GPIO6 = 1; //继电器打开,COM接OFF
- }
复制代码7.完整初始化代码