广告

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

2017-6-15 11:29 1092 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 2018-07-06 16:54
输液泵注射泵喇叭图的理解和生成
以下是9706.27上的定义:流速 r 由操作者选择的输液速度流量 flow 单位时间内测得的输出容量丸剂 bolus 作为一次注人但不属于灌注程序的一部分,在短时间内传输的液体的离散量。取样间隔 5...
southcreek 2017-04-26 07:55
stm32 HAL usb cdc 发送和接收
使用stm32cubemx 可以快速生成工程。对于connective 系列带USB接口的单片机,可以将其配置成USB device CDC设备。这样在WINDOWS系统中,连接USB,板子被识别成一...
southcreek 2016-03-07 08:17
使用STM32中的FLASH存储数据
    1、在ST 的网站上下载 AN2594 及例程。   2、在例程中src目录中找到eeprom.c 及inc目录中找到eeprom.h拷贝到自己的工程目录中。3.、在工程中...
southcreek 2015-08-21 12:40
ucgui 字体放大显示
字体文件非常占空间,尤其是要用特别大的字体时,占用空间以平方倍增加。有没有可能用小的字体文件,完成放大显示呢? 答案是可以。   以 F24_ASCII.c为例子。这是一个24*24点...
southcreek 2014-10-09 11:31
stm8 连不上
No answer from the SWIM: check chip错误_ while setting configuration with MCU name STM8S003: gdi-e...
我要评论
0
3
广告
关闭 热点推荐上一条 /1 下一条