注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
nemo1991的个人空间 https://home.eeworld.com.cn/space-uid-475077.html [收藏] [复制] [分享] [RSS]
日志

【C2000学习之[6]】GPIO中断

已有 3161 次阅读2015-5-15 10:27 |个人分类:C2000学习

学习笔记使用F28069为例,但是其具有通用意义,学习C2000系列均可参考该例子。

本节中,介绍一下使用GPIO中断的方法。

以GPIO4为例,设置为双边沿触发中断。在中断中设置GPIO4的输出。

设置步骤如下:

1. GPIO初始化

需要将GPIO4设置为输入,GPIO6设置为输出。

程序初始化代码如下:

  1. EALLOW;
  2.    GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0x00;
  3.    GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0x00;                        // 设置GPIO4,GPIO6 为GPIO

  4.    GpioCtrlRegs.GPADIR.bit.GPIO4 = 0;                                // 设置GPIO4为输入
  5.    GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;                                // 设置GPIO6 为输出
  6.    EDIS;
复制代码
2.设置GPIO4 为外部中断3XINT3)的中断源

  1.    EALLOW;
  2.    GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 4;
  3.    EDIS;
复制代码
3.设置XINT3的边沿触发:双边沿触发

  1. XIntruptRegs.XINT3CR.bit.POLARITY = 3;
复制代码
4.使能 XINT3 中断

  1. XIntruptRegs.XINT3CR.bit.ENABLE = 1;
复制代码
5.使能PIE级及CPU级中断向量

  1.    PieCtrlRegs.PIEIER12.bit.INTx1 = 1;
  2.    IER |= M_INT12;

  3.    EINT;   // Enable Global interrupt INTM
  4.    ERTM;   // Enable Global realtime interrupt DBGM

  5.    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
复制代码
6.中断服务函数的设置

  1. interrupt void xint3_isr(void)
  2. {
  3.         PieCtrlRegs.PIEACK.all = PIEACK_GROUP12;
  4.         GpioDataRegs.GPASET.bit.GPIO6 = 1;//继电器关闭,COM接ON
  5.         if(        GpioDataRegs.GPADAT.bit.GPIO4 == 1) //有阻碍物
  6.                 GpioDataRegs.GPASET.bit.GPIO6 = 1;    //继电器关闭,COM接ON
  7.         else
  8.                 GpioDataRegs.GPACLEAR.bit.GPIO6 = 1;        //继电器打开,COM接OFF
  9. }
复制代码
7.完整初始化代码


本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章