打印
[STM32F1]

KEIL编译USB功能不正常

[复制链接]
660|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shipeng1989|  楼主 | 2024-12-24 21:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如附件工程,其中包含了MDK和IAR工程文件,此两个工程共用一套源码文件。芯片采用STM32F103C8T6,实现功能为USB连接电脑可识别为一个U盘,往其中放入FIRMWARE.bin文件可实现更新固件功能,且必须指定为FIRMWARE.bin文件才可更新固件,当写入其它文件不会改写固件数据,为了解决 “写入其它文件会改写固件数据的问题” 花了我一整天的摸鱼时间才调试完成,现在无偿分享给大家使用。实现方式是连接电脑或手机后初始文件存储了一个FIRMWARE.bin文件,此文件占用全部有效的固件FLASH区,写入数据必须替换FIRMWARE.bin的同名文件写入才有效,否则数据会写入无效空间。另外现在遇到的问题是使用KEIL MDK编译生成的目标文件USB功能异常,连接USB电脑不能识别设备,但IAR编译生成的目标文件USB功能是正常的连接电脑USB可以正常识别且操作正常,还希望大家能帮我找一下原因,在此感激不尽。 BOOTWESD.zip (717.28 KB)


使用特权

评论回复
沙发
shipeng1989|  楼主 | 2024-12-24 21:49 | 只看该作者
之前也遇到过STM32F105作为主机读U盘升级的工程也是KEIL编译生成的目标文件USB功能不正常但其他功能没有问题可以正常跳转APP,IAR一切正常,不知道是什么原因

使用特权

评论回复
板凳
shipeng1989|  楼主 | 2024-12-25 16:59 | 只看该作者
奇怪了,许久没有试过keil编译,今天又测试了一下,它居然自己好了,现在USB功能一切正常了

BOOTWESD.zip

719.34 KB

虚拟U盘

使用特权

评论回复
地板
物联万物互联| | 2024-12-26 19:59 | 只看该作者
最近也卡在USB上,很玄幻得USB问题。

使用特权

评论回复
5
elephant00| | 2024-12-27 15:56 | 只看该作者
是USB线坏了吗

使用特权

评论回复
6
两只袜子| | 2024-12-27 15:57 | 只看该作者
换一根USB线

使用特权

评论回复
7
jcky001| | 2024-12-27 15:58 | 只看该作者
检查计算机的USB端口是否正常工作。

使用特权

评论回复
8
cr315| | 2024-12-27 15:59 | 只看该作者
固件版本与KEIL软件不兼容?

使用特权

评论回复
9
Amazingxixixi| | 2024-12-27 16:05 | 只看该作者
过来学习学习

使用特权

评论回复
10
laocuo1142| | 2024-12-27 16:11 | 只看该作者
如果固件版本过旧,尝试更新到最新版本。

使用特权

评论回复
11
flycamelaaa| | 2024-12-27 16:11 | 只看该作者
卸载并重新安装驱动程序试试

使用特权

评论回复
12
powerantone| | 2024-12-27 16:16 | 只看该作者
在KEIL中,检查项目的设置是否正确。

使用特权

评论回复
13
stormwind123| | 2024-12-27 16:16 | 只看该作者
检查编译选项是否正确,包括优化级别、目标文件格式等。

使用特权

评论回复
14
probedog| | 2024-12-27 16:17 | 只看该作者
检查USB初始化代码是否存在错误或遗漏。

使用特权

评论回复
15
classroom| | 2024-12-27 16:17 | 只看该作者
USB中断处理有误

使用特权

评论回复
16
shipeng1989|  楼主 | 2024-12-27 18:03 | 只看该作者
以上分析的原因感觉都不是,因为同样的代码文件用IAR编译就没问题,不过现在都没问题了KEIL编译的文件USB也能正常识别,KEIL和IAR的工程配置编译优化都是开到最大的size优化,KEIL的目标文件比IAR还要小一点

使用特权

评论回复
17
Stahan| | 2024-12-29 21:31 | 只看该作者
为什么keil编译就不行啊

使用特权

评论回复
18
gejigeji521| | 2024-12-30 19:02 | 只看该作者
你这个情况我也遇到过,最后我发现我的KEIL选择AC6就会有问题,选择AC5没问题。

使用特权

评论回复
19
shipeng1989|  楼主 | 2024-12-31 16:26 | 只看该作者
gejigeji521 发表于 2024-12-30 19:02
你这个情况我也遇到过,最后我发现我的KEIL选择AC6就会有问题,选择AC5没问题。 ...

AC5感觉确实比AC6的兼容性要好不少,但是AC6编译质量更高速度比AC5有很大的提升,我现在装的新版KEIL都不带AC5编译器了

使用特权

评论回复
20
shipeng1989|  楼主 | 2024-12-31 16:33 | 只看该作者
我只说一个我怀疑的原因,但是没有去验证:可能跟KEIL工程配置里面的MicroLib勾选有关,必须要勾选MicroLib才行否则就会有问题,而且勾选之后要clean一下再编译,最开始我的工程是没有勾选MicroLib的但是刚勾选的时候编译了USB也不行,可能是后面工程被无意中clean了所以它现在好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

140

帖子

1

粉丝