等待明天22 发表于 2018-10-22 20:27:53

STM32F407仿真跑和直接跑有差别,是什么原因导致的?

单片机使用的是STM32F407,平时用仿真器进行调试的代码运行正常,今天直接跑了一次,发现有丢数据的现象(采集到的数据没有上传到电脑),排查中用单片机的一个引脚做输出,用逻辑分析仪测量了一块程序的时间,如下图所示:用仿真器跑的时候如下图所示,间隔比较均匀,大约900us的样子




直接跑时如下图所示,间隔不均匀,而且耗时比较多,基本在10ms的样子


排查了晶振,boot0,boot1,发现也没有问题。有遇到类似情况的大神吗?求告知原因

wenyangzeng 发表于 2018-10-22 21:31:36

楼主应该把系统的各种中断所需耗时考虑进去(比如SysTick中断),在进入各种中断和进行ADC转换时就无法执行发送数据的任务了。

等待明天22 发表于 2018-10-22 21:35:38

wenyangzeng 发表于 2018-10-22 21:31
楼主应该把系统的各种中断所需耗时考虑进去(比如SysTick中断),在进入各种中断和进行ADC转换时就无法执行 ...

关键是用仿真器运行时是正常的,而直接跑就出问题了

toofree 发表于 2018-10-23 09:16:49

多试几次,看看现象有一样吗,有没有细微的差别?
只要有差别,就有可能程序有缺陷。没有操作系统,并且没有外部触发条件的裸机程序,执行起来应该是基本确定的。

等待明天22 发表于 2018-10-23 12:36:41

toofree 发表于 2018-10-23 09:16
多试几次,看看现象有一样吗,有没有细微的差别?
只要有差别,就有可能程序有缺陷。没有操作系统,并且没 ...

有操作系统的,难道是ucos的问题?后来又测试了,只要用仿真器就是好的,不用仿真器,有时候也好,属于概率性的
页: [1]
查看完整版本: STM32F407仿真跑和直接跑有差别,是什么原因导致的?