刚从学校出来工作,算是有一个月了,这个转型期也是蛮煎熬的,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的周期,,
项目的一部分是打算控制电机的。 但暂时手头不方便找MOS焊H桥,所以只有用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;
}
}
}