打印
[资料分享与下载]

【YL-KL26Z试用】+ MBED下的记事本调试

[复制链接]
976|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Tennasi|  楼主 | 2015-10-24 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首选感谢小七和社区,收到这块板子,研究了几天。和大家分享一下。这块板子和KL25Z差不多,所以可以在mbed下选择KL25Z模块使用了。

今天我们要使用这块板子,在mbed下使用RTOS做一个呼吸灯和使用ADC输入来控制一人LED灯的亮度,最后把ADC的输入值在 “串口”中打印出来,由于串口的一些特殊性,所以这里我换了windows记事本,没错就是在windows自带的记事本中输出调试信息。
电路:

实现思路:
RTOS下两个线程,利用PWM控制LED0,LED1,主函数里采集ADC的值。
实现代码:
话不多说,代码做了详细的注释,大家看吧。
#include "mbed.h"
#include "rtos.h"
#include "USBKeyboard.h"

//led线程信号
#define LEDSIGNAL   0x55

AnalogIn sw(PTE20);
PwmOut   led0(PTB18);
PwmOut   led1(PTB19);
USBKeyboard key;

int swValue,swOldValue;

//led0工作线程,呼吸灯效果
void led0Work(void const *argumnt)
{
    int i;
    while(true)
    {
        for(i=0;i<=1000;i+=10)
        {
            //设置PWM脉宽
            led0.pulsewidth_us(i);
            //等待2ms
            Thread::wait(2);
        }
        Thread::wait(500);
        for(i=1000;i>0;i-=10)
        {
            led0.pulsewidth_us(i);
            Thread::wait(2);
        }
    }
}
//led1工作线程
void led1Work(void const* argumnt)
{
    while(true)
    {
        //等待信号触发
        Thread::signal_wait(LEDSIGNAL);
        int orgVal = *(int*)argumnt;
        int pVal = orgVal / 65500.0 * 1000;;
        //退格输出
        key.printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
        key.printf("Led Value:%5d",orgVal);
        //设置新的脉宽
        led1.pulsewidth_us(pVal);
        swOldValue = orgVal;
    }
}


int main()
{
    //设置PWM周期
    led0.period_us(1000);
    led1.period_us(1000);
   
    Thread t1(led0Work);
    Thread t2(led1Work,&swValue);
   
    while(1)
    {
        swValue = sw.read_u16();
        //消除抖动
        if(abs(swOldValue - swValue)>65)
            t2.signal_set(LEDSIGNAL);
        wait(0.01);
    }
}


相关帖子

沙发
cowboy2014| | 2015-10-24 16:41 | 只看该作者
这个呼吸灯用到pwm了吗?

使用特权

评论回复
板凳
芙蓉洞| | 2015-10-24 21:04 | 只看该作者
硬件的呼吸灯和用软件写的呼吸灯哪个好些呢?

使用特权

评论回复
地板
Luis德华| | 2015-10-25 09:41 | 只看该作者
记事本调试是啥意思呢,不是太懂

使用特权

评论回复
5
跟屁虫| | 2015-10-25 21:04 | 只看该作者
PWM可以控制电流的大小吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

169

帖子

1

粉丝