Arm Keil uVision将我的代码编译成0xfff-s

Arm Keil uVision将我的代码编译成0xfff-s,arm,stm32,keil,stm32f0,Arm,Stm32,Keil,Stm32f0,我有个奇怪的问题。出于某种原因,我的编译器生成0xfff-s而不是实际代码。这种情况发生在一个完整的文件中(参见屏幕截图,sim800.c是这样完整的),其他文件可以很好地编译。 这不一定发生在这个特定的文件上。如果我更改代码,sim800.c将可以编译,但其他代码可能会出错。 只有当优化关闭(-O0)时才会发生这种情况。如果我打开优化(-O1),问题就会消失。清理编译没有帮助 C代码及其程序集 我正在使用 Keil uVision 5 GCC v5.06 upd。一, STM32F030

我有个奇怪的问题。出于某种原因,我的编译器生成0xfff-s而不是实际代码。这种情况发生在一个完整的文件中(参见屏幕截图,sim800.c是这样完整的),其他文件可以很好地编译。 这不一定发生在这个特定的文件上。如果我更改代码,sim800.c将可以编译,但其他代码可能会出错。 只有当优化关闭(
-O0
)时才会发生这种情况。如果我打开优化(
-O1
),问题就会消失。清理编译没有帮助

C代码及其程序集

我正在使用

  • Keil uVision 5
  • GCC v5.06 upd。一,
  • STM32F030

您确定编译器会生成FFs吗?看起来代码没有正确加载(或者根本没有加载)到闪存中,这可以解释为什么调试器只显示FFs。您应该生成一个ascii二进制文件(如.hex或.s19),并检查二进制代码是否正确。是的,结果是芯片本身擦除了代码。。。我有另一个将信息写入闪存的代码图片(在删除整个1kb页面后)。我指定了错误的地址,芯片正好在代码的中间。优化后,代码变为smoller,未达到指定的地址。感觉自己像个哑巴。。谢谢你的评论=)