打印
[应用相关]

各位大佬,同样的C代码执行结果不同的问题?

[复制链接]
1660|53
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stormwind123|  楼主 | 2024-9-5 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用STM32控制NRF24L01时,出现下面的问题:有两份代码(烧录到发送机里,接收机的代码是没问题的)

两份代码的内容,文件,文件储存路径都是一样的,

但是A代码烧录进STM32后,接收机很快能收到发送机发送的数据

B代码烧录进STM32后,接收机要过很久才能收到发送机发送的数据

同样的AB代码(C代码是一样的),用Keil运行的汇编代码不一样

请问这是为什么

使用特权

评论回复
沙发
内政奇才| | 2024-9-5 16:19 | 只看该作者
即使C代码相同,不同的编译器优化设置(如优化等级、特定的优化选项等)可能会导致生成的汇编代码差异很大。这些差异可能影响到程序的执行效率、中断响应时间等,进而影响NRF24L01的通信性能。
检查两份代码在Keil中的项目设置,特别是编译器优化选项(如O0, O1, O2, O3等),确保它们完全一致。

使用特权

评论回复
板凳
七毛钱| | 2024-9-5 19:23 | 只看该作者
硬件连接是否稳定,电源是否足够且稳定,以及是否有其他潜在的电磁干扰源。

使用特权

评论回复
地板
duo点| | 2024-9-5 20:23 | 只看该作者
检查链接器脚本(如果有的话),确保内存布局和初始化代码(如启动文件)在两个项目中是相同的。

使用特权

评论回复
5
两只袜子| | 2024-9-5 21:00 | 只看该作者
检查代码是否存在未定义行为

使用特权

评论回复
6
jcky001| | 2024-9-5 22:00 | 只看该作者
在初始化NRF24L01之前,STM32的时钟、GPIO、中断等都已经正确配置。

使用特权

评论回复
7
cr315| | 2024-9-5 22:56 | 只看该作者
如果可能的话,检查两个STM32开发板是否有任何硬件差异(如晶振频率、电容电阻值等),这些差异可能会影响程序的执行。

使用特权

评论回复
8
febgxu| | 2024-9-9 10:18 | 只看该作者
不同的编译器或编译器的不同版本可能会生成不同的机器码,这可能导致相同的C代码在编译后有不同的行为。

使用特权

评论回复
9
jonas222| | 2024-9-9 10:58 | 只看该作者
链接器也可能有影响性能的选项,如内存分配、库链接等。

使用特权

评论回复
10
mickit| | 2024-9-9 13:34 | 只看该作者
编译器生成的调试信息可能会影响程序的执行效率。如果两份代码的调试信息不同,可能会导致执行结果的差异。

使用特权

评论回复
11
mmbs| | 2024-9-9 14:57 | 只看该作者
如果代码中存在未初始化的变量,其初始值可能是随机的,并且在不同的编译和运行环境中可能会有所不同。这可能会影响到与 NRF24L01 的通信时序或配置。

使用特权

评论回复
12
AdaMaYun| | 2024-9-9 15:16 | 只看该作者
理论上同样型号的MCU不会有这种问题吧

使用特权

评论回复
13
plsbackup| | 2024-9-9 16:19 | 只看该作者
如果可能,尽量避免依赖全局变量和静态变量的初始化顺序,可以通过明确的初始化函数来确保变量的正确初始化。

使用特权

评论回复
14
呐咯密密| | 2024-9-9 17:19 | 只看该作者
编译器的优化等级一样吗

使用特权

评论回复
15
hearstnorman323| | 2024-9-9 19:37 | 只看该作者
如果发送机和接收机的内存访问模式不同(如DMA配置),可能会导致数据传输延迟。

使用特权

评论回复
16
lzmm| | 2024-9-9 22:40 | 只看该作者
STM32与NRF24L01之间的通信可能对时序敏感。检查代码中的延时函数和等待循环

使用特权

评论回复
17
cemaj| | 2024-9-10 01:41 | 只看该作者
不同的中断优先级或定时器配置可能导致数据发送/接收的延迟。

使用特权

评论回复
18
updownq| | 2024-9-10 04:43 | 只看该作者
检查代码中的中断处理程序和时序相关的代码

使用特权

评论回复
19
jackcat| | 2024-9-10 16:38 | 只看该作者
检查代码中的中断处理程序和时序相关的代码

使用特权

评论回复
20
everyrobin| | 2024-9-10 18:23 | 只看该作者
如果发送机和接收机的内存访问模式不同(如DMA配置),可能会导致数据传输延迟。

使用特权

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

本版积分规则

416

主题

2129

帖子

2

粉丝