mbed学习之 PWMOUT

        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%

时间: 2024-10-13 09:00:29

mbed学习之 PWMOUT的相关文章

使用mbed进行STM32板子的开发

keil太难用!keil太难用!keil太难用! keil点亮一个灯都超麻烦,什么鬼东西. mbed可以网络编程,打破了mac和windows的壁垒!写好,编译,然后下下来,在拖到板子里.就直接烧进去了! mbed有自己封装好的库,"mbed.h",可以使用C++来写代码,重载好爽啊!!!!! 总之,ARM的开发可以和Arduino一样简单!!!! 看一下由三个LED组成的流水灯的代码: #include "mbed.h" //声明输出口 //D8什么的选好板子后已

mbed 初试(LinkNode 板卡)(2016-04-21)

前言 感谢论坛,感谢 LinkSrite,论坛活动申请了一个 LinkNode,体验了一下 mbed. 翻看完官方 wiki,大概了解了一下 mbed 的开发,然后做了 blink 和 pwm 的测试,发现 mbed 和熟悉的 arduino 极像,并且功能更强大的样子,在线 IDE 用起来倒是方便,库的引用也是随用随引,就是网络对操作响应速度上有一些影响,体验上会略差一点,真要经常用的时候,还是比较倾向于本地的 IDE 更顺手. 测试 那么闲话不多说,试一下官方 wiki 上的 blink 吧

mbed系列--基于飞思卡尔FRDM KL25Z的鼠标设计快速实现

========================================================== 原创文章转载请注明:blog.csdn.net/guo8113 ========================================================================== 说明: 今天接着上次的mbed工程又玩弄了一番,实现了基于mbed RTOS以及三轴重力传感器的鼠标,当然了,由于FRDM25Z上没有按键,仅仅实现了鼠标的移动. 在这

mbed平台的I/O

无非是digital IO与analog IO Digital IO DigitalOut - Configure and control a digital output pin. DigitalIn - Configure and control a digital input pin. DigitalInOut - Bi-directional digital pins mbed网站上每个板子的页面都会有硬件图,告诉你pin的名字.其中蓝色的label都可以用作digital IO. Di

STM32F042开发板学习实践

之前有粗略地学习过stm32F103的理论知识,但仅GPIO的配置.时钟配置就让人望而却步.现在手头有Nucleo STM32F042的开发板,而且ST已经推出STM32CubeMx图形化的工具软件,便于图形化配置硬件自动生成初始化代码,无论于熟手还是初学者都是个福音,因此可趁着便利条件逐步学习STM系列单片机的编程以及记录下学习的实践过程. 以下是基于keil点亮LED的实践,其实开发板到手时,芯片已经有烧写程序,装好驱动,接上USB线LED灯就能闪亮了,另外还可以通过云端mbed开发程序,这

单片机学习之PWM原理与控制程序

PWM 在单片机中的应用是非常广泛的,它的基本原理很简单,但往往应用于不同场合上意义也不完全一样,这里我先把基本概念和基本原理给大家介绍一下,后边遇到用的时候起码知道是个什么东西. PWM 是 Pulse Width Modulation 的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果.这是个什么概念呢?我们一步步来介绍. 首先从它的名字来看,脉冲宽度调制,就是改变脉冲宽度来实现不同的效果.我

ST Nucleo mbed套件开发 一 MBED环境使用 以Nucleo-F401为例

全球领先的半导体供应商.全球领先的ARM? Cortex?-M微控制器厂商意法半导体(STMicroelectronics,简称ST)进一步强化STM32系列微控制器的易用性和设计灵活性, 推出适用于STM32全系产品的经济型且易于扩展的原型开发板.STM32 Nucleo将易用性.灵活性.连接功能和主流工具资源兼容性完美地融合在一起,是当今的嵌入式开发人员的理想的开发平台. ST陆续已经推出了十二款Nucleo mbed套件,具体如下图 Nulceo系类的开发板套件是ST公司今年新出的学习套件

ROS + STM32 + mbed

目前的进度是, 首先, 用mbed, 在stm32 f103RB nucleo板子上, 跑一个简单的publisher, 然后用usb连接到PC上的ROS. mbed的main.cpp: /* * rosserial Publisher Example * Prints "hello world!" */ /* * left_forward PC_0 * left_backward PC_3 * right_forward PC_2 * right_backward PC_1 * le

新手上手STM32是学习库开发还是寄存器开发?

有需要资料的可以加我:腾讯QQ3249838614经常会有一些刚接触STM32的人问这个问题,也在其他论坛回答过, 我个人认为,在回答这个问题之前,你得先问清楚自己,我学习stm32.或者再往更深的地方走,我学习单片机,究竟是为了什么?你现在是处于什么状态?你是学生还是已经参加工作了?你的专业或者你的工作是与单片机相关的还是不相关的?你未来是否想从事这个行业或者想跳槽到这个行业? 这些所有的问题的答案都可以把学习单片机的人分为两大类:第一类:学习单片机是为了把这个技术当做一技之长安身立命:第二类