鼎银电子
发表于 2024-8-5 15:08:21
神农鼎 发表于 2023-12-27 17:51
LAOXU 发表于 2023-12-27 17:49
什么时候出样片 ?
老师好,请问USB中断问题,代码如下,在没有接收HID数据,或者没有向USB口发送数据,USB就不产生中断(P24不会翻转状态),理论上应该1ms产生一次中断呢,是不是某些寄存器为没有清除呢?
目的是想在USB中断里完成串口数据的转发,而不是在主程序里查询方式发送(uart_polling())
void usb_isr() interrupt 25
{
static BYTE cdc1cnt=0;
BYTE intrusb;
BYTE intrin;
BYTE introut;
BYTE adrTemp;
adrTemp = USBADR; //USBADR 现场保存,避免主循环里写完 USBADR 后产生中断,在中断里修改了 USBADR 内容
intrusb = usb_read_reg(INTRUSB);
intrin = usb_read_reg(INTRIN1);
introut = usb_read_reg(INTROUT1);
if (intrusb & RSUIF) usb_resume();
if (intrusb & RSTIF) usb_reset();
if (intrin & EP0IF) usb_setup();
#ifdef EN_EP1IN
if (intrin & EP1INIF) usb_in_ep1();
#endif
#ifdef EN_EP2IN
if (intrin & EP2INIF) usb_in_ep2();
#endif
#ifdef EN_EP3IN
if (intrin & EP3INIF) usb_in_ep3();
#endif
#ifdef EN_EP4IN
if (intrin & EP4INIF) usb_in_ep4();
#endif
#ifdef EN_EP5IN
if (intrin & EP5INIF) usb_in_ep5();
#endif
#ifdef EN_EP1OUT
if (introut & EP1OUTIF) usb_out_ep1();
#endif
#ifdef EN_EP2OUT
if (introut & EP2OUTIF) usb_out_ep2();
#endif
#ifdef EN_EP3OUT
if (introut & EP3OUTIF) usb_out_ep3();
#endif
#ifdef EN_EP4OUT
if (introut & EP4OUTIF) usb_out_ep4();
#endif
#ifdef EN_EP5OUT
if (introut & EP5OUTIF) usb_out_ep5();
#endif
if (intrusb & SUSIF) usb_suspend();
USBADR = adrTemp; //USBADR 现场恢复
++cdc1cnt;
if(!cdc1cnt)P24^=1;
}
lyldzxx
发表于 2024-8-17 14:13:48
{:5_272:}
LoveAmanda
发表于 2024-8-22 19:22:31
{:5_332:}
hande5
发表于 2024-11-1 14:02:49
{:4_165:}
hande5
发表于 2024-11-2 10:07:02
学习
Matrix
发表于 2024-11-4 14:06:16
{:4_167:}{:4_167:}
qepuemc
发表于 2024-11-22 21:15:02
梁工 发表于 2024-1-15 21:20
可以的。
stc的mcu可以接32.768k的晶振吗 文件说明是4M以上
这个如果加了32.768k的晶振就可以实现低功耗运行了吗? 不加的话大约是2-7MA或更多。5M主频无程序可以到1.8 MA 加了可以不休眠无程序的话实现更低的功耗吗。
梁工
发表于 2024-11-22 23:53:17
qepuemc 发表于 2024-11-22 21:15
stc的mcu可以接32.768k的晶振吗 文件说明是4M以上
可以外接32.768K晶振。
holtek
发表于 2024-11-23 08:25:01
参数挺不错。。。。
ainiwuhui
发表于 2025-2-12 12:37:54
学习一下。正在找串口DMA接收,超时时间是如何计算的。