SOPC课件-第四章-NIOSII外设.pptVIP

  • 32
  • 0
  • 约8.74千字
  • 约 71页
  • 2019-09-05 发布于浙江
  • 举报
4.1并行输入/输出(PIO)内核 4.1.1 功能描述 控制LED 从开关或键盘输入采集数据 控制显示设备 与片外器件通讯 将PIO集成到SOPC系统时,PIO有如下两种可见功能部件: 1~32个I/O端口 4个寄存器:data、direction、interruptmask和edgecapture. 4.1.2 配置选项 1.基本配置 指定I/O端口的宽度和方向。 2.输入选项 捕获方式 中断 4.1.3寄存器描述和中断 中断屏蔽寄存器对应位置1. 4.1.4 软件编程模型 头文件“altera_avalon_pio_regs.h” #define IOADDR_ALTERA_AVALON_PIO_DATA(base) __IO_CALC_ADDRESS_NATIVE(base, 0) #define IORD_ALTERA_AVALON_PIO_DATA(base) IORD(base, 0) #define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data) #define IOADDR_ALTERA_AVALON_PIO_DIRECTION(base) __IO_CALC_ADDRESS_NATIVE(base, 1) #define IORD_ALTERA_AVALON_PIO_DIRECTION(base) IORD(base, 1) #define IOWR_ALTERA_AVALON_PIO_DIRECTION(base, data) IOWR(base, 1, data) #define IOADDR_ALTERA_AVALON_PIO_IRQ_MASK(base) __IO_CALC_ADDRESS_NATIVE(base, 2) #define IORD_ALTERA_AVALON_PIO_IRQ_MASK(base) IORD(base, 2) #define IOWR_ALTERA_AVALON_PIO_IRQ_MASK(base, data) IOWR(base, 2, data) #define IOADDR_ALTERA_AVALON_PIO_EDGE_CAP(base) __IO_CALC_ADDRESS_NATIVE(base, 3) #define IORD_ALTERA_AVALON_PIO_EDGE_CAP(base) IORD(base, 3) #define IOWR_ALTERA_AVALON_PIO_EDGE_CAP(base, data) IOWR(base, 3, data) #define IOADDR_ALTERA_AVALON_PIO_SET_BIT(base) __IO_CALC_ADDRESS_NATIVE(base, 4) while (1) { for(i=0;i300000;i++) ;//空循环实现延时 led=0x01; IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led); for(i=0;i300000;i++) ; led=0x02; IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led); for(i=0;i300000;i++) ; led=0x04; IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led); for(i=0;i300000;i++) ; led=0x08; IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led); } int main (void) { alt_u8 button = 0x03; volatile int i; while (button != 0x00) { if((IORD_ALTERA_AVALON_PIO_DATA(PIO_BUTTON_BASE) 0x03) != button) { i = 0; while (i200)//软件消抖 i++; if((IORD_ALTERA_AVALON_PIO_DATA(PIO_BUTTON_BASE) 0x03) != button) button = IORD_ALTERA_AVALON_PIO_DATA(PIO_BUTTON_BASE); } IOWR_ALTERA_AVALON_PIO_DATA

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档