第一范文网 - 专业文章范例文档资料分享平台

CH376主机控制键盘鼠标程序(12)

来源:用户分享 时间:2021-06-02 本文由悲伤的帅哥 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

B设备插入后必须复位该设备,
//* 有些USB设备也要求在插入后必须先复位才能工作
//******************************************************

void Reset_Device( )
{
Set_USB_Mode( 7 ); //复位USB设备,CH376向USB信号线的D+和D-输出低电平
mDelaymS(10);
Set_USB_Mode( 6 ); //结束复位,将CH376设置成主机模式
while ( wait_interrupt()!=USB_INT_CONNECT ); //等待复位之后的设备端再次连接上来

}

//*****************************************************
//*NAME: set_addr( UINT8 addr )
//*FUCTION: 设置USB设备地址,并且设置USB主机端要操作的USB设备地址
//*输入参数: 地址值(1~127)
//* 输出参数:操作状态
//*说明:
//******************************************************

UINT8 set_addr( UINT8 addr ) {
UINT8 status;
CH376_WR_CMD_PORT( CMD_SET_ADDRESS );
CH376_WR_DAT_PORT( addr );
status=wait_interrupt(); //等待CH376操作完成
if ( status==USB_INT_SUCCESS ) { //操作成功
CH376_WR_CMD_PORT( CMD_SET_USB_ADDR ); //设置USB主机端的USB地址
CH376_WR_DAT_PORT( addr ); //当目标USB设备的地址成功修改后,应该同步修改主机端的USB地址
}
return( status );
}



//**********************************************
//*NAME: main( void )
//*FUCTION: 通过CH376操作鼠标键盘以及复合HID设备的数据
//*输入参数:无
//* 输出参数:无
//*说明:只适用普通的USB键盘,支持复合设备
//* 键盘,不支持带有HUB接口的USB键盘
//**********************************************

void main( void )
{
UINT8 i,s;
mDelay50mS( ); //CH376上电之后需要延时40ms左右

StdioInit( );

printf("start \n");

//做测试命令,检测单片机和CH376硬件连接,以及读写时序是否正确
CH376_WR_CMD_PORT( 0x06 );

CH376_WR_DAT_PORT( 0x55 );

s = CH376_RD_DAT_PORT( );

printf(" %02x \n",(UINT16)s);



Set_USB_Mode( 6 ); //设置USB主机模式, 如果设备端是CH37X, 那么5和6均可

set_freq( ); //使376进入低速模式

while(1)
{
printf(" \n wait usb device : \n");
while ( wait_interrupt()!=USB_INT_CONNECT );
mDelaymS(50);
Reset_Device();//复位usb设备
mDelaymS(50);
set_freq( ); //使376进入低速模式
mDelaymS(20);

//获取设备描述符
if(Get_Dev_Descr()==1)
{
for(i=0;i!=data_buf[0];i++)
printf("%02x ",(unsigned int)data_buf[i]);
printf("\n");
}
else printf("\n get device descr failed \n");

//设置地址
set_addr(5);

/
/获取配置描述符
if( Get_Cfg_Descr( SetupGetCfgDescr ) == 1)
{
for(i=0;i!=data_buf[0];i++)
printf("%02x ",(unsigned int)data_buf[i]);
pr

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科CH376主机控制键盘鼠标程序(12)全文阅读和word下载服务。

CH376主机控制键盘鼠标程序(12).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1194154.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top