Nios II开发--流水灯
文章摘要:
本文以流水灯为例,描述了基于NIOS II系统的软件开发流程;
硬件平台:EP4CE6F17C8
开发环境:Nios II 13.1
生成BSP(Board Support Package 板级支持包)
1.打开Nios II 13.1软件,新建BSP工程
File --> New --> Nios II Board Support Package
2.修改BSP
右键项目工程 --> Nios II --> BSP Editor...
完成后点击Generate,并退出。
3.编译工程
右键项目工程 --> Build Project
新建应用工程
File --> New --> Nios II Application
创建源文件:
右键项目工程 --> New --> Source File
/*
* main.c
* Created on: 2017-4-18
* Author: alex
*/
#include "altera_avalon_pio_regs.h"
#include "system.h"
// 延时程序
void delay(int n)
{
while(n--);
}
// 主程序
int main(void)
{
while(1){
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x01);
delay(500000);
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x02);
delay(500000);
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x04);
delay(500000);
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LEDS_BASE,0x08);
delay(500000);
}
return 0;
}
编译工程:
右键项目工程 --> Build Project
运行配置:
Run --> Run Configures...
Project
Target Connection
点击Refresh Connection,直到显示设备连接(如果一直不显示,则可能是Niso配置有问题);
运行测试:
Run --> Run
PIO接口说明:
PIO接口定义于altera_avalon_pio_regs.h中(bsp/drivers/inc):
IORD_ALTERA_AVALON_PIO_DATA 读数据寄存器
IOWR_ALTERA_AVALON_PIO_DATA 写数据寄存器
IORD_ALTERA_AVALON_PIO_DIRECTION 读方向寄存器
IOWR_ALTERA_AVALON_PIO_DIRECTION 写方向寄存器
IORD_ALTERA_AVALON_PIO_IRQ_MASK 读中断掩码寄存器
IOWR_ALTERA_AVALON_PIO_IRQ_MASK 写中断掩码寄存器
IORD_ALTERA_AVALON_PIO_EDGE_CAP 读中断标识寄存器
IOWR_ALTERA_AVALON_PIO_EDGE_CAP 写中断标识寄存器
IOWR_ALTERA_AVALON_PIO_SET_BITS 位操作置位
IOWR_ALTERA_AVALON_PIO_CLEAR_BITS 位操作清零
实际上此操作接口比较繁琐,不如直接定义寄存器地址指针,然后直接操作更简单:
#define LEDS_PORT *((volatile int *)(PIO_LEDS_BASE + 0))
LEDS_PORT = x;