使用一个tim产生20KHz的定时中断。将需要输出的速度设定好,每次将设定的速度与上一次的结果取模累加,结果大于等于10000则取反输出。
每个通道使用一个结构体,里面包含
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条评论)
登录后参与讨论