为什么我更改了keil5的芯片,但是更改不成功?

#一开始用的stm32f103ze,编译没有问题
#

img


#然后我改成了stm32f103rb,按了确认键以后没有更改成功,project那里显示的还是stm32f103ze,但是device那里已经变成了stm32f103rb,并且更改之后,编译会报错
#

img


#

img


#

img


#

img

#这是为啥?是因为代码不适配stm32f103rb吗?要怎么改呢?

你好,你这个的问题估计是芯片选择上出现的问题,stm32f103ze的flash是512k,stm32f103rb的flash128k,其中工程里面使用的头文件不一样了,启动文件的.s也不一样,你把大容量的工程改成了中容量的工程,可能有些工程细节没处理好,用stm32f103ze编译的程序,烧入到stm32f103rb里面是部分功能可以用,不是全部可以用,想要解决好最好新建工程来进行移植,或者使用cubemax来生成工程吧,现在外面开发中,工程中大部分都用hal库编程了。

可能有多种原因导致更改芯片失败,以下是一些可能的原因和解决方法:

  1. 芯片型号不支持:你要确保你所选择的芯片型号是keil5所支持的,否则就无法更改成功。你可以在Keil的官方网站上找到他们支持的芯片型号列表。

  2. 编译器版本不匹配:如果你使用的编译器版本与芯片型号不匹配,也会导致更改失败。确保你所使用的编译器版本与芯片型号匹配。

  3. 芯片被锁定:有些芯片被设计为只能写入一次,或者在特定条件下才能写入/更改。如果芯片已经被锁定了,你就无法进行更改了。

  4. 其他问题:还有一些可能的问题,比如连接设备的硬件故障、驱动程序的错误或损坏等等。在这种情况下,你可以尝试重新安装驱动程序或更换连接设备,也可以考虑检查系统日志以查找错误消息。

总之,更改芯片需要谨慎,并且要仔细检查所有可能的问题。如果遇到任何困难,请参考Keil的文档或联系他们的支持团队。

MDK本身的bug,重新打开工程就是了
会报错,主要原因是代码空间不一样,103rb要小很多,可能空间不够,所以报错了

该回答引用ChatGPT
根据问题描述,您更改了Keil5中的芯片型号,但出现了更改不成功的情况,具体原因可能有以下几个方面:

  1. 代码不适配芯片型号:您从stm32f103ze更改到stm32f103rb,这两种芯片虽然都属于STM32F103系列,但可能有一些寄存器或者引脚定义等方面的差别,如果您的代码中直接使用了针对原芯片型号的寄存器或者引脚定义,那么编译时就会出现错误。此时,您需要根据新芯片型号的手册或者数据手册,仔细查看和更改需要修改的寄存器或者引脚等定义内容,才能保证编译通过。

  2. Keil5版本不兼容:如果您的Keil5版本比较老,可能不支持新的芯片型号。此时,您需要更新Keil5版本,并在新版本中重新配置芯片型号。

  3. Keil5软件出现问题:如果Keil5软件本身出现问题,可能导致芯片型号更改不成功。此时,建议您重新安装Keil5软件,并在安装过程中注意选择正确的芯片型号。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
可能是因为你更改了芯片型号,但是工程设置中的芯片器件名字和选项卡的芯片型号没有匹配导致的。你可以按照以下步骤进行操作:

1.在project options中的Target选项卡下,选择正确的芯片型号。

2.在C/C++选项卡下,选择正确的include文件路径和链接脚本文件路径。

3.在Linker选项卡下,确认使用的库文件路径是否正确。

4.在前往Config Parade for Target对话框中,确认芯片名字是否正确。

5.在更改芯片型号之后,需要重新生成工程文件以确保更改生效。

如果以上方法都试过了依然不行,可能是因为代码不适配stm32f103rb芯片。你需要检查代码是否适配新的芯片型号,特别是关于基础时钟和时序的设置,这些可能需要根据新型号进行更改。你也可以尝试通过查看编译报错以确定问题所在,如果有错误信息,请将错误信息提供上来,我可以帮忙查看一下。

代码问题可能比较复杂,不能简单地提供一段修改代码来解决问题。建议你阅读芯片型号的数据手册,了解芯片的规格和参数,并对比不同型号之间的区别,尤其要关注与时序相关的参数。然后再对你的代码进行更改。
如果我的回答解决了您的问题,请采纳!

1,先用STM32F103RB建立一个简单的工程,然后查看在C/C++选项卡下的define
2,将你改的程序中的C/C++选项卡下的define中改成上面的工程中的设置