This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

UART通信的中断问题



1.接收中断:当接收到数据时产生中断,读取了数据后,假如之后中断程序要处理的指令很                               多,这时又接受到一个数据,但还在中断程序中,这时会处理完这个中断后再次                           进入中断吗?

2.发送中断:疑问跟接收一样。还有:发送中断标志上电是置位的,我软件将其置零,这时候                          发送BUF是空的,这发送标志还会马上自动置位吗?

用的是F149

  • 你好,

         关于问题1,答案应该是不会的,所以需要楼主不要在中断服务程序中做太多的操作

    问题2答案应该是是的,只要buf为空就会马上置位

  • 你好,

    以接收中断为例,你可以这样理解。

    当PC在main函数里面跑,如果来了一个数据。中断产生,进入中断处理程序。

    在中断处理程序如果再来中断,分四种情况:

    在中断开始清IFG

    第一,你已经读取buf数据,那么读完之后还没退出,buf又进数据,IFG置位,退出该中断立即有进来。

    第二,没读buf又来数据,之前数据被覆盖,下次再进,数据还是最后一次数据 。

    在中断末清IFG

    只接受一次数据,退出前清了IFG,在中断又来的一次数据被忽略。

  • kqian0327 说:

    你好,

    以接收中断为例,你可以这样理解。

    当PC在main函数里面跑,如果来了一个数据。中断产生,进入中断处理程序。

    在中断处理程序如果再来中断,分四种情况:

    在中断开始清IFG

    第一,你已经读取buf数据,那么读完之后还没退出,buf又进数据,IFG置位,退出该中断立即有进来。

    第二,没读buf又来数据,之前数据被覆盖,下次再进,数据还是最后一次数据 。

    在中断末清IFG

    只接受一次数据,退出前清了IFG,在中断又来的一次数据被忽略。

    IFG1&=~UTXIFG0; 现在将发送标志清零,之后会马上置1吗?(从未发送过数据)

  • 你好,

    看你在什么清。

    如果你清零IFG之后还在中断服务函数里面处理其他东西,而下一次中断又到来,你的IFG就会由置1.

  • kqian0327 说:

    你好,

    看你在什么清。

    如果你清零IFG之后还在中断服务函数里面处理其他东西,而下���次中断又到来,你的IFG就会由置1.

    你好,在main函数里清零,也不发送数据,此时会立马又置1吗?(因为发送BUF是空的,软件将U0TXIFG清零了)