news 2026/5/30 18:47:43

Zynq上UART/IIC/SPI的27个实验-第2课:PS 硬件 UART 接收

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zynq上UART/IIC/SPI的27个实验-第2课:PS 硬件 UART 接收

目录

目标

串口接收中断中记录接收到的数据并置位标志,
主循环检测该标志后,将接收到的消息统一发送出去。

BD

main.cpp

#include"xparameters.h"#include"xuartps.h"#include"xscugic.h"#include"xil_exception.h"#include"xil_printf.h"#include"sleep.h"#include<string.h>/* ================= 配置 ================= */#defineUART_DEVICE_IDXPAR_XUARTPS_0_DEVICE_ID#defineUART_INTR_IDXPAR_XUARTPS_0_INTR#defineGIC_DEVICE_IDXPAR_PS7_SCUGIC_0_DEVICE_ID#defineRX_BUF_SIZE64/* ================= 全局对象 ================= */staticXUartPs UartPs;staticXScuGic Intc;/* RX 缓冲 + 标志 */staticvolatileintrx_ready=0;staticvolatileu32 rx_len=0;staticu8 rx_buf[RX_BUF_SIZE];/* ================= BSP 风格发送接口 ================= */voidBspUartWrite(uint8_t*buf,uint32_tlen){uint32_tsent=0;while(sent<len){sent+=XUartPs_Send(&UartPs,buf+sent,len-sent);}}/* ================= UART RX 中断回调 ================= */staticvoidUartHandler(void*CallBackRef,u32 Event,unsignedintEventData){if((Event==XUARTPS_EVENT_RECV_DATA)||(Event==XUARTPS_EVENT_RECV_TOUT)){if(EventData>0&&rx_ready==0){rx_len=EventData;rx_ready=1;/* 只置标志,不发送 */}/* 重新启动接收 */XUartPs_Recv(&UartPs,rx_buf,RX_BUF_SIZE);}}/* ================= UART 初始化 ================= */staticintBspUartInit(void){intStatus;XUartPs_Config*Config;Config=XUartPs_LookupConfig(UART_DEVICE_ID);if(!Config)returnXST_FAILURE;Status=XUartPs_CfgInitialize(&UartPs,Config,Config->BaseAddress);if(Status!=XST_SUCCESS)returnStatus;XUartPs_SelfTest(&UartPs);XUartPs_SetBaudRate(&UartPs,115200);XUartPs_SetOperMode(&UartPs,XUARTPS_OPER_MODE_NORMAL);XUartPs_SetHandler(&UartPs,UartHandler,&UartPs);XUartPs_SetInterruptMask(&UartPs,XUARTPS_IXR_RXFULL|XUARTPS_IXR_RXOVR|XUARTPS_IXR_TOUT);XUartPs_SetRecvTimeout(&UartPs,8);XUartPs_Recv(&UartPs,rx_buf,RX_BUF_SIZE);returnXST_SUCCESS;}/* ================= GIC 初始化 ================= */staticintGicInit(void){intStatus;XScuGic_Config*Cfg;Cfg=XScuGic_LookupConfig(GIC_DEVICE_ID);if(!Cfg)returnXST_FAILURE;Status=XScuGic_CfgInitialize(&Intc,Cfg,Cfg->CpuBaseAddress);if(Status!=XST_SUCCESS)returnStatus;Xil_ExceptionInit();Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,&Intc);Status=XScuGic_Connect(&Intc,UART_INTR_ID,(Xil_ExceptionHandler)XUartPs_InterruptHandler,&UartPs);if(Status!=XST_SUCCESS)returnStatus;XScuGic_Enable(&Intc,UART_INTR_ID);Xil_ExceptionEnable();returnXST_SUCCESS;}/* ================= main ================= */intmain(void){intStatus;xil_printf("UART RX interrupt flag echo test\r\n");Status=BspUartInit();if(Status!=XST_SUCCESS){xil_printf("UART init failed\r\n");while(1);}Status=GicInit();if(Status!=XST_SUCCESS){xil_printf("GIC init failed\r\n");while(1);}constchar*msg="Type something, main loop will echo.\r\n";BspUartWrite((uint8_t*)msg,strlen(msg));while(1){if(rx_ready){/* 主循环里发送 */BspUartWrite(rx_buf,rx_len);/* 清标志 */rx_ready=0;rx_len=0;}}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 3:32:29

深度学习毕设项目:基于python-CNN机器学习卷积神经网络的胡萝卜是否变质识别基于python-CNN卷积神经网络的胡萝卜是否变质识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/30 11:21:27

【计算机毕业设计案例】基于python的胡萝卜是否变质识别基于python-CNN卷积神经网络的胡萝卜是否变质识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/29 1:14:48

本章节我们将讨论如何在 React 中使用表单。 DOM 元素有所不同

React 表单与事件 本章节我们将讨论如何在 React 中使用表单。HTML 表单元素与 React 中的其他 DOM 元素有所不同,因为表单元素生来就保留一些内部状态。在 HTML 当中&#xff0c;像 <input>, <textarea>, 和 <select> 这类表单元素会维持自身状态&#xff0…

作者头像 李华
网站建设 2026/5/25 21:53:26

新加坡国立大学:让视频生成变得如同手绘指示图一样简单

这项由新加坡国立大学方恭凡、马欣音和王新潮教授团队开展的研究发表于2025年11月&#xff0c;论文编号为arXiv:2511.19401v1。对于想要深入了解这项技术细节的读者&#xff0c;可以通过这个编号在学术数据库中查询完整论文内容。当我们想要制作一个视频来展示某个想法时&#…

作者头像 李华
网站建设 2026/5/30 6:46:47

AI产品经理的核心竞争力:不只是懂算法,更是AI思维的掌握者,大模型产品经理学习路线

本文深入解析AI产品经理的核心特质&#xff0c;强调AI思维比技术知识更重要。文章详细介绍了AI产业链结构、技术架构&#xff0c;以及突破型、创新型、应用型和普及型四类AI产品经理的特点与能力要求。作者指出AI产品经理需找准自身定位&#xff0c;避免常见误区&#xff0c;持…

作者头像 李华