USB中断矢量地址问题
在数据手册的13章中断系统中,13.4.1中断使能寄存器,介绍USB中断的中断控制位是IE2.7(EUSB),当该位 =1,允许USB中断。还有13.3表格中说明USB中断的矢量地址:FF00CBH,C51中断号:25。但是,在数据手册27.5 USB范例程序中,UsbInit()初始化程序没用对“EUSB”置位,在中断服务程序“void usb_isr() interrupt 22”中用的中断号是“22”,这里没理解,请大佬解惑。
void UsbInit()
{
P3M0 = 0x00;
P3M1 = 0x03;
P_SW2 |= 0x80;
PLLCR = (1<<7)|(0<<5)|(1<<3)|(1<<1); // enable PLL
DelayXns(100);
CLKSEL = 0x02; //选择系统时钟源为内部 pll 输出
CLKDIV = 0;
P_SW2 &= ~0x80;
USBCLK = 0x90;
USBCON = 0x90;
WriteReg(FADDR, 0x00);
WriteReg(POWER, 0x08);
WriteReg(INTRIN1E, 0x3f);
WriteReg(INTROUT1E, 0x3f);
WriteReg(INTRUSBE, 0x00);
WriteReg(POWER, 0x01);
Ep0Stage.bStage = EPIDLE;
}
根据您提供的信息,USB中断的中断控制位确实为IE2.7(EUSB),且中断矢量地址为FF00CBH,C51中断号为25。然而,在范例程序中,中断服务程序使用了中断号22,这与数据手册中的描述不符。可能的原因有以下几点:
1. **芯片型号差异**:不同型号的芯片可能存在中断号分配上的差异,建议确认所使用的芯片型号是否与数据手册一致。
2. **编译器优化**:编译器可能对中断号进行了优化或重新映射,导致实际使用的中断号与手册中的描述不同。
3. **示例代码错误**:示例代码可能存在笔误或错误,建议与芯片厂商确认示例代码的正确性。
综上所述,建议您首先确认芯片型号和编译器设置,若仍无法解决,可联系芯片厂商获取技术支持。
[本文内容由国芯人工智能辅助生成,仅供参考] 关于USB中断矢量地址与中断号不一致的问题,可能是由于手册与示例程序的版本差异或特定应用场景下的配置调整所致。手册中USB中断的矢量地址为FF00CBH,中断号为25,而示例程序中使用的中断号为22,这表明可能存在以下几种情况:
1. **中断号映射不同**:不同型号或版本的芯片可能在中断号与矢量地址的映射上存在差异,需确认所使用的芯片型号与手册版本是否一致。
2. **中断优先级调整**:示例程序可能出于优先级或其他系统需求,将USB中断映射到中断号22,而非默认的25。
3. **初始化遗漏**:示例程序未对“EUSB”置位,可能是为了在特定条件下手动控制中断使能,或在后续代码中通过其他方式实现。
建议查阅最新版芯片手册,确认中断号映射,并在代码中补充“EUSB”置位操作,以确保中断功能正常启用。如有疑问,可联系芯片技术支持获取进一步指导。
[本文内容由国芯人工智能辅助生成,仅供参考] USB中断是中断25
中断22可能是借用
这个问题还需要大佬解惑 fxg2024 发表于 2025-3-5 10:11
这个问题还需要大佬解惑
我们目前所有有USB功能的芯片,USB中断号都是25
最新的数据手册中的范例中,USB的中断号也都是使用的25
如果手册有使用22号中断,一定是笔误
不知您看的是哪个系列的手册,手册的更新时间是什么时候? zhp 发表于 2025-3-5 17:37
我们目前所有有USB功能的芯片,USB中断号都是25
最新的数据手册中的范例中,USB的中断号也都是使用的25
谢谢,看的是车规 AEC-Q100 Grade1 MCU 设计公司,STC32G 系列单片机,资料更新日期:2024/4/15 你截图发上来,大家帮看下 这是资料截图
这个例程有错
页:
[1]
2