[STM32F1] KEIL编译USB功能不正常

[复制链接]
1559|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, 下载次数: 1)


 楼主| 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, 下载次数: 2

虚拟U盘

物联万物互联 发表于 2024-12-26 19:59 | 显示全部楼层
最近也卡在USB上,很玄幻得USB问题。
elephant00 发表于 2024-12-27 15:56 | 显示全部楼层
是USB线坏了吗
两只袜子 发表于 2024-12-27 15:57 | 显示全部楼层
换一根USB线
jcky001 发表于 2024-12-27 15:58 | 显示全部楼层
检查计算机的USB端口是否正常工作。
cr315 发表于 2024-12-27 15:59 | 显示全部楼层
固件版本与KEIL软件不兼容?
Amazingxixixi 发表于 2024-12-27 16:05 | 显示全部楼层
过来学习学习
laocuo1142 发表于 2024-12-27 16:11 | 显示全部楼层
如果固件版本过旧,尝试更新到最新版本。
flycamelaaa 发表于 2024-12-27 16:11 | 显示全部楼层
卸载并重新安装驱动程序试试
powerantone 发表于 2024-12-27 16:16 | 显示全部楼层
在KEIL中,检查项目的设置是否正确。
stormwind123 发表于 2024-12-27 16:16 | 显示全部楼层
检查编译选项是否正确,包括优化级别、目标文件格式等。
probedog 发表于 2024-12-27 16:17 | 显示全部楼层
检查USB初始化代码是否存在错误或遗漏。
classroom 发表于 2024-12-27 16:17 | 显示全部楼层
USB中断处理有误
 楼主| shipeng1989 发表于 2024-12-27 18:03 | 显示全部楼层
以上分析的原因感觉都不是,因为同样的代码文件用IAR编译就没问题,不过现在都没问题了KEIL编译的文件USB也能正常识别,KEIL和IAR的工程配置编译优化都是开到最大的size优化,KEIL的目标文件比IAR还要小一点
Stahan 发表于 2024-12-29 21:31 来自手机 | 显示全部楼层
为什么keil编译就不行啊
gejigeji521 发表于 2024-12-30 19:02 | 显示全部楼层
你这个情况我也遇到过,最后我发现我的KEIL选择AC6就会有问题,选择AC5没问题。
 楼主| shipeng1989 发表于 2024-12-31 16:26 | 显示全部楼层
gejigeji521 发表于 2024-12-30 19:02
你这个情况我也遇到过,最后我发现我的KEIL选择AC6就会有问题,选择AC5没问题。 ...

AC5感觉确实比AC6的兼容性要好不少,但是AC6编译质量更高速度比AC5有很大的提升,我现在装的新版KEIL都不带AC5编译器了
 楼主| shipeng1989 发表于 2024-12-31 16:33 | 显示全部楼层
我只说一个我怀疑的原因,但是没有去验证:可能跟KEIL工程配置里面的MicroLib勾选有关,必须要勾选MicroLib才行否则就会有问题,而且勾选之后要clean一下再编译,最开始我的工程是没有勾选MicroLib的但是刚勾选的时候编译了USB也不行,可能是后面工程被无意中clean了所以它现在好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

140

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部