[异常]关于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定时频率恢复正常。

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

猜你喜欢

转载自www.cnblogs.com/Biiigwang/p/11923942.html