打印

请问USB字符串描述符

[复制链接]
2542|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
our21icbbs|  楼主 | 2010-4-5 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问在USB设备向主机发送字符串描述符时,怎么定义一个从指定FLASH空间地址中读取的变量数据呢?如何将读取的内容以字符串的形式发送到主机?一般定义字符串都是常量定义的,谢谢!
沙发
lxyppc| | 2010-4-6 09:18 | 只看该作者
楼主有没有看过ST官方库的USB例程代码
在每个例子的hw_config.c文件里面有这样一段
/*******************************************************************************
* Function Name  : Get_SerialNum.
* Description    : Create the serial number string descriptor.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/

void Get_SerialNum(void)
{
  u32 Device_Serial0, Device_Serial1, Device_Serial2;

  Device_Serial0 = *(u32*)(0x1FFFF7E8);
  Device_Serial1 = *(u32*)(0x1FFFF7EC);
  Device_Serial2 = *(u32*)(0x1FFFF7F0);

  if (Device_Serial0 != 0)
  {
    Speaker_StringSerial[2] = (u8)(Device_Serial0 & 0x000000FF);
    Speaker_StringSerial[4] = (u8)((Device_Serial0 & 0x0000FF00) >> 8);
    Speaker_StringSerial[6] = (u8)((Device_Serial0 & 0x00FF0000) >> 16);
    Speaker_StringSerial[8] = (u8)((Device_Serial0 & 0xFF000000) >> 24);

    Speaker_StringSerial[10] = (u8)(Device_Serial1 & 0x000000FF);
    Speaker_StringSerial[12] = (u8)((Device_Serial1 & 0x0000FF00) >> 8);
    Speaker_StringSerial[14] = (u8)((Device_Serial1 & 0x00FF0000) >> 16);
    Speaker_StringSerial[16] = (u8)((Device_Serial1 & 0xFF000000) >> 24);

    Speaker_StringSerial[18] = (u8)(Device_Serial2 & 0x000000FF);
    Speaker_StringSerial[20] = (u8)((Device_Serial2 & 0x0000FF00) >> 8);
    Speaker_StringSerial[22] = (u8)((Device_Serial2 & 0x00FF0000) >> 16);
    Speaker_StringSerial[24] = (u8)((Device_Serial2 & 0xFF000000) >> 24);
  }
}
这段代码的意思是把序列号字符串用芯片的唯一ID来替换
你只需要把芯片ID换成你想要的字符就行了

使用特权

评论回复
板凳
司徒老鹰| | 2010-4-6 21:35 | 只看该作者
对,稍微改下就行了

使用特权

评论回复
地板
our21icbbs|  楼主 | 2010-4-11 16:18 | 只看该作者
谢谢楼上的指导!

使用特权

评论回复
5
秋天落叶| | 2010-4-11 21:08 | 只看该作者
字符串的发送肯定是八位八位的发送,参考下例程用处很大的

使用特权

评论回复
6
sinadz| | 2010-4-11 21:47 | 只看该作者
关于例程,有个问题,定义的数组为什么都是偶数

使用特权

评论回复
7
香水城| | 2010-4-12 09:41 | 只看该作者
关于例程,有个问题,定义的数组为什么都是偶数
sinadz 发表于 2010-4-11 21:47


因为要求使用UNICODE,而UNICODE是16位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

1

粉丝