main()的优先级我使用3 PWM + USB(3个不同的TIM)产生3个80kHz的方波,当他们开始工作不久的说50KHz新发现,不执行主循环(我闪烁1秒)。 USB的优先级为0,而PWM有1(可更改)。这是因为目标波频率是通过USB给出的。NVIC_Priority和STM32
在PWM回调,因为海浪可以加速或减速,我打电话给其精心设计的在该值的下一个CCR/ARR应以有一个平稳的加速计功能。
我的理解是,所需的计算能力已经开始增长,而中断了很多,可用插槽填充。
我能做的是通过使用更改为true的PWM回调函数内,设置为false一旦主叫funcion一个简单的布尔变量来调用该函数上面主要循环。
恐怕,这种做法可能会导致一个不那么完美的70/100kHz的方波例如(也许63khz或于95kHz由于需要在main()计算时间)。
那么,有没有办法给主排序优先呢? 主要是基本检查5ms/10ms/50ms/1s是否已经通过例如。
哪些是您使用STM32?你为什么用中断来做PWM?你为什么不让定时器模块为你工作?您可以使用DMA更改一些寄存器值。我用这种方法用Timer1创建了正弦波。我怀疑我一定会错过一些东西,但是在软件中创建10万方波似乎对我来说很疯狂。 :) – DiBosco
我需要使用中断,因为我需要计算每个方波脉冲。 此外我需要中断,因为如果我有一个100khz的目标波应该做10-20-30-40-50-60-70-80-90-100Khz与线性可校准的“加速度”。这意味着我需要改变CCR和ARR dinarenically – Luigi
我不知道你的意思是“计数”每个方波。你是否真的告诉我,你在每个定时器中断的软件中切换引脚?另外,您究竟多久更换一次频率?我想我仍然错过了一些东西。 – DiBosco