computer00 发表于 2009-3-20 10:30

《圈圈教你玩USB》书中勘误专区

<br />第40页第1行,“自己修改一下toos.ini文件”应该是“tools.ini”<br />第46页第12行,“由代码可知,它生成了‘CLR&nbsp;A’和‘MOVE&nbsp;P2,A’两条指令”这里MOVE不应该有E,改为“MOV&nbsp;P2,A”<br /><br />随书赠送PCB的原理图下载:<a href="https://bbs.21ic.com/club/bbs/list.asp?boardid=67&t=3270004&tp=%5B" target=_blank>https://bbs.21ic.com/club/bbs/list.asp?boardid=67&t=3270004&tp=%5B</a><br />&nbsp;<br />《圈圈教你玩USB》勘误(更新日期2009&nbsp;年06月29日)下载地址1:<img src="http://group.**/images/download.gif"><br />下载地址2:&nbsp;勘误.pdf<br /><br /><br />同时欢迎读者积极指出书中的错误。<br />

xiaorunyi 发表于 2009-3-20 10:53

板凳

沙发

三块石头 发表于 2009-3-21 17:55

勘误-续

第114页第23行,USB鼠标例子的报告描述符<br />“//这是一个局部条目,说明用途的最小值为3。实际上是鼠标中键”<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^^<br />这里“最小值”应该为“最大值”,因为最小值上面一行已经定义了,而且后面的注释也是USAGE_MAXIMUM<br /><br /><br />同样,第131页第12行(含空行),USB键盘例子的报告描述符<br />“//这是一个局部条目,说明用途的最小值为0xe7。实际上是键盘右GUI(WIN)键”<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^^<br />同样也应该改为“最大值”<br /><br /><br />看来圈圈写程序和写书都是复制粘贴呦~~~~~这种事儿谁都容易忘改点小地方~~

computer00 发表于 2009-3-21 18:02

谢谢指出~~~同样的注释错误在代码中不少啊...汗...

xiaorunyi 发表于 2009-3-26 11:53

D12的

管脚英文的注释有两个相同了

芯行天下 发表于 2009-3-26 17:07

错误之处

第84页,第18行(含页起始处大括号单独一行和中间一个空行)<br />SetUsbPortOut();<br /><br />没有这个函数,应该改成D12SetPortOut();<br /><br />源程序中没有这个错误,在PDIUSBD12.c中第229行,是D12SetPortOut();是正确的。

computer00 发表于 2009-3-26 17:21

修正第六章中USB转串口的一个软件小bug(非印刷错误)

在原来的程序中,虽然对端点的双缓冲区清除中断时有判断,但是还是存在着刚好读回时,双缓冲没满,但是写入时双缓冲区满的情况。这样的话就会丢失中断,导致一些数据在缓冲区拿不出来,要等下一次接收到数据时才能拿出来。<br /><br />将原来程序中的void&nbsp;UsbEp2Out(void)函数中的<font color=#FF0000><br />//读最后接收状态,这将清除端点2输出的中断标志位。<br />//注意端点2有个双缓冲机制,在清除中断之前,先检查是否两个缓冲区<br />//是否全满了,如果两个缓冲区全满的话,就不用清除中断标志。只有当<br />//两个缓冲区不全满的时候才需要清除中断标志。<br />if((D12ReadEndpointStatus(4)&0x60)!=0x60)<br />{<br />D12ReadEndpointLastStatus(4);&nbsp;<br />}</font><br />部分删除,在函数最后增加如下代码:<br /><font color=#FF0000><br />if(!(D12ReadEndpointStatus(4)&0x60))&nbsp;//如果任何一个缓冲区又有数据,则不要清除中断<br />{<br />D12ReadEndpointLastStatus(4);&nbsp;//清除端点中断<br />}<br /></font><br />然后重新编译之。<br />

computer00 发表于 2009-3-27 14:40

勘误

第84页的24行中,<br /><br />D12WriteByte(*(Buf+i));&nbsp;&nbsp;//将数据放到数据线上<br /><br />应改为<br /><br />D12SetData(*(Buf+i));&nbsp;//将数据放到数据线上<br /><br /><br />光盘中代码是正确的,书稿在提交给出版社后,被他们与上面的写一字节“统一”掉了……

xiaorunyi 发表于 2009-3-27 19:53

33也1行

mx232-&gt&nbsp;max232

computer00 发表于 2009-3-29 22:53

谢谢楼上指出。

第98页第二行“端点描述符的长度为5字节”应改为“端点描述符的长度为7字节”。<br /><br />第98页第十二行“wMaxPacketSize&nbsp;大小为1字节”改为“wMaxPacketSize&nbsp;大小为2字节”。<br /><br />第33页第一行的“MCU和MX232”漏掉一个字母A,应为“MCU和MAX232”。<br />

三块石头 发表于 2009-3-30 17:47

LS

手头没书,没看出第一句话什么意思……俩一样啊

computer00 发表于 2009-3-30 19:14

晕倒……又写错了,书中写的是5字节……俺赶紧改过来。

表格中是对的,但是文字描述符错了。

程序匠人 发表于 2009-3-31 09:05

圈圈,你还是学匠人的样,做一个表格,转成PDF,这样会比

方便大家下载

xwj 发表于 2009-3-31 09:32

唉... 来人,拉出去,重打100大板!

computer00 发表于 2009-3-31 09:49

问题是现在才刚开始啊,等发现得差不多时,才整个表格出

不然每天要更新表格,难道不烦么?

icesongjie 发表于 2009-4-1 09:29

书都出了

书都出了,还怕麻烦?<br />怕麻烦就不应该出书

computer00 发表于 2009-4-1 10:04

无语……那太没效率了。俺宁愿看场电影,也不愿做这么没

俺当初写书只花了2个多月的时间。

xiaorunyi 发表于 2009-4-4 15:56

匠人头上那个“真”字代表什么?

computer00 发表于 2009-4-8 19:49

增加

77页表3.5.3第五行第二列“GEG_INTERFACE”应改为“GET_INTERFACE”。<br />97页表3.9.3最后一项“端口的查询时间”应改为“端点的查询时间”。<br />125页4.2节第一行,“iProduct”应改为“idProduct”<br />234页8.1节第四行“SCSI通明命令集”改为“SCSI透明命令集”。

computer00 发表于 2009-4-10 00:04

新增勘误

242页表8.8.2第三行第二列的“RAM”应改为“RMB”,<br /><br />242页倒数第二行“如果设置为不为可移除的”改为“如果设置为不可移除的”<br />
页: [1] 2 3
查看完整版本: 《圈圈教你玩USB》书中勘误专区