论坛» 嵌入式开发» STM32

分享一个诡异的问题

高工
2016-03-15 23:48 1楼

用STM32F103ZET6来做项目,已经经过各种测试没问题后正常出货一段时间了。最近需要添加一个功能,这部分功能添加只是改了串口接收以及显示部分的东西,并没有动硬件IIC方面的代码。结果烧了新的程序后,测试期间多块板子IIC那部分有问题。用JLINK调试,发现硬件IIC使能后没有进入事件中断或者是错误中断。烧回以前的程序又可以正常运行。难道是程序有问题?...又调试了两天没有半点效果。这款产品有三种机箱,将同一张板子放入不同的机箱里,有几个正常有的不正常..瞬间就懵了...

纳闷了很久,硬件工程师用风枪吹了一下IIC通信有问题的芯片,趁热试试,又正常工作了....过了会,等到它冷却下来,又不行了....

院士
2016-03-15 23:52 2楼

这个IIC接口在ST的官方已经给出来解决方案了。

其中重要一条便是,要将IIC硬件中断的优先级设定为最高。

高工
2016-03-16 00:57 3楼
顶一个
专家
2016-03-16 06:05 4楼
怪异,
高工
2016-03-16 07:34 5楼
奇诡
专家
2016-03-18 10:58 6楼
好恐怖
院士
2016-03-19 08:36 7楼

我想Keil5与Keil4的不同,可能在于编译器的优化程度不同。

例如,某个阻塞延迟函数,在不同的编译环境下可能产生不同时间的延迟,也许会导致处理器的资源调配出现不同,从而影响了整个系统。

可以尝试将I2C部分代码不做优化处理
高工
2016-04-15 15:39 8楼
难道被编译器自动优化了,楼主最后咋解决的
共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]