发布网友 发布时间:2022-04-24 12:43
共5个回答
热心网友 时间:2023-10-13 05:05
你用的什么单片机呢?如果是51,这种情况应该不会出现,如果是AVR或者ARM内核的单片机,有可能是你的变量被优化了,从而导致部分代码被优化了.
两种解决办法,一是设置Keil的编译器,把优化级别调整到0,也就是禁止优化.
二是,把你的全局变量定义之前,加个 volatile,禁止编译器优化.
热心网友 时间:2023-10-13 05:05
1。 “这两者都使用相同的软件,有什么区别吗?”
不同软件。
2。 “为什么8051可能无法自动编译,而不调用子程序吗?”
因为用户可以是一个词的隐式调用程序的编制。
你说:“编译ARM(LPC1768)子例程被调用时,不会有任何警告,不要调用程序代码编译成”我是持怀疑态度。
无论哪种方式编程是可能的隐式调用功能,如通过函数指针。所以,不进行编译明确地调用子程序的行为明显违反了程序员的意图。有两种可能:默认的项目设置正确,需要添加一种特殊类型的指令或子程序的编译器开关或类型。
想知道的最好的两个编译西装的区别是它自己的文档。数十兆字节的文件看包使你受益无穷。
热心网友 时间:2023-10-13 05:05
单片机做的,你用什么?
如果你是51岁,这种情况应该不会发生,如果AVR和ARM核心MCU,你的变量进行了优化,导致部分的代码进行了优化。这两个解决方案,一组Keil编译器,调整优化级别设置为0,这是禁止的优化。
第二个是加入挥发性之前定义的全局变量,禁用编译器优化。
热心网友 时间:2023-10-13 05:06
有可能是被优化掉了。
你可以通过调试跟踪一下程序运行情况,就知道是被优化还是出别的问题了。
热心网友 时间:2023-10-13 05:07
恩,不是吧,没遇到过这样的错误