问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 7225 人浏览分享

开启左侧

使用两个uart,其中一个使用了EMIO端口,两个uart中断只能触发一个。

[复制链接]
7225 2
本帖最后由 江苏-天文 于 2019-7-18 17:18 编辑

程序在附件中,在教程的基础上修改。中断的触发与初始化程序中这两段的顺序有关,在后面的这段能正常触发。
https://pan.baidu.com/s/1OxKoE0PxGQY5dqOwHzQVMw提取码:kcdx
int i;
void init_intr_sys(void)
{

        Init_UartPsIntr1(&UartPs1,XPAR_XUARTPS_0_DEVICE_ID);
        Init_Intr_System1(&Intc1);
        Setup_Intr_Exception(&Intc1);
        UartPs_Setup_IntrSystem1(&Intc1, &UartPs1, XPAR_XUARTPS_0_INTR);

        Init_UartPsIntr(&UartPs,XPAR_XUARTPS_1_DEVICE_ID);
        Init_Intr_System(&Intc);
        Setup_Intr_Exception(&Intc);
        UartPs_Setup_IntrSystem(&Intc, &UartPs, XPAR_XUARTPS_1_INTR);

}


int main(void)
{

        init_intr_sys();

        XUartPs_Recv1(&UartPs1, RecvBuffer1, TEST_BUFFER_SIZE1);
        XUartPs_Recv(&UartPs, RecvBuffer, TEST_BUFFER_SIZE);
        while(1)

}


评论 2

uisrc  管理员  发表于 2019-7-18 17:31:33 | 显示全部楼层
因为ZYNQ SDK程序中共用一个总的中断实例,所有的中断是绑定到一个中断实例,然后根据优先级,依次处理,所各个中断,但是总的intc只能有一个,改成这样试下试试,
void init_intr_sys(void)
{

        Init_UartPsIntr1(&UartPs1,XPAR_XUARTPS_0_DEVICE_ID);           Init_UartPsIntr(&UartPs,XPAR_XUARTPS_1_DEVICE_ID);

       UartPs_Setup_IntrSystem1(&Intc, &UartPs1, XPAR_XUARTPS_0_INTR);
       UartPs_Setup_IntrSystem(&Intc, &UartPs, XPAR_XUARTPS_1_INTR);

        Init_Intr_System1(&Intc);
        Setup_Intr_Exception(&Intc);
        
}

越努力越幸运!加油!
江苏-天文  新手上路  发表于 2019-7-18 19:36:57 | 显示全部楼层
汤老师一针见写,程序按汤老师的修改之后果然两个中断就都响应了!
多谢汤老师
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐
热门资讯
网友晒图
图文推荐

  • 微信公众平台

  • 扫描访问手机版