github
https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/FPGA/class16_NIOSII_PIO
简介
对PIO增加输入方式,在eclipse中读取按键状态,控制4个led闪烁
Quartus
Bidir双向IO口(输入、输出)用于到芯片引脚
内部若是想实现双向IO需要使用 InOut
Output Register选项用于是否激活独立控制单个IO口
Eclipse
代码中的PIO_BASE 是在Quartus中的外设名字(就算写的是小写也会被转成大写)
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
int main()
{
alt_u8 led = 0;
alt_u8 key = 0;
IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_BASE,0x0f); //输入输出模式设置 1 输出 0 输入
/* Event loop never exits. */
while (1)
{
key = IORD_ALTERA_AVALON_PIO_DATA(PIO_BASE); //读取IO电平状态
if(key & 0x10)
{
led = 0x00;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_BASE,led); //设置IO电平状态
}
else
{
led = 0x0f;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_BASE,led);
}
}
return 0;
}