下面有两个图,第一个是USB枚举成功时捕获的数据;第二个是通信时枚举失败的情况。
我是把USB设备枚举成了一个鼠标设备,可是通过外部中断响应进行通信后,就会提示枚举失败。
以下是外部中断响应函数:
uint8_t *WritePosition(void)
{
static uint8_t buffer[4] = {0};
buffer[3] = -1;
return buffer;
}
void EXTI3_IRQHandler()
{
uint8_t * buff;
uint16_t len;
// 判断中断是否发生
if(EXTI->PR & EXTI_PR_PR3){
buff = WritePosition();
if(buff[0] != 0 || buff[1] != 0 || buff[2] != 0 || buff[3] != 0){
len = 4;
Get_EP_Content(&ep_in[1], buff, len);
DATA_READY(4, 1);
}
}
// 清除中断标志位
EXTI->PR |= EXTI_PR_PR3;
}转载
|