1579|0

6802

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

C2000LaunchPad学习记外部中断翻转LED [复制链接]

程序功能:将GPIO12配置成中断输入。按键按下,触发下降沿中断,中断服务子程序翻转LED。


中断向量表


主函数,main.c

[cpp] view plain copy
/* Includes ------------------------------------------------------------------*/  
#include  
#include  
#include "SubFunction.h"  
/* Private typedef -----------------------------------------------------------*/  
/* Private define ------------------------------------------------------------*/  
/* Private macro -------------------------------------------------------------*/  
/* Private variables ---------------------------------------------------------*/  
/* Private function prototypes -----------------------------------------------*/  
/* Private functions ---------------------------------------------------------*/  

void main(void)  
{  
    // 系统控制初始化  
    InitSysCtrl();  
    InitGpio();  
    // 禁止全局中断  
    DINT;  
    InitPieCtrl();  
    // 禁止CPU中断  
    IER = 0x0000;  
    // 清楚CPU所有中断标志  
    IFR = 0x0000;  
    // 位向量表中的所有中断向量配置对应的入口地址  
    InitPieVectTable();  
    EXTI_Configure();  
    EINT;  
    // 允许访问受保护的空间  
    EALLOW;  
    // 配置I/O口为输出  
    GpioCtrlRegs.GPADIR.all=0x000f;  
    // 禁止访问受保护的空间  
    EDIS;  
    while(1){  
    }  
}  

外部中断配置函数
[cpp] view plain copy
/* Includes ------------------------------------------------------------------*/  
#include  
#include  
#include "C2000_it.h"  
/* Private typedef -----------------------------------------------------------*/  
/* Private define ------------------------------------------------------------*/  
/* Private macro -------------------------------------------------------------*/  
/* Private variables ---------------------------------------------------------*/  
/* Private function prototypes -----------------------------------------------*/  
/* Private functions ---------------------------------------------------------*/  

/****************************************************************************
* Function Name  : EXTI_Configure
* Description    : 配置外部中断
* Input          : None
* Output         : None
* Return         : None
******************************************************************************/  
void EXTI_Configure(void)  
{  
    //允许访问受保护的空间  
    EALLOW;  

    PieVectTable.XINT1= &EXTI12_IRQHandler;  
    GpioCtrlRegs.GPAPUD.bit.GPIO12 = 1;         //除能上拉电阻  
    GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;        //GPIO12作普通IO使用 p189  
    GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;         //配置为输入  
    GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 2;       // 6 samples  
    GpioCtrlRegs.GPACTRL.bit.QUALPRD1 = 0xFF;   //采样周期为510*Tsysclk,窗口宽度为5*510*Tsysclk=2550/60M=42.5us  
    GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 12;  //GPIO12作为xint1的中断源  

    XIntruptRegs.XINT1CR.bit.POLARITY = 1;      //上升沿触发中断  
    XIntruptRegs.XINT1CR.bit.ENABLE = 1;        //外中断1使能  

    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;          //使能PIE  
    PieCtrlRegs.PIEIER1.bit.INTx4 = 1;          //使能int1.4  

    IER |= 0x0001;                              //使能int1  
    //禁止访问受保护的空间  
    EDIS;  
}  

中断服务程序
[cpp] view plain copy
/* Includes ------------------------------------------------------------------*/  
#include  
#include  
/* Private typedef -----------------------------------------------------------*/  
/* Private define ------------------------------------------------------------*/  
/* Private macro -------------------------------------------------------------*/  
/* Private variables ---------------------------------------------------------*/  
/* Private function prototypes -----------------------------------------------*/  
/* Private functions ---------------------------------------------------------*/  


/*******************************************************************************
* Function Name  : EXTI12_IRQHandler
* Description    : This function handles External interrupt Line 12 request.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/  
interrupt void EXTI12_IRQHandler(void)  
{  
    GpioDataRegs.GPATOGGLE.bit.GPIO0=1;  
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;  
}  


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表