我用3.1.2的lib写了以SysTick来产生准确Delay的程式还有再LCD上显示时钟.另外在512K Flash里放了一个48KHz采样220Hz Sine值的阵列用来让DAC产生一个220Hz的波.我把喇叭直接接到DAC的PIN上来确认产生的声音.听到的纯音虽然正确不过不知道为什么每过大概0.9秒就会有一个断音. 把输出接到示波器 发现每隔0.9秒左右就会有个很尖锐的相位改变.看起来就好像是0.9秒后把输出到一半的220Hz波的直接重新开始一样. 感觉就像输出到第28000个阵列元素时突然就从第1个阵列元素一样.把LCD给关掉后情况还是没改变.后来发现其他的东西都不需要动只要把SysTick启动的部份给注解掉后就正常了.但是SysTick和输出波都是必须的.SysTick是用来负责计时到1ms的准度而已.
不知道有没有高手能指点一下如何把这个尖锐的相位改变在不移除中断的情况下消除? |