我使用 STM32_USB-Host-Device_Lib_V2.1.0 的官方历程,裁剪了一个usb的虚拟串口,没有问题良好运行。
然后 在此基础上写了个bootloader,数据传输无误。就是最后 每次运行到 jump2app(); 就死掉。。
为了验证我的FLASH 写错没有,我直接用JLINK 在0x8010000的地方烧了个历程,然后不初始化USB_VCP ,就直接转跳APP 没有问题 直接运行。。。。
然后发现是 虚拟串口 初始化 与 if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) { jump2app=(iapfun)*(vu32*)(appxaddr+4); MSR_MSP(*(vu32*)appxaddr); jump2app(); } 冲突。
最后 发现 把USB_OTG_WRITE_REG32 (&pdev->regs.GREGS->GCCFG, gccfg.d32); 这句话 注销掉,就可以 转跳APP并运行APP。但是 虚拟串口不可识别。
原子哥 怎么办啊?怎么解决这个问题啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢 原子哥,是我 虚拟串口 没有关闭 就 死了。。。我再转跳前 把 VCP 关了 就可以了
已经解决,我是用的标准库。我的问题是在IAP中使用了中断,我在跳转之前清除中断并关闭,在APP中 打开中断就可以正常使用了。这是最关键的。如果不清除中断会保留到APP中去,如果你在APP中不使用中断就没事,使用就会跑飞
一周热门 更多>