获得中科昊芯Core_DSC280025C开发板开发板后,我就抓紧时间研究,无奈学识浅薄,学得很慢,近日研究外部中断,好像该单片机支持INT_XINT1~INT_XINT7中断,不知道哪个引脚对应INT_XINT1,哪个引脚对应INT_XINT2等等,还是怎么回事,官方给的例程只有一个外部中断,如果2个以上的外部中断该怎么区分,优先级高低又该怎么设置,等等。
笔者实验INT_XINT1下,可以使能GPIO0、GPIO2、GPIO6、GPIO9、GPIO10、GPIO11,都下载成功。

{
/ 系统时钟初始化 /
Device_init();
/ 关中断,清中断 /
Interrupt_initModule();
/ 初始化中断向量表 /
Interrupt_initVectorTable();
/*配置GPIO30为IO输入,用于触发外部中断
* GPIO31为IO输出,用于指示外部中断触发*/
XINT_IOinit();
EALLOW; // 允许对受保护寄存器进行写操作
//===========================================
/*配置GPIO9为IO输入,开发板的9\\10连在一起*/
GPIO_setPinConfig(INT_XUHAO_1);
//GPIO_setPinConfig(GPIO_9_GPIO9);
GPIO_setDirectionMode(INT_XUHAO_1, GPIO_DIR_MODE_IN ); //将GPIO引脚设置为输入模式
GPIO_setPadConfig(INT_XUHAO_1, GPIO_PIN_TYPE_STD); //在gpio.c,参数在gpio.h,浮空输入
GPIO_setQualificationMode(INT_XUHAO_1, GPIO_QUAL_SYNC); //使能端口时钟 ??
EDIS; // 禁止对受保护寄存器的写操作
/*配置XINT1为下降沿触发外部中断*/
GPIO_setInterruptType(GPIO_INT_XINT1, GPIO_INT_TYPE_FALLING_EDGE); //在gpio.h里
/*配置GPIO9为XINT1为外部中断触发引脚*/
GPIO_setInterruptPin(INT_XUHAO_1, GPIO_INT_XINT1); //在gpio.c里
//////////////////////////////////////////////////////////////////////////
/*使能外部中断XINT1CR*/
GPIO_enableInterrupt(GPIO_INT_XINT1); //在gpio.h里
/*中断入口地址INT_XIN1,指向执行gpioInterruptHandler中断服务程序*/
Interrupt_register(INT_XINT1, &gpioInterruptHandler); //在Interrupt_register.h 里
/*中断XINT1对应PIE中断使能*/
Interrupt_enable(INT_XINT1); //在Interrupt.c 里
/*中断XINT1对应CPU中断使能*/
/*
//上述宏定义在driver_inclusive_terminologyu_mapping.h里
而Interrupt_enableGlobal(void)函数在Interrupt.h定义
*/
Interrupt_enableMaster(); //在 里
for(;;)
{
}
}
u8 INT_XUHAO_1_flag=0,INT_XUHAO_2_flag=0;
__interrupt void gpioInterruptHandler(void)
{
GPIO_togglePin(7);
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
}
//
// End of File
//
2、system.h
#ifndef SYSTEM_H_
#define SYSTEM_H_
//
// Included Files
//
#include "driverlib.h"
#include "device.h"
//
// Interrupt Handler
//
__interrupt void gpioInterruptHandler(void);
void XINT_IOinit(void);
#endif /* SYSTEM_H_ */
3、xint.c
#include "system.h"
void XINT_IOinit(void)
{
/ 配置GPIO30为IO输入,用于外部中断触发 /
//GPIO_setPinConfig(GPIO_30_GPIO30);
//GPIO_setPadConfig(30, GPIO_PIN_TYPE_STD | GPIO_PIN_TYPE_PULLUP);
//GPIO_setQualificationMode(30, GPIO_QUAL_SYNC);
//GPIO_setDirectionMode(30, GPIO_DIR_MODE_IN);
GPIO_setPinConfig(7);
GPIO_setPadConfig(7, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(7, GPIO_QUAL_SYNC);
GPIO_setDirectionMode(7, GPIO_DIR_MODE_OUT);
}
4、