查看: 1768|回复: 0

【NuMaker-PFM-M453试用体验】使用Mbed多线程编程

[复制链接]
  • TA的每日心情
    开心
    2018-1-11 10:30
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-12-14 14:33:46 | 显示全部楼层 |阅读模式
    分享到:
    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(&quotlease 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
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 14:41 , Processed in 0.117135 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.