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. Go语言练习:go语言与C语言的交互——cgo

    1.代码 package main import "fmt" /* #include <stdlib.h> #include <stdio.h> void ...

  2. jsp页面取得一对多中的set集合的size

    jsp中使用${list.size }会编译成list.getSize()方法,并不能获取list的长度,因为程序回去找List对象中的getSize()方法,所以只能想别的办法, 一种方法是在后台程 ...

  3. cxf webservice简单应用

    Server端 server部署到一个端口号为80的tomcat中 CXFController.java package com.lwj.controller; import java.io.IOEx ...

  4. quicksort

    快排.... void quicksort(int *a,int left,int right){ if(left >= right){ return ; } int i = left; int ...

  5. Full exploitation of a cluster hardware configuration requires some enhancements to a single-system operating system.

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Operating System Desi ...

  6. ElasticSearch返回不同的type的序列化

    总体思路是: 利用json序列化的别名方法,反序列化到不同的字段上: 因为别名方法不支持多个别名,所以不得不根据不同的type,定义了多套适配内容. 最终在属性上进行选择. 本示例ElasticSea ...

  7. java中字节流与字符流的区别

    字节流 在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,它们都是抽象类,不能实例化,数据流中的最小单位是字节,所以叫做字 ...

  8. [原创]解决net-speeder与pptp不兼容的问题

    解决net-speeder与pptp不兼容的问题 终于受不了很多玩意儿都被墙了,每次FQ费半天劲,浪费时间,于是在搬瓦工搞了个VPS,年付19美元,挺便宜的,赶紧的VPN搭起,优化走起. VPN搭建很 ...

  9. 用Merge来改写相关更新的例子

    下面的两个SQL是等价的,但是一个执行N小时都执行不完,一个花了一分钟. 执行计划显示第一个语句是由外面的即将被更新的表驱动内层,相对于是一个NEST LOOP,cost非常大.第二个语句是内层单独执 ...

  10. Python之路【第十九章】:Django进阶

    Django路由规则 1.基于正则的URL 在templates目录下创建index.html.detail.html文件 <!DOCTYPE html> <html lang=&q ...