📄 holdback.c
字号:
/**************************************************************
程序说明 :好声波处理实验
类 型 :Nios II
说 明 :
检测超声波输入的数据,触发中断,点亮相应的LED。
**************************************************************/
#include <stdio.h>
#include <io.h>
#include <system.h>
#include <stdio.h>
#include "alt_types.h"
#include "sys/alt_irq.h"
#include <alt_types.h>
/*********************************************
函数名:button_irq
功 能:button中断处理函数
输 入:context:相关内容指针,中断号
返 回:
备 注:
读取相应BUTTON数据,点亮相应LED
**********************************************/
int button_irq(void *context,alt_u32 interrupt)
{
int iRet;
unsigned int data;
unsigned int seg;
alt_u8 key;
int flag_chaosb;
/* 读取边沿捕获寄存器值 */
data=IORD(CHAOSB_IRQ_PIO_BASE,0x03);
// IOWR(CHAOSB_IRQ_PIO_BASE,0x03,0x00);
//alt_irq_disable_all();
switch (data)
{
case 2: printf("1米有障碍!\n"); aic23_play(3016);
break;
case 3: printf("1.5米有障碍!\n"); aic23_play(2001);
break;
case 4: printf("2米有障碍!\n"); aic23_play(2002);
break;
case 5: printf("2.5米有障碍!\n"); aic23_play(2003);
break;
case 6: printf("3米有障碍!\n"); aic23_play(2004);
break;
case 7: printf("3.5米有障碍!\n"); aic23_play(2005);
break;
case 8: printf("前方有人,注意慢行!\n"); aic23_play(3024);
break;
default: printf("没有障碍!"); // aic23_play(1004);
break;
}
/* 点亮相应的LED */
IOWR(LED_PIO_BASE,0x00,data);
IOWR(SERIAL_SEGMENT_0_BASE, 0x03,data);
IOWR(CHAOSB_IRQ_PIO_BASE,0x03,0x00);
// alt_irq_enable_all();
// return flag_chaosb;
return 0;
}
int holdback()
{
unsigned int data;
unsigned int data1;
int button_irq();
int i;
alt_u8 key;
printf("超声波检测试验!\n");
/* 数码管清0 */
IOWR(SERIAL_SEGMENT_0_BASE, 0x00,0);
IOWR(SERIAL_SEGMENT_0_BASE, 0x01,0);
IOWR(SERIAL_SEGMENT_0_BASE, 0x02,0);
IOWR(SERIAL_SEGMENT_0_BASE, 0x03,0);
/* 开放4BIT BUTTON的中断屏蔽 */
IOWR(CHAOSB_IRQ_PIO_BASE,0x02,0x0f);
/* 清除边沿捕获寄存器 */
IOWR(CHAOSB_IRQ_PIO_BASE,0x03,0x00);
/* 注册中断处理函数 */
if (alt_irq_register(CHAOSB_IRQ_PIO_IRQ, NULL,button_irq))
{
printf("alt_irq_register error\n");
return -1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -