您好!
我使用的是 TMS320C6748 lcdk 套件。 我想将 J14引脚27上的 GPIO5[8]配置为上升沿上的外部中断。 如 C6748技术参考手册第899页所示、我想执行以下操作:
要将 GPIO 中断配置为仅在 GPIO 信号的上升沿发生:
•向 SET_RIS_TRIG 中的相关位写入逻辑1。
•向 CLR_FAUL_TRIG 中的相关位写入逻辑1。
但是在我的程序中,当我尝试对这些寄存器进行编程时,它们不会被编程。 下面给出了我的程序。 请帮助我找到错误。
#include "gpio.h"
#include "psc.h"
#include "interrupt.h"
#include "SoC_C6748.h"
#include "lcdkC6748.h"
#include"硬件类型.h"
#include"HW_SYSCFg0_C6748.h"
/ /
/*本地函数原型*/
/ /
静态空延迟(volatile unsigned int delay);
/ /
/*全局变量*/
/ /
/ /
/*本地函数定义*/
/ /
#define GPIO_base_add 0x01e26000
int flag=0;
void GPIOBank5Pin6PinMuxSetup();
static void gpioIsr();
static void SetupInt (void);
静态空 ConfigureIntgpio (void);
int main (空)
{
/* GPIO 的本地 PSC 编号为3。 GPIO 属于 PSC1模块。*/
PSCModuleControl (SOC_PSC_1_regs、HW_PSC_GPIO、PSC_POWERDOMAIN_AYST_ON、
PSC_MDCTL_NEW_ENABLE);
/* GPIO 组5的引脚8的引脚复用。*/
GPIOBank5Pin6PinMuxSetup();
/*将引脚89 (GP6[13])设置为输出。*/
GPIODirModeSet (SOC_GPIO_0_regs、87、GPIO_DIR_INPUT);
SetupInt();
/*配置 AINTC 以接收和处理 UART 中断。 *
ConfigureIntgpio();
// HWREG (GPIO_base_add+0x74)= 0x00400000;//设置 SET_RIS_TRIG45
// HWREG (GPIO_base_add+0x80)=0x00400000;//设置 CLR_FAUL_TRIG45
HWREG (0x01e26074)= 0x00400000;//设置 SET_RIS_TRIG45
HWREG (0x01e26080)= 0x00400000;//设置 CLR_FAUL_TRIG45
while (1);
}
/*
**\brief 此功能检查 MMC/SD 卡的插入状态
**在设备中,并在串行上打印相关的语句
**外部设备的通信控制台。
**
*
/*
**\brief 可以调用此函数以生成延迟。
*
静态空延迟(volatile unsigned int delay)
{
while (delay--);
}
空 GPIOBank5Pin6PinMuxSetup()
{
HWREG (0x01c14150)|=0x00000080;//在 pinmux12中设置相应的位
HWREG (0x01c14150)&=0xFFFFFF80;
}
静态空 gpioIsr()
{
flag=1;
HWREG (GPIO_BASE_ADDE+0x74)= 0x00000000;//设置 SET_RIS_TRIG45
HWREG (GPIO_BASE_ADDE+0x80)= 0x00000000;//设置 CLR_FAUL_TRIG45
}
静态空 SetupInt (空)
{
#ifdef _TMS320C6x
//初始化 DSP INTC
IntDSPINTCMINIT();
//全局启用 DSP 中断
IntGlobalEnable();
其他
/*初始化 ARM 中断控制器(AINTC)。 *
IntAINTCInit();
/*在 CPSR 中启用 IRQ。*/
IntMasterIRQEnable();
/*在 AINTC 的 GER 中启用中断。*/
IntGlobalEnable();
/*在 AINTC 的 HIER 中启用中断。*/
IntIRQEnable();
#endif
}
静态空配置 Intgpio (空)
{
#ifdef _TMS320C6x
IntRegister (C674x_MASK_INT4、gpioIsr);
IntEventMap (C674x_MASK_INT4、SYS_INT_GPIO_B5INT);
IntEnable (C674x_MASK_INT4);
其他
/*在 AINTC 的中断矢量表中注册 UARTIsr。 *
内部寄存器(SYS_INT_GPIO_B5INT、gpioIsr);
/*将 AINTC 的通道编号2映射到 UART2系统中断。 *
IntChannelSet (SYS_INT_GPIO_B5INT、2);
IntSystemEnable (SYS_INT_GPIO_B5INT);
#endif
}
/********* 文件结束******** /
提前感谢。
相关信息
Shalini