Closed
Description
描述一下这个bug / Describe the bug
我在一款测试芯片上,发现 USB_OTG_GLB->GRSTCTL |= USB_OTG_GRSTCTL_CSRST 后该位一直保持为1,并没有自动清除
复现步骤 / To Reproduce
内部测试芯片所以无法给出复现方法,可能其他芯片会遇到
设备信息 / Target Device
内部测试芯片所以无法给出复现方法
日志 / Log
错误的日志:
00> GRSTCTL111: 80000000, 40040010
00> GRSTCTL222: A0000001, 40040010
00> GRSTCTL333: A0000001, 40040010
正确的日志:
00> GRSTCTRL111: 80000000, 40040010
00> GRSTCTRL222: 80000001, 40040010
00> GRSTCTRL333: 80000000, 40040010
配置 / Configuration
原始代码为:
do {
if (++count > 200000U) {
return -1;
}
} while ((USB_OTG_GLB->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);
修改后位:
do {
if (++count > 200000U) {
break;
}
} while ((USB_OTG_GLB->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);
USB_OTG_GLB->GRSTCTL &= ~(USB_OTG_GRSTCTL_CSRST);
USB中断 / USB Interrupt
不修改前无法进入中断
缓存 / Cache
No response
商业 / Business
- 是 / Yes
Metadata
Metadata
Assignees
Labels
No labels