- 打卡等级:初来乍到
- 打卡总天数:6
- 最近打卡:2024-12-27 15:57:04
金牌会员
- 积分
- 1221
|
官方的范例是在循环中查询接收和发送的,我想改为中断模式
将官方STC8H8K64U系列用户ISP范例(USB模式)代码中的这一句void usb_isr() //interrupt USB_VECTOR注释去掉后改为void usb_isr() interrupt USB_VECTOR,出现报错如下:
*** WARNING L15: MULTIPLE CALL TO FUNCTION
NAME: _USB_WRITE_FIFO/USB
CALLER1: USB_ISR/USB
CALLER2: ?C_C51STARTUP
|
找了其他USB HID例程里面是简单的原路返回(其实官方不应该用这个原路返回做标准例程,根本不实用,新手不知如何改成发送自己的内容),然后根据USB键盘的例程,修改发送代码如下:
void usb_IN()
{
// usb_write_reg(INDEX, 1);
// while (usb_read_reg(INCSR1) & INIPRDY);
// usb_bulk_intr_in(UsbInBuffer, 64, 1);
// bUsbInBusy = 1;
unsigned char i;
while(bUsbInBusy);
IE2 &= ~EUSB;
bUsbInBusy = 1;
usb_write_reg(INDEX, 1);
for (i=0; i<64; i++)
{
usb_write_reg(FIFO1, UsbInBuffer);
}
usb_write_reg(INCSR1, INIPRDY);
IE2 |= EUSB;
}
这样是不报错了,但不知这样是否正规,有没有隐患,请大佬们帮忙看一下,或者帮忙推荐一个正式的发送自己内容的USB HID的例程看一下。
|
|