查看: 2897|回复: 7

[分享] 我的 YL-KL26Z-V2 - 第三弹 - PPT 翻页器

[复制链接]

该用户从未签到

17

主题

66

帖子

0

中级会员

Rank: 3Rank: 3

积分
280
最后登录
2016-7-30
发表于 2015-12-1 23:27:22 | 显示全部楼层 |阅读模式
上一弹聊到 RTOS,玩了下RTOS 以及按键和LED的显示,这把咱们玩玩 USB device。 看看用mBed开发一个USB 设备有多简单。
还是用上一把的RTOS 框架,基于RTOS的已有代码来修改。这把要玩USB了,得先把库加进来。
点Import 按钮,选择Libraries,在右边输入 USB  然后点 Search按钮,第一个就是USB Device,Author 里面写着 mBed official。是mBed官方的库。就他了,点中以后按 Import 按钮。USB Device库就加到工程里了。
Screen Shot 2015-12-01 at 11.01.44 PM.png

在RTOS的工程里面咱们添加了SW3 按键,不够使,要弄翻页必须能上下翻啊,必须两个,嫌两个不够的同学,得自己改硬件了,板子上就两个按键可用,刚好够上下翻页的。  这次咱再来定义一个 SW4按键,SW4 接到的是PTA4,因此这样写
InterruptIn sw4(PTA4);

照葫芦画瓢, 把SW4 按键的处理和定义加进来
void sw4_press(void)
{
    button_pressed = 2;
    ledthread->signal_set(0x1);
}


在主任务中加入 注册SW4 按下的事件处理调用
sw4.fall(&sw4_press);

基本功能架子就出来了。这就差不多了。

下面来把USB功能加进来
在文件头部加入
#include "USBKeyboard.h"

USBKeyboard kbd;


然后在按键处理部分加入
        if( button_pressed == 1 )
        {//SW3
            kbd.keyCode(147,0);  //发送Page Down
            Thread::wait(80);
            button_pressed = 0;
        }
        else if( button_pressed == 2 )
        {//SW4
            kbd.keyCode(146,0); //发送 Page Up
            Thread::wait(80);
            button_pressed = 0;
        }


基本这就OK了,点击mbed的 Compile,把下载得到的bin文件甩到 mbed盘中,
又见到YL-KL26Z-V2板子的红灯一阵乱闪,然后就。。。OK了

把接在OpenSDA这边的USB拔下来,接到另外一头的 USB上,按下SW3 和 SW4 。
看看是不是可以翻页啦?

简单不?下次出去讲PPT,掏出Freescale 的 32位 ARM M0+ 开发板,接在电脑上,让YL-KL26Z-V2设计的各种灯狂闪。喇叭狂叫,而当会场全都安静下,搞不懂你要玩什么的时候你淡定的按下YL-KL26Z-V2的按键,说:来,咱们开始讲PPT。 是不是很NB的感觉?

附上代码,仓促测试通过,程序结构没设计,按键防抖等功能,也都没加进来,有不同意见勿喷。

做好的工程是这样
Screen Shot 2015-12-01 at 11.23.36 PM.png

main.c 的源代码如下
#include "mbed.h"
#include "rtos.h"
#include "USBKeyboard.h"

USBKeyboard kbd;

DigitalOut led1(LED1);
DigitalOut led2(LED2);

InterruptIn sw3(PTD6);
InterruptIn sw4(PTA4);

uint32_t button_pressed;
Thread *ledthread;

void sw3_press(void)
{
    button_pressed = 1;
    ledthread->signal_set(0x1);
}

void sw4_press(void)
{
    button_pressed = 2;
    ledthread->signal_set(0x1);
}

void led_thread(void const *argument)
{
    while (true)
    {
        osEvent evt = Thread::signal_wait(0x1);
        if( button_pressed == 1 )
        {
            led1 = 0;
            Thread::wait(100);
            led1 = 1;
        }
        else if( button_pressed == 2 )
        {
            led2 = 0;
            Thread::wait(100);
            led2 = 1;
        }        
    }
}

int main()
{
    led1 = 1;
    led2 = 1;

    ledthread = new Thread(led_thread, NULL, osPriorityAboveNormal);

    button_pressed = 0;
    sw3.fall(&sw3_press);
    sw4.fall(&sw4_press);

    while (true)
    {
        if( button_pressed == 1 )
        {//SW3
            kbd.keyCode(147,0);
            Thread::wait(80);
            button_pressed = 0;
        }
        else if( button_pressed == 2 )
        {//SW4
            kbd.keyCode(146,0);
            Thread::wait(80);
            button_pressed = 0;
        }   
        else
            Thread::wait(100);
    }
}








回复

使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-12-2 08:15:40 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 16:44
  • 签到天数: 2093 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    65

    主题

    8405

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    14202
    最后登录
    2025-7-25
    发表于 2015-12-2 08:17:15 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    555

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    1343
    最后登录
    2018-10-23
    发表于 2015-12-2 08:46:35 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-4 23:20
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    9

    主题

    573

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1785
    最后登录
    2017-3-3
    发表于 2015-12-2 09:14:39 | 显示全部楼层
    谢谢分享.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
    发表于 2015-12-2 09:30:35 | 显示全部楼层
    感谢分享
    104930kli5jsmlssemljli.png
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-4 16:56
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    602

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1842
    最后登录
    2020-8-25
    发表于 2015-12-2 10:24:43 | 显示全部楼层
    请问,mbed有文档吗?怎么使用?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7508
    最后登录
    2021-8-30
    发表于 2015-12-2 11:03:06 | 显示全部楼层
    谢谢分享,建议楼主分享完整工程文件
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-25 09:18 , Processed in 0.098631 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表