微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[异常]关于IDE的优化等级

本周进行STM32 DSP库的实验,主要测时fft相关函数是否能正常使用。在测试过程中发现一个异常现象

MCU:STM32F407(正点原子:探索者开发板); 异常模块:TIM8、DMA2Stream0,ADC1;

现象:TIM8定时时间改变;

使用TIM8计满溢出事件来触发ADC,在ADC转换完毕后使用DMA搬运,采样频率为12800,即定时器定时时间。

由于STM32F4主频配置为168MHz,TIM2等通用定时器时钟来源PCLK1为总线时钟为42MHz,所以TIM2时钟频率为84MHz 84M/12800 = 6562.5非整数,所以选用TIM8,其时钟为168MHz可以配成整数(168M/12800=13125),预分频系数75、自动重载值175,在单独测试TIM8时无异常,频率为设计频率12800Hz;加上ADC也无异常,但是加上DMA后就出现问题,TIM参数为改变情况下频率变为设计频率的1/4即3200Hz,最后定位到使能DMA无异常,但打开DMA中断后就会出现降频,该情况下读取各总线值(SYSCLK、HCLK、HCLK1、HCLK2)均无异常,但是就是降频了。

分析配置参数均未改变,无意间更改优化等级从(-o0)改为(-o2),其余代码均为改变,TIM定时频率恢复正常。

由于不太了解编译过程,所以暂时无法分析不同优化等级下,在二进制代码处到底有何不同,先存个档。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