mbed

如何在ARM-mbed中同时读写

mbed中的中断缺陷——通过rise或fall触发进入到其他函数后无法跳出该函数,博文末尾会有中断方式

#include "rtos.h"//加的库,直接编译然后在mbed报错中点击"Fix it",添加;或者添加库

Thread thread1;//外部声明,声明thread

void servo1_thread() 
{
    while (true) 
    {      
        Thread::signal_wait(0x001);
        ...      
    }
}

thread1.start(servo1_thread);

thread1.signal_set(0x001);

thread1.terminate( );

//read_thread, 单写一个read线程去读指令以避免读写冲突
void read_thread()
{ 

    d = pc.getc();

}


void servo2_thread() 
{
    thread1.terminate( );
    if(Ein == 1)//触发条件,例如光电门输出高电平
    {
        pc.printf("s");
        wait(0.5);
    }
    thread1.start(read_thread);
}
void test()
{
    led = !led;
    pc.printf("test1");

}

Ein.rise(&test);
pc.printf("test2");
c = pc.getc();

猜你喜欢

转载自www.cnblogs.com/ronnielee/p/10019298.html