最近被一个非常恼人的问题缠了几天。在调试STM32的FSMC功能时,发现FSMC管脚波形十分诡异,会有严重的拖尾、高低不平的方波、半三角波等波形出现,导致数据根本无法正常通信。
之前以为是配置问题,反复检查、查看资料、对比官方文档均无解,关闭其他所有外围、关闭所有外设,甚至割断线路板(被逼无奈,开始怀疑走线可能产生电容)、更换芯片,均无解。
后来单独写了一段测试代码,发现波形正常了,这才回过头去看原来发送/接收的函数,发现函数带有inline关键字,去掉以后立马也正常了。。。
之前工程项目使用的模拟IO实现的数据读取,所以加上了inline关键字加快执行速度,但是感觉速度仍不理想于是改用FSMC,调试过程中完全忽视了inline关键字所带来的影响。
虽然不太清楚inline的特殊编译对于FSMC究竟是怎样产生影响的,但是这个坑希望以后别有人像我一样踩了。。。