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

[复制链接]
1195|6
 楼主| 小猫爱吃鱼 发表于 2015-12-25 20:13 | 显示全部楼层 |阅读模式
这次的程序实现了一个经由串口输入一个字符来控制 FRDM-K64F 板底 LED 闪烁 RGB 颜色的功能,程序的功能并不复杂,主要的目的是要熟悉几个 MBED 函数的使用。

MBED 中串口在宣告之后波特率的默认设置是 9600,在这次的程序当中我们将串口波特率设置为 115200。
  1. pc.baud(115200);
先前使用的 wait() 函数是一个简单方便的延时函数,但是呼叫后会让程序在这里停留而没有办法处理其他的工作,这一次我们使用了 Timer 定时器处理 LED 状态翻转所需要的延时功能。程序一开始定义了一个 tmr 定时器:
  1. Timer tmr;


 楼主| 小猫爱吃鱼 发表于 2015-12-25 20:13 | 显示全部楼层
在呼叫 start() 函数之后启动定时器开始计时:
  1. tmr.start();
程序中使用 read_ms() 函数读取目前的定时器计数值,函数会返回以 1ms 为单位的计数值,当程序判断计数值大于等于 500ms 时将 LED 状态翻转,最后呼叫 reset() 函数将计数值清零重新计数。
 楼主| 小猫爱吃鱼 发表于 2015-12-25 20:14 | 显示全部楼层
  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. }
 楼主| 小猫爱吃鱼 发表于 2015-12-25 20:15 | 显示全部楼层
对于串口输入的读取我们在回圈中使用 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. }
 楼主| 小猫爱吃鱼 发表于 2015-12-25 20:15 | 显示全部楼层
程序中会依输入字符的不同再经由串口打印出相应的讯息,不过这里我们不使用 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. }
 楼主| 小猫爱吃鱼 发表于 2015-12-25 20:16 | 显示全部楼层
运行结果:







 楼主| 小猫爱吃鱼 发表于 2015-12-25 20:17 | 显示全部楼层
主程序:

main.rar

617 Bytes, 下载次数: 0

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

本版积分规则

33

主题

294

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部