|
#include "../inc/sopc.h"
#include "system.h"
#include "sys/alt_irq.h"
#include <unistd.h>
#include <stdio.h>
int key_flag = 0;
void ISR_key(void * context,unsigned long id)
{
key_flag = ~key_flag;
}
int init_key(void)
{
KEY->INTERRUPT_MASK = 1;//允许中断
KEY->EDGE_CAPTURE = 0;
return alt_irq_register(KEY_IRQ,NULL,ISR_key); //中断注册成功返回1
}
int main()
{
if(!init_key())
{
printf("register successfully!\n");
}
else{
printf("Error: register failure!\n");
}
while(1)
{
if(key_flag)
{
LED->DATA = 1;
}
else
{
LED->DATA =0;
}
}
return 0;
}
这中断初始化中的 KEY->EDGE_CAPTURE = 0; 是干吗用的?
void ISR_key(void * context,unsigned long id)
中断函数中的void * context,unsigned long id 的值是在哪里赋给他的?
初学nios ii请高手指教,不胜感激!! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|