片上电子信息系统,基于EDA的FPGA,串口通信及串口中断

2026/4/29 4:20:46

2.4 任务四 2.4.1 实验目的

在程序的主循环中使LED灯闪烁。同时监听串口中断,如果串口上有接收数据,则把数据转发回PC机串口。需要使用Microblaze中断方式。

2.4.2 实验内容

建立一个包含下列IP的处理器系统: 1、新建硬件环境

2、添加.c文件

2.4.3 实验步骤及程序

1、新建硬件环境

在IP Catalog中从Clock,Reset and Interrupt部分添加XPS Interrupt Controller, 添加和连接中断控制器

29

设置 intc 的地址。

在PORT下,将RS232实例的interrupt端口设为New Connection, 出现信号名字

RS232_Interrupt.通过选择New Connection,为microblaze_0实例的INTERRUPT(外部中断请求)端口生成一个新的连接。这样就创建一个叫microblaze_0_ INTERRUPT的信号。

使用microblaze_0_INTERRUPT网络,连接intc实例的中断输出端口Irq到Microblaze中断输入端口。点击intc域的intr域,来打开Interrupt Connection 对话框。点击左侧的RS232_Interrupt,并且点击符号添加Connected Interrupts域,点击OK按钮。

30

选择Hardware->Generate Netlist。

选择Hardware->Generate Bitstream

31

2、修改.c文件

#include \#include \#include \

#include \#include \

#define XPAR_RS232_BASEADDR 0x84000000

char buff;

void uart0_int_handler(void) {

XGpio leds_out;//指向GPIO

XGpio_Initialize (&leds_out, XPAR_LEDS_DEVICE_ID);////

//对象的指针 ;deviceid是Xgpio控制的唯一识别号

XGpio_SetDataDirection (&leds_out, 1, 0x00);////此函数用于说明指针的方向,DirectionMask是离散输出输入标志0 in,1 out

while(!XUartLite_mIsReceiveEmpty(XPAR_RS232_BASEADDR)) //判断串口不为空

//判断UART的数据是否读空。参数为UART地址。返回值1表示已经读空。 {

buff =XUartLite_RecvByte(XPAR_RS232_BASEADDR); XUartLite_SendByte(XPAR_RS232_BASEADDR, buff); switch(buff) {

case 0x31: XGpio_DiscreteWrite(&leds_out, 1, 0x01); break; case 0x32: XGpio_DiscreteWrite(&leds_out, 1, 0x02); break; case 0x33: XGpio_DiscreteWrite(&leds_out, 1, 0x04); break; case 0x34: XGpio_DiscreteWrite(&leds_out, 1, 0x08); break; case 0x35: XGpio_DiscreteWrite(&leds_out, 1, 0x10); break; case 0x36: XGpio_DiscreteWrite(&leds_out, 1, 0x20); break;

32


片上电子信息系统,基于EDA的FPGA,串口通信及串口中断.doc 将本文的Word文档下载到电脑
搜索更多关于: 片上电子信息系统,基于EDA的FPGA,串口通信及串口中断 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219