512|0

2065

帖子

0

资源

纯净的硅(初级)

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

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

中断向量表

image.png

主函数,main.c

/* Includes ------------------------------------------------------------------*/
#include<F2802x_Device.h>
#include<DSP28x_Project.h>
#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){
    }
}
 

外部中断配置函数
/* Includes ------------------------------------------------------------------*/
#include<F2802x_Device.h>
#include<DSP28x_Project.h>
#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;
}

中断服务程序
/* Includes ------------------------------------------------------------------*/
#include<F2802x_Device.h>
#include<DSP28x_Project.h>
/* 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/7 下一条

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

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

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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