TA的每日心情 | 奋斗 2019-12-1 10:07 |
---|
签到天数: 1617 天 连续签到: 1 天 [LV.Master]伴坛终老
|
在Mbed中,使用串口发送中断时,Freescale的MCU与其它MCU有些不同,串口发送中断不能总是开着,这样程序会不断进入中断服务程序,从而陷入死循环,不能正常运行。
例如,这样的用法程序是无法执行的,LED也不会闪(但是这个程序在ST的MCU上是可以正常运行的):
#include "mbed.h"DigitalOut myled(LED1);Serial uart(USBTX, USBRX);void TXD_isr(){ myled = !myled;}int main(){ uart.attach(&TXD_isr, Serial::TxIrq); while(1) { uart.putc('>'); wait(1.0); }}正确的用法如下,串口每秒发送一个字节,同时LED也会闪一次:
#include "mbed.h"DigitalOut myled(LED1);Serial uart(USBTX, USBRX);void TXD_isr(){ uart.attach(0, Serial::TxIrq); // disable txd isr myled = !myled;}int main(){ while(1) { uart.putc('>'); uart.attach(&TXD_isr, Serial::TxIrq); wait(1.0); }} |
|