【CH32V305FBP6】USBD HS 中断分析

文章目录

  • 前言
  • 中断分析 USBHS_IRQHandler
    • 传输完成:USBHS_UIF_TRANSFER
      • TOKEN_IN:发送完成
      • TOKEN_OUT:接收完成
    • 描述符:USBHS_UIF_SETUP_ACT
    • 总线复位:USBHS_UIF_BUS_RST
    • 总线挂起:USBHS_UIF_SUSPEND

前言

所有数据都通过中断 USBHS_IRQHandler 处理

中断分析 USBHS_IRQHandler

intflag:获取中断标志寄存器内容

  • USBHS_UIF_TRANSFER:传输完成
  • USBHS_UIF_SETUP_ACT:SETUP 事务完成
  • USBHS_UIF_BUS_RST:总线复位
  • USBHS_UIF_SUSPEND:总线挂起或唤醒事件

在这里插入图片描述

传输完成:USBHS_UIF_TRANSFER

TOKEN_IN:发送完成

DEF_UEP3:端点3
UEP3_TX_CTRL :端点3

/* end-point 3 data in interrupt */
case USBHS_UIS_TOKEN_IN | DEF_UEP3:USBHSD->UEP3_TX_CTRL = (USBHSD->UEP3_TX_CTRL & ~USBHS_UEP_T_RES_MASK) | USBHS_UEP_T_RES_NAK;USBHSD->UEP3_TX_CTRL ^= USBHS_UEP_T_TOG_DATA1;USBHS_Endp_Busy[ DEF_UEP3 ] &= ~DEF_UEP_BUSY;break;

TOKEN_OUT:接收完成

/* end-point 4 data out interrupt */
case USBHS_UIS_TOKEN_OUT | DEF_UEP4:USBHSD->UEP4_RX_CTRL ^= USBHS_UEP_R_TOG_DATA1;/* Reverse the data and re-upload */len = USBHSD->RX_LEN;for( i = 0; i < len; i++ ){USBHS_EP4_Tx_Buf[ i ] = ~USBHS_EP4_Rx_Buf[ i ];}USBHSD->UEP4_TX_LEN  = len;USBHSD->UEP4_TX_CTRL &= ~USBHS_UEP_R_RES_MASK;USBHSD->UEP4_TX_CTRL |= USBHS_UEP_R_RES_ACK;break;

描述符:USBHS_UIF_SETUP_ACT

描述符在中断中作用的位置:标准请求
https://www.usbzh.com/article/detail-417.html

获取描述符:https://www.usbzh.com/article/detail-15.html

  • USBHS_UIF_SETUP_ACT
    • USBHS_SetupReqCode
      • USB_GET_DESCRIPTOR
        • USB_DESCR_TYP_DEVICE:MyDevDescr
        • USB_DESCR_TYP_CONFIG:MyCfgDescr_HS
        • USB_DESCR_TYP_HID:&MyCfgDescr_HS[ 84 ]
        • USB_DESCR_TYP_REPORT:MyHIDReportDesc_HS
        • USB_DESCR_TYP_STRING:MyLangDescr、MyManuInfo、MyProdInfo、MySerNumInfo

总线复位:USBHS_UIF_BUS_RST

此处初始化端点

除了 USB 初始化外,唯二初始化端点的地方

总线挂起:USBHS_UIF_SUSPEND

有 10us 延时

同样的延时在 USB 初始化中也有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript创建函数和对象的常用方法

简介 随着版本的更新&#xff0c;JavaScript中存在大量的创建函数和对象的方法&#xff0c;下面是一些常见的方式以及对应的优缺点&#xff0c;内容参考&#xff1a;ES6 入门教程 创建函数 1. 函数声明&#xff08;Function Declaration&#xff09; function myFunction(a…

np.arctan2和np.arctan

np.arctan2 和 np.arctan 都是用于计算反正切函数的 NumPy 函数&#xff0c;但它们的使用和功能有所不同。 np.arctan2 np.arctan2(y, x) 计算 atan2(y,x)&#xff0c;即从坐标 (x,y)到原点的角度&#xff08;弧度&#xff09;。它考虑了两个参数的符号来确定正确的象限&…

神经网络 torch.nn---nn.RNN()

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) RNN — PyTorch 2.3 documentation torch.nn---nn.RNN() nn.RNN(input_sizeinput_x,hidden_sizehidden_num,num_layers1,nonlinearitytanh, #默认tanhbiasTrue, #默认是Truebatch_firstFalse,dropout0,bidirection…

Android开发之音乐播放器添加排行需求

Music统计功能需求 1.记录歌曲名称与次数(歌曲播放结束算一次)&#xff0c;根据播放次数制作一个排行列表;&#xff08;开始说要记录歌手&#xff0c;后面debug发现这个字段没有&#xff0c;暂时不记录&#xff09; 2.记录播放歌曲的时长&#xff0c;时间累加&#xff1b;&…

sourcemap

sourcemap介绍 什么是sourceMap sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术webpack通过配置可以自动给我们source maps文件&#xff0c;map文件是一种对应编译文件和源文件的方法 类型含义source-map原始代码 最好的sourcemap质量…

element table 点击某一行中按钮加载

在Element UI中&#xff0c;实现表格&#xff08;element-table&#xff09;中的这种功能通常涉及到数据处理和状态管理。当你点击某一行的按钮时&#xff0c;其他行的按钮需要动态地切换为加载状态&#xff0c;这可以通过以下步骤实现&#xff1a; 1.表格组件&#xff1a;使用…

一文读懂Web Codecs API:浏览器背后的媒体魔术师

引言 ​在早期的Web 网页中&#xff0c;视频播放通常要依靠 Flash 和 Silverlight 等插件来完成&#xff0c;浏览器是不支持直接播放视频的。 随着网络技术的发展&#xff0c;视频这种媒体方式的需求变得普遍&#xff0c;HTML5中&#xff0c;出现了一个新的元素Video&#xf…

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp)

