原创 STM32 输出多路不同频率的脉冲

2017-6-15 11:29 3413 20 20 分类: 处理器与DSP

一个定时器产生多个频率输出


使用一个tim产生20KHz的定时中断。将需要输出的速度设定好,每次将设定的速度与上一次的结果取模累加,结果大于等于10000则取反输出。

每个通道使用一个结构体,里面包含


define PWMCLK 20000


define CLKCMP PWMCLK / 2


Typedef Struct stPwmCh{

Uint16_t pps;

Uint16_t ppscnt; //保存上一次的取模值

Uint8_t lastoutput; //保存上一次的输出值 0 or 1

Uint32_t pulsecnt; //保存需要输出的脉冲数

}

程序中,读取pulsecnt,如果不为0,将ppscnt + pps,结果取模CLKCMP存放在ppscnt,并判断如果结果大于 CLKCMP,判断lastoutput 如果为0 则输出为1 并将pulsecnt - 1。


设置为998hz时:


3hz 时:


文章评论0条评论)

登录后参与讨论
我要评论
0
20
关闭 站长推荐上一条 /2 下一条