月霜寒 发表于 2017-11-10 15:46:56

stm32pwm如何精确控制频率?

现在需要做一个可以控制pwm频率的程序,要求是频率从1Khz开始每隔10ms频率增加1hz,一直增加到500Khz,如何才能实现呢?

toofree 发表于 2018-3-8 01:43:21

本帖最后由 toofree 于 2018-3-8 01:44 编辑

要非常准确的步进频率,用PWM实现不了。

给你提供个FPGA实现任意频率的方法。
假设你的基础时钟为10Hz,那么才能实现3Hz的频率呢?可以把10Hz一个周期的10个时钟,分为3、3、4;那么第一个周期是3个时钟,第二个周期3个时钟,第三个周期4个时钟。这样的话,在1秒之内,整体就可以输出3Hz的频率了。

用STM32也可以用类似的方法来做,但是由于STM32的是流水式的,即便用中断,也不一定每次时间都能非常准确。
DMA也许能行,没这么试过。

页: [1]
查看完整版本: stm32pwm如何精确控制频率?