学了C语言怎么还是看不懂USB通讯协议
我在网上下载了一个文件,《USB的通讯协议(通俗易懂)》。因为爱好想了解下通讯协议,开始自以为有多C语言编程经验,也自认为谭浩强那本书当年在学校学的是滚瓜烂熟,可是真去看...
我在网上下载了一个文件,《USB的通讯协议(通俗易懂)》。因为爱好想了解下通讯协议,开始自以为有多C语言编程经验,也自认为谭浩强那本书当年在学校学的是滚瓜烂熟,可是真去看他那个协议代码,傻了眼,完全不懂在对什么变量赋值,猜想是位寻址操作?迷惑,等待大师、高手朋友们的解疑,我如何看懂他们,或是我在看懂他们之前除了简单c语言外还有什么知识是我不清楚的。小弟在此谢过。(下面附带上代码截图)
展开
8个回答
展开全部
没看过USB的通讯协议。
你贴的代码,UCC和MISC进行了位操作。UCC和MISC应该是用来控制硬件管脚。
Delay_3us()就是延迟3微秒。
UCC和MISC为什么要进行位运算,需要看硬件文档。硬件文档里面会写着,从硬件读取数据的时候,先要给UCC写上你要发送的data,然后对MISC的低3位清零,然后延迟3微秒(这段时间硬件完成设置动作),然后MISC低位置1,再延迟28微秒(这段时间硬件完成数据读取)。
UCC和MISC的操作需要看硬件开发手册,延时时间需要看硬件时序图。
想操作硬件,就要了解硬件的使用规则套路。建议不要先看USB这种复杂的设备,先看看LED/Wiegand/串口并口 这样的简单设备。等对硬件规则了解以后,再看USB。
你贴的代码,UCC和MISC进行了位操作。UCC和MISC应该是用来控制硬件管脚。
Delay_3us()就是延迟3微秒。
UCC和MISC为什么要进行位运算,需要看硬件文档。硬件文档里面会写着,从硬件读取数据的时候,先要给UCC写上你要发送的data,然后对MISC的低3位清零,然后延迟3微秒(这段时间硬件完成设置动作),然后MISC低位置1,再延迟28微秒(这段时间硬件完成数据读取)。
UCC和MISC的操作需要看硬件开发手册,延时时间需要看硬件时序图。
想操作硬件,就要了解硬件的使用规则套路。建议不要先看USB这种复杂的设备,先看看LED/Wiegand/串口并口 这样的简单设备。等对硬件规则了解以后,再看USB。
展开全部
想把c语言学好,光谭浩强的远远不够的,那只是最简单的东西,我学习c语言两年了,学习c语言的关键是 指针的用法,还有结构体等等。c语言的作用是直接和硬件打交道,所以单片机编程,还有linux驱动编程用的是c语言,所以上面的代码其实c语言用的并不复杂,只是对硬件的直接操作,你需要把硬件的连接和芯片寄存器看明白,这段程序就很简单了,它是和硬件直接相对的,上面的代码仅仅是对一些寄存器的赋值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确实是位操作, |是按位或, &是按位与
国内的编程书籍全部都是用来应付中国人的各种考试用的,
如果想学好一门编程语言,只有看外文书籍或者外文书籍的译本,
这并不是看不起国内的书籍,而是事实却是如此,
学C语言的话,推荐C语言三剑客, c primer plus之类的书籍,
谭浩强的书也就适合90年代国人的入门编程教学而已,
早就应该淘汰在历史中了,其中错误,语法不规范,言辞不准确,知识不全面的地方成堆,
而且每次修订都没有具体的改变,说他只是为了骗钱完全没有亏说他的,
国内大学教材用它是因为教师们多年以前用习惯了,而且懒得改课件,导致了这种教材在国内遍地开花而却早已经过时的原因。
国内的编程书籍全部都是用来应付中国人的各种考试用的,
如果想学好一门编程语言,只有看外文书籍或者外文书籍的译本,
这并不是看不起国内的书籍,而是事实却是如此,
学C语言的话,推荐C语言三剑客, c primer plus之类的书籍,
谭浩强的书也就适合90年代国人的入门编程教学而已,
早就应该淘汰在历史中了,其中错误,语法不规范,言辞不准确,知识不全面的地方成堆,
而且每次修订都没有具体的改变,说他只是为了骗钱完全没有亏说他的,
国内大学教材用它是因为教师们多年以前用习惯了,而且懒得改课件,导致了这种教材在国内遍地开花而却早已经过时的原因。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这就是对flag寄存器回零操作,就是在每次通信准备前需要检查通讯地址,保证在正常状态,为下一场通信做好准备,还有设定时钟的延时时限。光有C语言远远不够,你必须懂硬件,先学学微机原理这本书,然后有理论基础后再学习其他更专业化的硬件知识。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
协议是与语言无关的,就算你会写C的编译器都没用。
USB协议 2.0规范几百页,选择性阅读。
如果设备硬件有USB模块就不需要额外的USB控制器了,它帮你实现了大部分协议。否则要重新设计包含USB接口芯片的电路,或者像AVRUSB那样自己模拟USB协议。
你要看对应设备的手册,手册会告诉你设备怎么使用,引脚的功能,USB模块怎么配置,每个寄存器有什么用,程序怎么写。
然后去找官方提供的USB库并学习官方例程然后移植到你的设备上 或者 自己写一套库。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询