这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » L053 mbed开发浅试1 PWM

共1条 1/1 1 跳转至

L053 mbed开发浅试1 PWM

菜鸟
2016-01-07 15:26:01     打赏


刚从学校出来工作,算是有一个月了,这个转型期也是蛮煎熬的,L053的板子也一直带着,放在公司办工桌子留,怀念我的学生时代啊。现在手头项目是医疗方面的,用的都是一些低压低功耗,低成本的片子。比如说中颖的,还有attiny系列 还不错。毕竟L053成本实在太高了。

参考了eepwnet的帖子后,对L053的编程顿时有了浓厚的兴趣,这种U盘烧录的方式以前在飞思卡尔K26上用过,不能在线调试和仿真, 但是对于入门便捷性不言而喻。

登入网站,注册新账号, 大致浏览网站的基本内容和结构。然后开始按照自己的计划来

为了保证上传正常,图片压缩得比较狠,只留96dpi,见谅!

进入网站后,根据箭头,分别注册 选自己的板子 or打开自己的编程界面,search里面是各种例子,可以作为库函数一样添加到你的工程里或是在其工程上直接改动

因为我最近对PWM的使用比较多,所以第一反应是SEARCH KEY WOEDS “PWM”

加红框的是推荐的例子

选一个

导入到自己的编程界面,接着弹出让你命名的界面

看一下一个工程的结构,一个cpp,再加一个mbed,里面打包配置好了各种凌乱的基础代码,以至于只好显示too  many DOC

下面看代码 ,已手动添加中文注释

#include "mbed.h"

#include

#include

#include

PwmOut pwmA(PB_3); //  D3/PWM

PwmOut pwmB(PB_4); //  D5/PWM

int main() {

char str[50];

while(1)

{

printf("Enter a Voltage (-3.3 to 3.3 V) : \n");

gets(str); //键盘输入电压值 -3.3~+3.3

float voltage = atof(str); //转换成float格式

printf("You entered: %s\n Output Voltage = %f \n", str, voltage);//串口显示你的输入

if (voltage > 0.0){

pwmB.write(0);

float duty = voltage/3.3;     //占空比

printf("Duty Cycle: %f \n", duty);

pwmA.period(0.0001);

pwmA.write(duty);

}

else if (voltage < 0.0){

pwmA.write(0);

float duty = -(voltage)/3.3;     //占空比

printf("Duty Cycle: %f \n", duty);

pwmB.period(0.0001);

pwmB.write(duty);

}

else if (voltage == 0.0){

pwmA.write(0);

pwmB.write(0);

pwmA.period(0.0001);

pwmB.period(0.0001);

float duty = 0;

printf("Duty Cycle: %f \n", duty);

}

else if (voltage > 3.3 | voltage < -3.3){

printf("Invalid Voltage input \n");    //无效数据

}

}

}

编译一下,下载bin格式文件到桌面,拖进盘里。经验最好别直接下到盘里.

打开串口工具观察: 波特率等如下

示波器看波形:

占空比30%左右,100us的周期,

项目的一部分是打算控制电机的。 但暂时手头不方便找MOSH桥,所以只有用LED来代替一下

#include "mbed.h"

#include

#include

#include

PwmOut pwmA(PB_3); //  D3/PWM

short int flag=1;

int main()

{

float duty = 0.001;

pwmA.period(0.001);

pwmA.write(duty);

while(1)

{

while(flag)

{

pwmA.write(duty+=0.001);

wait(0.01);

if(duty>1)

flag=0;

}

while(flag==0)

{

pwmA.write(duty-=0.001);

wait(0.01);

if(duty<0)

flag= 1;

}

}

}




关键词: mbed;L053;pwm    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]