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

2017-6-15 11:29 1507 3 3 分类: 处理器与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条评论)

登录后参与讨论
相关推荐阅读
southcreek 2020-06-14 08:35
2020-06-14
需要有大量的按键的地方,可以使用行列式键盘。为简化设置,可以把行线与列线直接连到MCU口线上。当然也可以使用专门的芯片。行列式键盘可以用较少的口线完成很多按键的识别。常规的驱动方式是:将行设置成输出,...
southcreek 2020-05-29 16:01
使用查询状态方式的LORA应用编程
厂家提供的例程,OnMaster OnSlave 结构完全一样。 void OnMaster( void ) {     uint8_t i; &nb...
southcreek 2020-05-10 15:09
DMA输入捕获红外线解码
DMA 方式,TIM输入捕获,红外线解码 当前系统时钟为48MHz 将预分频到0.1mS 也就是除4800。 DMA 打开,设置为存储器增加。模式可以用线性模式,更加方便。 定义一个...
southcreek 2019-12-18 09:31
STM32DAC 输出控制
输出可以选择输出缓冲或不缓冲。  sConfig.DAC_Trigger = DAC_TRIGGER_NONE;  sConfig.DAC_OutputBuff...
southcreek 2018-07-06 16:54
输液泵注射泵喇叭图的理解和生成
以下是9706.27上的定义:流速 r 由操作者选择的输液速度流量 flow 单位时间内测得的输出容量丸剂 bolus 作为一次注人但不属于灌注程序的一部分,在短时间内传输的液体的离散量。取样间隔 5...
广告
EE直播间
更多
我要评论
0
3
广告
关闭 热点推荐上一条 /5 下一条