查看: 5715|回复: 9

[原创] 【FRDM-K64F+MBED】串口功能-2

[复制链接]
  • TA的每日心情
    开心
    2021-12-10 16:14
  • 签到天数: 1442 天

    连续签到: 1 天

    [LV.10]以坛为家III

    17

    主题

    3862

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    8291
    最后登录
    2021-12-10
    发表于 2015-7-20 15:43:07 | 显示全部楼层 |阅读模式
    本帖最后由 slotg 于 2015-7-20 15:44 编辑

    这次的程序实现了一个经由串口输入一个字符来控制 FRDM-K64F 板底 LED 闪烁 RGB 颜色的功能,程序的功能并不复杂,主要的目的是要熟悉几个 MBED 函数的使用。

    MBED 中串口在宣告之后波特率的默认设置是 9600,在这次的程序当中我们将串口波特率设置为 115200。

    pc.baud(115200);

    先前使用的 wait() 函数是一个简单方便的延时函数,但是呼叫后会让程序在这里停留而没有办法处理其他的工作,这一次我们使用了 Timer 定时器处理 LED 状态翻转所需要的延时功能。程序一开始定义了一个 tmr 定时器:

    Timer tmr;

    在呼叫 start() 函数之后启动定时器开始计时:

    tmr.start();

    程序中使用 read_ms() 函数读取目前的定时器计数值,函数会返回以 1ms 为单位的计数值,当程序判断计数值大于等于 500ms 时将 LED 状态翻转,最后呼叫 reset() 函数将计数值清零重新计数。

    1. if(tmr.read_ms() >= 500) {
    2.     switch(id) {
    3.         case 0:
    4.             led1 = !led1;
    5.             break;
    6.         case 1:
    7.             led2 = !led2;
    8.             break;
    9.         case 2:
    10.             led3 = !led3;
    11.             break;
    12.     }

    13.     tmr.reset();
    14. }
    复制代码

    对于串口输入的读取我们在回圈中使用 readable() 函数判断串口是否有字符可以读取?有的话呼叫 getc() 函数读取一个字符,然后判断是否为 r R g G b B 字符然后做相应的处理。

    1. if(pc.readable() == 1) {
    2.     led1=led2=led3=OFF;
    3.     switch (pc.getc()) {
    4.         case 'r':
    5.         case 'R':
    6.             led1 = ON;
    7.             id = 0;
    8.             idx = 0;
    9.             break;
    10.         case 'g':
    11.         case 'G':
    12.             led2 = ON;
    13.             id = 1;
    14.             idx = 0;
    15.             break;
    16.         case 'b':
    17.         case 'B':
    18.             led3 = ON;
    19.             id = 2;
    20.             idx = 0;
    21.             break;
    22.     }
    23. }
    复制代码

    程序中会依输入字符的不同再经由串口打印出相应的讯息,不过这里我们不使用 printf() 函数,而是在回圈中使用 writeable() 函数判断串口是否可以写入字符?可以的话呼叫 putc() 函数依 idx 的指向将 msg 数组中的字符串一个一个的依序送出。

    1. if(idx != -1) {
    2.     if(pc.writeable() == 1) {
    3.         ch = msg[id][idx];
    4.         if(ch != 0) {
    5.             pc.putc(ch);
    6.             idx++;
    7.         }
    8.         else {
    9.             idx = -1;
    10.         }
    11.     }
    12. }
    复制代码

    运行结果:

    P01.JPG

    20150720010318s.gif


    主程序:
    main.rar (617 Bytes, 下载次数: 118)

    评分

    参与人数 1NXP金币 +30 收起 理由
    小七 + 30 赞一个!

    查看全部评分

    回复

    使用道具 举报

    该用户从未签到

    29

    主题

    439

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    720
    最后登录
    2015-12-29
    发表于 2015-7-20 18:06:52 | 显示全部楼层
    看着不错啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21

    主题

    435

    帖子

    0

    高级会员

    Rank: 4

    积分
    916
    最后登录
    2020-4-8
    发表于 2015-7-20 19:40:32 | 显示全部楼层
    很强悍啊!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-10 16:14
  • 签到天数: 1442 天

    连续签到: 1 天

    [LV.10]以坛为家III

    17

    主题

    3862

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    8291
    最后登录
    2021-12-10
     楼主| 发表于 2015-7-20 19:52:20 | 显示全部楼层

    感谢关注
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-10 16:14
  • 签到天数: 1442 天

    连续签到: 1 天

    [LV.10]以坛为家III

    17

    主题

    3862

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    8291
    最后登录
    2021-12-10
     楼主| 发表于 2015-7-20 19:52:39 | 显示全部楼层

    感谢关注
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2022-3-3 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    106

    主题

    836

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1527
    最后登录
    2023-6-12
    发表于 2015-7-20 20:49:15 | 显示全部楼层
    下载学习了,!!
    捕获.PNG
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16700
    最后登录
    1970-1-1
    发表于 2015-7-20 21:35:06 | 显示全部楼层
    多谢分享
    回复

    使用道具 举报

    该用户从未签到

    29

    主题

    439

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    720
    最后登录
    2015-12-29
    发表于 2015-7-21 12:52:49 | 显示全部楼层
    闪的亮瞎狗眼
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-7-22 12:47:23 | 显示全部楼层
    不错。。。MBED很强大。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20

    主题

    331

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1207
    最后登录
    2017-2-27
    发表于 2015-10-11 23:16:32 | 显示全部楼层
    不错 ,继续学习啦
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 08:11 , Processed in 0.119740 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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