闲来无事,搭建一个外部中断的验证性小实验和大家分享下:
首先先看看我搭建的电路图:
用画图工具画的,比较简陋,见谅啊 ^_^
接下来送上我的ADS调试小程序:
#include<stdio.h>
#include "sep4020.h"
#include "intc.h"
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
void INTInit(void)
{
mask_irq(INTSRC_EXINT0); //屏蔽外部中断0
*(RP)GPIO_PORTA_SEL |=0x01; //A0端口设置为通用模式
*(RP)GPIO_PORTA_DIR |=0x01; //A0输入
*(RP)GPIO_PORTA_INCTL |=0x01; //A0为外部中断0输入
*(RP)GPIO_PORTA_INTRCTL &=0xfffffffc; //设置为上升沿触发
*(RP)GPIO_PORTA_INTRCLR |=0x01; //清中断
irq_enable(INTSRC_EXINT0); //中断使能
unmask_irq(INTSRC_EXINT0); //开屏蔽中断
}
void EX0_IRQ_SERVERS(void) //中断服务子程序
{
printf("testing EXINT0!\n");
*(RP)GPIO_PORTB_DATA |=0x01; //B0口输出高电平
*(RP)GPIO_PORTA_INTRCLR |=0x01; //清中断
}
int main(void)
{
*(RP)GPIO_PORTB_SEL |=0x01;
*(RP)GPIO_PORTB_DIR &=(~0x01);
*(RP)GPIO_PORTB_DATA &=(~0x01);
INTInit();
while(1);
return 0;
}
值得注意的是:
在int_vec_handler.c程序里面修改如下:
运行出来的效果如下:
文章评论(0条评论)
登录后参与讨论