WhyCan Forum(哇酷论坛)

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2018-05-23 10:45:42

物联小白
会员
注册时间: 2018-05-17
累计积分: 4

有老哥帮我看一下STM8 + CH375 哪里出了问题,导致连到电脑上识别不了呢

void int0(void) interrupt 0 using 0
{
unsigned char i,temp,length;
unsigned char data buf[64];                   //接受到的数据存放的缓冲数组,64个位置

CH375_WRCMD(CMD_GET_STATUS);               //发获取375的中断类型(状态)命令,并取消中断信号

temp=CH375_REDAT();                        //读取中断类型(状态)值

switch(temp)                                  //判断中断类型(状态),具体区分请见375头文件中的定义
{
case USB_INT_EP2_OUT:   
                                     //如果是0x02,则是端点2的OUT事务(接收到数据,OUT成功),OUT是相对于主机端计算机来说的
CH375_WRCMD(CMD_RD_USB_DATA);      //发读取USB缓冲区数据命令,并释放缓冲区
length=CH375_REDAT();              //先读取数据长度
for(i=0;i<length;i++)                 //根据数据长度,读取所有值
{
buf[i ]=CH375_REDAT();                //读取的数据放入缓冲数组
}

/*以下为向主机端计算机发送接收到的数据*/
CH375_WRCMD(CMD_WR_USB_DATA7);     //发向端点2的发送缓冲区写数据命令
CH375_WRDAT(length);               //先写入数据的长度
for(i=0;i<length;i++)                 //根据长度,依次发送要发送的数据
CH375_WRDAT(buf[i ]);
break;                               //跳出

case USB_INT_EP2_IN:                     //如果是0x0A,则是端点2的IN事务(发送完数据,IN成功),IN是相对于主机端计算机来说的                 

CH375_WRCMD(CMD_UNLOCK_USB);         //发送释放缓冲区命令

break;                               //跳出
default:                                 
CH375_WRCMD(CMD_UNLOCK_USB);   
break;
}
}
/***********************************************************************************
****函数名称:主函数
****函数作用:
****函数描述:
************************************************************************************/
void main(void)
{   
delay50ms();                              //延时50ms   
    CH375_WRCMD(CMD_SET_USB_ID);
CH375_WRDAT(0x12);      //    VID低8位
CH375_WRDAT(0x12);      // VID高8位
CH375_WRDAT(0x12);      //    PID低8位
CH375_WRDAT(0x12);      //    PID高8位
CH375_WRCMD(CMD_SET_USB_MODE);           //设置工作模式
CH375_WRDAT(2);                          //设置为内置固件模式

IT0=0;                                      //设置外部中断0为低电平出发方式
EX0=1;                                      //使能外部中断0
EA=1;                                       //使能所有中断

while(1)
{
if(flag==49)
{
delay50ms();
start_temp_sensor();
temp=read_temp();   
shi=temp/10;
ge=temp%10;
/*以下为向主机端计算机发送数据*/        
//    if(temp<85)
//    {
    CH375_WRCMD(CMD_WR_USB_DATA7);     //发向端点2的发送缓冲区写数据命令
CH375_WRDAT(2);
CH375_WRDAT(shi);
CH375_WRDAT(ge);
//    }   
}
}

                             
}














CH375_WRCMD(CMD_SET_USB_ID);
CH375_WRDAT(0x11);      //    VID低8位
CH375_WRDAT(0x11);      // VID高8位
CH375_WRDAT(0x11);      //    PID低8位
CH375_WRDAT(0x11);      //    PID高8位
把这个删了就可以识别了

离线

页脚