mbed学习之 PWMOUT 作者:好心情_梦想 本人尽力从网上搜集汇总各个关于mbed的教学帖子,作者如有异议请联系本人删除 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% MBED代码 /* PWM控制呼吸灯 平台 Nucleo f070 + mbed LED pin 为D11 */ # include "mbed.h" PwmOut ledPWM(D11); int main () { //mbed中提供了一个PWM类,来对PWM进行操作,可以分别设置占空比,周期period,以及脉冲宽度。 ledPWM.period(0.01f); // 初始化 ledPWM=0.0f;// while(1) { for(float val=0.1f;val<1.0f;val+=0.05f ) { ledPWM=val; wait(0.05f);//wait XX s } for(float val=1.0f;val>0.10f;val-=0.05f ) { ledPWM=val; wait(0.05f);//wait XX s } } } 转自:http://www.cnblogs.com/cat-li/p/5079830.html |
先占保留位置 |
谢谢分享 |
不错的教程 |
谢楼主分享 |
谢谢分享,正在学习 |
学习ing |
Nice! |