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();      //设定频率

mypwm = 0.1     //占空比

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

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

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

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

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

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

mbed学习之 PWMOUT的更多相关文章

  1. mbed学习之Digital IO (一)

    mbed的IO操作非常灵活,常见的关于Digital IO操作整理如下表 ,其中蓝色字体是构造函数,绿色字体的是操作符重载,使用时只要创建对象,就可以调用对应的方法来操作,并且每种都提供了操作符重载, ...

  2. 【FRDM-K64F学习笔记】使用ARM mbed和Keil MDK下载你的第一个程序

    FRDM-K64F开发平台采用MK64FN1M0VLL12微控制器.该控制器包含一个带有浮点单元的ARM Cortex-M4内核.其最高工作频率为120MHz,具有256KB的RAM.1MB闪存以及许 ...

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

    前言 感谢论坛,感谢 LinkSrite,论坛活动申请了一个 LinkNode,体验了一下 mbed. 翻看完官方 wiki,大概了解了一下 mbed 的开发,然后做了 blink 和 pwm 的测试 ...

  4. mbed列--基于飞思卡尔FRDM KL25Z鼠标设计的高速实现

    ========================================================== 原创文章转载请注明:blog.csdn.net/guo8113 ========= ...

  5. 痞子衡嵌入式:史上最强ARM Cortex-M学习资源汇总(持续更新中...)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Cortex-M学习资源. 类别 资源 版本 短评 官方汇总 cortex-m-resources / ARM公司专家Josep ...

  6. 使用mbed进行STM32板子的开发

    keil太难用!keil太难用!keil太难用! keil点亮一个灯都超麻烦,什么鬼东西. mbed可以网络编程,打破了mac和windows的壁垒!写好,编译,然后下下来,在拖到板子里.就直接烧进去 ...

  7. STM32F042开发板学习实践

    之前有粗略地学习过stm32F103的理论知识,但仅GPIO的配置.时钟配置就让人望而却步.现在手头有Nucleo STM32F042的开发板,而且ST已经推出STM32CubeMx图形化的工具软件, ...

  8. GMSSL学习总结1

    接触GMSSL一段时间了,总结一点点想法 证书:DER格式.PEM格式 .DER = DER扩展用于二进制DER编码证书. .PEM = PEM扩展用于不同类型的X.509v3文件,是以“ - BEG ...

  9. Linux C++ 网络编程学习系列(7)——mbedtls编译使用

    mbedtls编译使用 环境: Ubuntu18.04 编译器:gcc或clang 编译选项: 静态编译使用 1. mbedtls源码 下载地址: https://github.com/ARMmbed ...

随机推荐

  1. html5和css3学习笔记

    HTML5针对移动端,移动端的浏览器主要是chrome,是webkit内核; app(applicatin):应用; native app:原生的app sadsadsadad 单标签可以省略结尾标记 ...

  2. CSS清除浮动八种方法

    在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过 ie chrome firefox opera,需要的朋友可以参考下 清除浮动是每一个 web前台设 ...

  3. java 正则表达式

    1.首先是说明一些容易混淆的符号 \w    Matches any word character. \W    Matches any non-word character. 如果是在java中的话 ...

  4. 二、jquery选择器

    在jquery库中,可以通过选择器实现DOM元素快捷选择这一重要的核心功能. 1.选择器的优势 (1)代码更简单 由于在jquery库中,封装了大量可以通过选择器直接调用的方法或函数,使编写代码更加简 ...

  5. wordpress 分类相关

    分类类型,层级 wp中的分类.文章类型(post,page,video,image).标签.自定义分类.自定义标签都是分类形式.有些分类是有层级关系,有些没有.如图: taxonomy分类(categ ...

  6. windows 查看端口占用以及关闭该进程

    win+r -> 输入cmd netstat -ano 找到占用端口进程的pid control+shift+esc 打开 任务管理器 menu->'查看'->'选择列->勾选 ...

  7. Swift 语法篇

    一.输出语句 print("Hello World") print("Hello World 11", "Hello World 22", ...

  8. web网站获取客户端mac地址

    <HTML><HEAD><TITLE>WMI Scripting HTML</TITLE> <META http-equiv=Content-Ty ...

  9. Kafka 解析

    Kafak采用硬盘顺序写入和内存映射文件技术提示性能.即便是顺序写入硬盘,硬盘的访问速度还是不可能追上内存.所以Kafka的数据并不是实时的写入硬盘,它充分利用了现代操作系统分页存储来利用内存提高I/ ...

  10. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...