TA的每日心情 | 开心 2018-1-11 10:30 |
---|
签到天数: 5 天 连续签到: 1 天 [LV.2]偶尔看看I
|
Mbed现在的版本是支持多线程的,那么线程是什么概念呢?又怎么去使用Mbed多线程编程呢?
线程(Thread)的概念可以理解为:相互之间相对独立,并行运行的程序。 如果所有的线程优先级相同,则它们有同等的运行机会。如果优先级不同,则优先级高的线程得到运 行,其他线程等待当前最高优先级的线程进入等待或者非激活状态。
使用Mbed多线程编程很简单,MBed在线编译器上有多线程编程的例程,可以根据例程修改成自己的程序,当然也可以自己创建一个全新的项目,但是需要导入一些库,比较麻烦。
我修改后的程序功能是,一个线程从键盘等待读取字符并从串口打印出来,另一个线程LED蓝灯每隔0.5s闪烁。代码如下:
#include "mbed.h"#include "rtos.h"DigitalOut led1(LED1);void scanf_thread(void) { char ch; while (true) { printf("lease input character: "); scanf("%c", &ch); printf("\nThe character is: %c.\n", ch); }} int main() { Thread thread(scanf_thread); while (true) { led1 = !led1; wait(0.5); }} 程序代码很简单,#include "rtos.h"包含了Mbed操作系统线程的头文件。
Thread thread(scanf_thread)语句创建一个名为thread的线程,而实现scanf_thread函数的功能。
它和主函数之间是并行的,在scanf_thread函数执行的同时,主函数也在执行,Mbed会帮你调用板子上CPU的资源帮你完成并行操作。
对于无参数的函数和有参数的函数,创建线程时不一样的,需要分别使用thread.start(func)和 thread.start(callback(func, argument))。mbed官网上Thread相关函数的介绍:
编译后程序的运行结果:
172520121217c0360cf3230.mp4 |
|