Serial pc(USBTX, USBRX); // tx, rx
if ( pc.readable() ) {
ch =pc.getc();
}
void echouart()
{
pc.putc(pc.getc());
}
//设置接收回调
pc.attach(&echouart,SerialBase::RxIrq);
mbed设置中断都是通过 attach 用库方便多了。。。MBED看不到底层,要实现一些特殊功能,可能还需要自己用库去封装MBED驱动。。。 本帖最后由 foxmail-364565 于 2015-7-31 13:55 编辑
党国特派员 发表于 2015-7-31 09:43
void echouart()
{
pc.putc(pc.getc());
}
//设置接收回调
pc.attach(&echouart,SerialBase::RxIrq);
嗯,以前用8位的单片机时就是这样做的. JackieLaura 发表于 2015-7-31 10:14
用库方便多了。。。MBED看不到底层,要实现一些特殊功能,可能还需要自己用库去封装MBED驱动。。。 ...
是,这可能是最后的办法了 mbed 思想很好。
unsigned char Cnt = 0;
unsigned char UART_RXD;
Timeout UARTtimeout;
void UARTtimeoutFunc()
{
pc.printf("length = %dUART Revice OK\r\n",Cnt);
Cnt = 0;
}
void callback()
{
char buf;
UART_RXD = pc.getc();
UARTtimeout.attach(&UARTtimeoutFunc, 0.010);
}
int main()
{
//Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
//pc.format(8,SerialBase::None,1);
////pc.baud(115200);
timer.attach(&attime, 0.2);
//event.fall(&trigger);
set_time(1256729737);// Set RTC time to Wed, 28 Oct 2009 11:35:37
Dac = 0.3;
tri = 0.7;
pc.attach(&callback);
while(1)
{
//pc.printf("length = %d\r\n",Cnt);
wait_ms(1000);
// pc.printf("Too hot! (%f)\r\n", temperature.read());
}
}
页:
1
[2]