IAR -K60-外部中断
1.找到要检测中断信号的引脚(PTB3)
2.PORT初始化 (复用初始化)(在MK60_port.c)(在main处初始化)
eg:port_init(PTB3,IRQ_RISING|PF|PULLUP|ALT1);
(确定触发方式)
3.中断函数的编写void portb_handler(void)
//可在MK60_it.c中编写,也可以在MK60_port.c
eg:
void portb_handler(void)
{
uint8 n = 0; //引脚号
//PTB3
n = 3;
if(PORTB_ISFR & (1 << n)) //PTA6触发中断
{
PORTB_ISFR = (1 << n); //写1清中断标志位
/* 以下为用户任务 */
led_turn(LED4);//需include,led所在的.h文件
/* 以上为用户任务 */
}
}
4.在common.h找到所需中断对应的
PORTB_IRQn = 88, // Port B interrupt
5.重定义中断向量表,在MK60_it.h中定义
eg:
#undef VECTOR_088
#define VECTOR_088 PORTB_IRQn
extern void portb_handler()//声明;
6.在vectors.c中断向量表中找到需要重定义的那个并将其注释
eg:
//VECTOR_088,
7.在main中写中断服务的指向函数和使能函数
set_vector_handler(PORTB_VECTORn,portb_handler);//指向
//enable_irq (PORTB_IRQn);//旧的使能函数
NVIC_EnableIRQ(PORTB_IRQn);//新的使能函数
PS:不明白为什么会使得下载有可能下载不到并且出现错误使得芯片下载不到程序
然后下载不到程序了,需要解锁
打开JlinkCommonder,然后按住复位键输入unlock kinetis 按回车,并且在此期间按住K60的复位键