TA的每日心情 | 衰 2018-11-2 23:41 |
---|
签到天数: 5 天 连续签到: 1 天 [LV.2]偶尔看看I
|
接上一篇
将程序改成如下所示(即光盘里面的例程文件)
//---------------------------------------------------------------------------
//-- 文件名 : hello_world.c
//-- 描述 : 使用按键中断控制LED亮灭
//-- 修订历史 : 2014-1-1
//-- 作者 : Zircon Opto-Electronic Technology CO.,Ltd.
//---------------------------------------------------------------------------
#include <stdio.h> //标准的输入输出头文件
#include "system.h" //系统头文件
#include "altera_avalon_pio_regs.h"//pio寄存器头文件
#include "alt_types.h" //数据类型头文件
#include "sys/alt_irq.h" //中断头文件
alt_u8 LED_Toggle = 0; //LED状态切换全局变量
//---------------------------------------------------------------------------
//-- 名称 : KeyDown_interrupts()
//-- 功能 : 中断服务子程序
//-- 输入参数 : context:一般用于传递中断状态寄存器的值;id:中断号,这里都未使用
//-- 输出参数 : 无
//---------------------------------------------------------------------------
static void KeyDown_interrupts(void* context, alt_u32 id)
{
/* 更改LED的显示状态 */
LED_Toggle = ~LED_Toggle;
/* 清中断捕获寄存器 */
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 0x1);
}
//---------------------------------------------------------------------------
//-- 名称 : Init_Interrupt()
//-- 功能 : 中断初始化
//-- 输入参数 : 无
//-- 输出参数 : 无
//---------------------------------------------------------------------------
void Init_Interrupt(void)
{
/* 开KEY的中断 */
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE, 0x1);
/* 清边沿捕获寄存器 */
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 0x1);
/* 注册中断服务子程序 */
alt_irq_register(PIO_KEY_IRQ, NULL, KeyDown_interrupts);
}
//---------------------------------------------------------------------------
//-- 名称 : main()
//-- 功能 : 程序入口
//-- 输入参数 : 无
//-- 输出参数 : 无
//---------------------------------------------------------------------------
int main(void)
{
printf("Code Running...");
Init_Interrupt();
while(1)
{
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, LED_Toggle);
}
return(0);
}
然后这里面要改几个参数
1、引脚的名字要改,至于改的名字可以再system.h里面查出来
2、新版的quartus II要加上一句
#include <priv/alt_legacy_irq.h>
进行编译,确认无误
然后先将硬件描述的部分先下载到开发板上面,再在eclipse中右键工程名——Run As——Run configuration,然后在弹出的对话框中选择target connection选项卡,找到硬件之后将下方的忽略系统的ID勾选上,然后进行运行
最终运行结果如下
然后再来介绍一下如何固化到开发板上面,不过这个过程尝试过不能在quartus II 15.0下运行。会报错找不到下载器。。。。
1、在之前的Qsys中将ROM的部分改成ECPS,然后将片上的ROM去掉,连上中断、时钟、两个存储空间的线,中断连上,优先级为默认,锁定ECPS flash的地址起始位0x00000000,然后让系统重新分配地址
2、将CPU的复位后开始执行的位置改成ECPS
3、在verilog中将ECPS的部分加上,包括连线等
4、在管脚分配中加上ECPS部分
5、重新编译下载工程
6、更新eclipse中的BSP部分
7、编译,将生成的文件下载到开发板的flash中
|
|