&#x1f30d;旅游门票预订系统&#xff1a;畅游世界&#xff0c;一键预订 一款基于FastAdminThinkPHPUniapp开发的旅游门票预订系统&#xff0c;支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统&#xff0c;提供前后台无加密源码&#xff0c;支…

RabbitMQ延迟消息(通过死信交换机实现)

延迟消息&#xff1a;生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而是在指定时间后才收到消息 通过DLX和TTL模拟出延迟队列的功能&#xff0c;即&#xff0c;消息发送以后&#xff0c;不让消费者拿到&#xff0c;而是等待过期时间&#xff0…

山东大学软件学院多核平台上的并行计算期末回忆版

&#xff08;2021级&#xff0c;大数据专业&#xff0c;老师是lwg和yzk&#xff0c;考题全是考前老师说的原题&#xff0c;毫无变化&#xff0c;最终期末分还是看实验情况多一些&#xff0c;但是老师到底是怎么比较的大家的实验性能&#xff0c;让我很头大&#xff0c;晕~&…

linux驱动学习(十三)之锁

需要板子一起学习的可以这里购买&#xff08;含资料&#xff09;&#xff1a;点击跳转 一、锁的作用 1、同步和互斥 1)同步:同一件事情的依次处理&#xff0c;数据的接收---> 数据的处理 --->数据的发送 2)互斥---- 防止对临界资源的竞争&#xff0c;在一个时刻&#…

18. SDP协议

SDP协议描述 SDP(Session Description Protocol)它只是一种信息格式的描述标准&#xff0c;本身不属于传输协议&#xff0c;但是可以被其他传输协议用来交换必要的信息。 SDP规范 多个媒体级描述 一个会话级描述 由多个<type><value>组成 会话层 会话的名称与目…

如何选择加噪使用的噪声尺度:超参数(alpha,beta)噪声尺度的设定

如何选择加噪使用的噪声尺度&#xff1a;超参数&#xff08;alpha&#xff0c;beta&#xff09;噪声尺度的设定【论文精读】 论文&#xff1a;Score-Based Generative Modeling through Stochastic Differential Equations 地址&#xff1a;https://doi.org/10.48550/arXiv.201…

开发移动端常见的问题:VW适配问题,基于 postcss 插件 实现项目vw适配

当你开发移动端的时候有一个问题是避免不了的&#xff0c;那就是当屏幕大小无论怎么变化时&#xff0c;内部尺寸也要随之发生改变&#xff0c;也就是适配问题。这里我们讲的是最新的VW适配&#xff0c;也就是用vw作为单位&#xff0c;100vw是整个页面的大小。而在开发的设计图中…

23.Dropout

在深度学习的训练过程中&#xff0c;过拟合是一个常见的问题。为了解决这个问题&#xff0c;研究者们提出了多种正则化技术&#xff0c;其中Dropout技术因其简单而有效的特点&#xff0c;得到了广泛的应用。本文将对Dropout技术的工作原理、主要优点、潜在缺点以及应用场景进行…

特种设备气瓶充装作业题库分享

1、【单选题】气瓶颜色标志是气瓶外表面涂敷的字样内容、色环数目和( )按充装气体的特性作规定的组合。(B) A、颜色 B、涂膜颜色 C、漆色 2、【多选题】( )和( )有权对于违反《中华人民共和国特种设备安全法》规定的&#xff0c;向负责特种设备安全监督管理的部门和有…

【Flask 系统教程 7】数据库使用 SQLAlchemy

SQLAlchemy 是一个功能强大的 SQL 工具包和对象关系映射 (ORM) 库。使用 Flask 和 SQLAlchemy 可以方便地连接和操作数据库。 SQLAlchemy基本操作 连接数据库 环境准备 首先&#xff0c;确保你已经安装了SQLAlchemy 。可以使用以下命令安装这些库&#xff1a; pip install…

快来!AI绘画Stable Diffusion 3终于开源了,更强的文字渲染和理解力,12G显卡可跑!

大家好&#xff0c;我是设计师阿威 Stable Diffusion 3终于开源了&#xff0c;2B参数的Stable Diffusion 3 Medium模型已经可以在HuggingFace上下载了&#xff01;如无法科学上网的小伙伴我也准备好了网盘资料&#xff0c;请看文末扫描获取哦&#xff01; Stable Diffusion 3 …

PostgreSQL 多表连接不同维度聚合统计查询

摘要:在本文中,你将学习到如何使用 PostgreSQL 完全外连接,从两个或多个表中聚合维度统计数据。 文章目录 一、常用的连接类型图示二、数据库表设计示例三、连接查询示例1. inner join 内连接(不能满足维度统计需求)2. full join 完全外连接(满足维度统计需求)一、常用的…

Vue3【二十】Vue3 路由和组件页面切换

Vue3【二十】Vue3 路由和组件页面切换 Vue3【二十】Vue3 路由和组件页面切换 Vue3 路由的创建 路由的引入 路由的配置 路由的导出 路由的url模式 带# 或不带 案例截图 目录结构 案例代码 app.vue <template><div class"app"><h2 class"title&q…