OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13460|回复: 9

程序有点不懂

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-20
在线时间
0 小时
发表于 2011-5-27 20:26:38 | 显示全部楼层 |阅读模式
请问原子开发板的“USB读卡器实验”,里面有几行程序,看的不是很懂。
if(Usb_Status_Reg&0x04) LCD_ShowString(60,190,"USB Write Err ");//提示写入错误
else LCD_ShowString(60,190,"              ");//清除错误    
if(Usb_Status_Reg&0x08) LCD_ShowString(60,210,"USB Read  Err ");//提示读出错误
else LCD_ShowString(60,210,"              ");//清除错误    
USB_STA=Usb_Status_Reg;//记录最后的状态
请问那两行清除错误,工作原理是什么?LCD显示空的就是清楚错误码?我把这两行换成LED等,编译出现的错误是 expected a statement‘’,请问是什么意思?谢谢了!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-20
在线时间
0 小时
 楼主| 发表于 2011-5-27 20:35:23 | 显示全部楼层
void LCD_ShowString(u16 x,u16 y,const u8 *p)
{         
    while(*p!='\0')
    {       
        if(x>MAX_CHAR_POSX){x=0;y+=16;}
        if(y>MAX_CHAR_POSY){y=x=0;LCD_Clear(WHITE);}
        LCD_ShowChar(x,y,*p,16,0);
        x+=8;
        p++;
    }  
}
这是LCD的显示字符串程序,如果*p=='\0',那么这个函数不执行,又是怎么清除错误的?
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-20
在线时间
0 小时
 楼主| 发表于 2011-5-27 20:51:43 | 显示全部楼层
我懂了,这个注释有点问题,叫“清除错误”不好,就叫没有错误
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1863
金钱
1863
注册时间
2011-3-29
在线时间
139 小时
发表于 2011-5-27 20:56:49 | 显示全部楼层
估计是把之前LCD上的错误提示信息覆盖清除吧。“清除错误”这个注释不严谨。

“expected a statement” 那你就按编译器的要求做咯。

obvisouly, ' ' != '\0';
业余程序玩家。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-5-27 22:31:05 | 显示全部楼层
回复【4楼】ofourme:
---------------------------------
正解.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-20
在线时间
0 小时
 楼主| 发表于 2011-5-27 23:14:01 | 显示全部楼层
我还想问一个小问题,同样是这个实验,有一些注释,也不是很懂。


//bit0:表示电脑正在向SD卡写入数据
//bit1:表示电脑正从SD卡读出数据
//bit2:SD卡写数据错误标志位
//bit3:SD卡读数据错误标志位
//bit4:1,表示电脑有轮询操作(表明连接还保持着)

我在里面找到这个函数,void Mass_Storage_In (void)

case BOT_DATA_IN:  //USB从设备读数据
switch (CBW.CB[0])
{
case SCSI_READ10:
Usb_Status_Reg|=0X02;//标记正在读数据
SCSI_Read10_Cmd(CBW.bLUN , SCSI_LBA , SCSI_BlkLen);
break;
}
break;

想请问原子,这个是定义的哪个寄存器?STM32的数据手册我没看很懂。USB读和写的时候倒还简单,另外//bit2:SD卡写数据错误标志位但是//bit3:SD卡读数据错误标志位 ,这个怎么解释?  










回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-20
在线时间
0 小时
 楼主| 发表于 2011-5-27 23:15:48 | 显示全部楼层
这个函数是usb_bot.c里面的,usb_endp是调用的它。另外MASS STORAGE的例程无法编译,里面也没有定义这四个位,所以不是很懂…………
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-20
在线时间
0 小时
 楼主| 发表于 2011-5-27 23:16:21 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我还想问一个小问题,同样是这个实验,有一些注释,也不是很懂。


//bit0:表示电脑正在向SD卡写入数据
//bit1:表示电脑正从SD卡读出数据
//bit2:SD卡写数据错误标志位
//bit3:SD卡读数据错误标志位
//bit4:1,表示电脑有轮询操作(表明连接还保持着)

我在里面找到这个函数,void Mass_Storage_In (void)

case BOT_DATA_IN:  //USB从设备读数据
switch (CBW.CB[0])
{
case SCSI_READ10:
Usb_Status_Reg|=0X02;//标记正在读数据
SCSI_Read10_Cmd(CBW.bLUN , SCSI_LBA , SCSI_BlkLen);
break;
}
break;

想请问原子大哥,这个是定义的哪个寄存器?STM32的数据手册我没看很懂。USB读和写的时候倒还简单,另外//bit2:SD卡写数据错误标志位但是//bit3:SD卡读数据错误标志位 ,这个怎么解释?这个函数是usb_bot.c里面的,usb_endp是调用的它。另外MASS STORAGE的例程无法编译,里面也没有定义这四个位,所以不是很懂…………
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-20
在线时间
0 小时
 楼主| 发表于 2011-5-27 23:17:53 | 显示全部楼层
回复【4楼】ofourme:
---------------------------------
问个很弱智的问题,这个expected a statement是什么意思?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-5-28 00:06:44 | 显示全部楼层
回复【8楼】linbeisai:
---------------------------------
这不是寄存器来的,我自己设置的一个变量,用来在不同子函数之间传输信息.以标记不同状态.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 15:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表