博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mbed学习之 PWMOUT
阅读量:4922 次
发布时间:2019-06-11

本文共 2260 字,大约阅读时间需要 7 分钟。

PWM通过一个周期内不同占空比来表征模拟量,应用非常广泛。mbed中提供了一个PWM类,来对PWM进行操作,可以分别设置占空比,周期,以及脉冲宽度。        因为这里是使用单片机内部TIM来生成PWM波的,所以并不是所有的IO都支持PWM输出,具体哪些Pin脚支持,需要自己查datasheet,首先第一步,先创建 PWM对象:
PwmOut    mypwm(PB_0);            // PB0 pin输出PWM波

 

接下来可以设置PWM的占空比        mypwm.write(0.1);                        // 0-->1之间,表示从0%-100%的占空比。        这个时候就已经会有波形输出了,默认PWM波的频率50Hz,周期20ms        另外,我们还可以通过下面三个函数设置PWM的周期,设置单位分别为s,ms,us。最大值受限于硬件平台,在stm32上最大是65536us,即0.065536s        period()        period_ms()        period_us()        通过下面三个函数可以设置PWM波的脉冲宽度,设置单位同样为s,ms,us。同样受限于硬件平台,stm32上最大为65535        pulsewidth()        pulsewidth_ms()        pulsewidth_us()        想知道当前输出占空比,可以通过read()来读取。        同样的,mbed都提供了操作符重载,我们可以通过 mypwm = 0.2 来代替write。 也可以通过类似 i = mypwm 。来获取当前pwm值        频率固定,占空比可调         PwmOut    mypwm(PB_0);            // PB0 pin输出PWM波                 mypwm.period_us(10);                 //设定频率         mypwm = 0.1                                //占空比脉宽1us,频率100khz,占空比10%脉宽3us,频率100khz,占空比30%         脉宽固定,占空比,频率改变         PwmOut    mypwm(PB_0);            // PB0 pin输出PWM波                 mypwm.pulsewidth_us()(10);       //设定脉冲宽度         mypwm.period_us(100);                //设定频率,占空比 = 10/100脉宽10us,周期100us,频率10khz,占空比 10%脉宽10us,周期50us,频率20khz,占空比 20%

    PWM通过一个周期内不同占空比来表征模拟量,应用非常广泛。mbed中提供了一个PWM类,来对PWM进行操作,可以分别设置占空比,周期,以及脉冲宽度。

   因为这里是使用单片机内部TIM来生成PWM波的,所以并不是所有的IO都支持PWM输出,具体哪些Pin脚支持,需要自己查datasheet,首先第一步,先创建 PWM对象:

    PwmOut    mypwm(PB_0);     // PB0 pin输出PWM波

    接下来可以设置PWM的占空比

    mypwm.write(0.1);     // 0-->1之间,表示从0%-100%的占空比。

    这个时候就已经会有波形输出了,默认PWM波的频率50Hz,周期20ms

    另外,我们还可以通过下面三个函数设置PWM的周期,设置单位分别为s,ms,us。最大值受限于硬件平台,在stm32上最大是65536us,即0.065536s

period()

period_ms()

period_us()

        通过下面三个函数可以设置PWM波的脉冲宽度,设置单位同样为s,ms,us。同样受限于硬件平台,stm32上最大为65535

pulsewidth()

pulsewidth_ms()

pulsewidth_us()

    想知道当前输出占空比,可以通过read()来读取。

    同样的,mbed都提供了操作符重载,我们可以通过 mypwm = 0.2 来代替write。 也可以通过类似 i = mypwm 。来获取当前pwm值

    频率固定,占空比可调

PwmOut    mypwm(PB_0);     // PB0 pin输出PWM波mypwm.period_us(10);      //设定频率mypwm = 0.1     //占空比

 

脉宽1us,频率100khz,占空比10%

脉宽3us,频率100khz,占空比30%

脉宽固定,占空比,频率改变

PwmOut    mypwm(PB_0);     // PB0 pin输出PWM波mypwm.pulsewidth_us()(10);  //设定脉冲宽度mypwm.period_us(100);     //设定频率,占空比 = 10/100

 

脉宽10us,周期100us,频率10khz,占空比 10%

脉宽10us,周期50us,频率20khz,占空比 20%

转载于:https://www.cnblogs.com/cat-li/p/5079830.html

你可能感兴趣的文章
[Xcode 实际操作]六、媒体与动画-(14)使用SystemSoundId播放简短声音
查看>>
Letter Combinations of a Phone Number
查看>>
对象序列化
查看>>
UVA 208 Firetruck (DFS+剪枝)
查看>>
windows设置电脑的固定IP
查看>>
Python
查看>>
犀牛Phinoceros 如何切换中文语言
查看>>
Win7如何解决精简版的迅雷7无法运行
查看>>
C#.NET常见问题(FAQ)-如何判断某个字符是否为汉字
查看>>
数据的类型以及内置方法
查看>>
继承之super关键字的使用
查看>>
XML - 报表数据的新大陆
查看>>
echart在X轴下方添加字
查看>>
Map集合的两种取出方式
查看>>
GridView,Repeater增加自动序号列
查看>>
SMO算法精解
查看>>
第k小元素学习记录
查看>>
avi文件格式详解【转】
查看>>
django
查看>>
Java学习从入门到精通
查看>>