---------- | 空闲态 | ---------- ------- | S0 | | V BUF0未 | -------------- 发送完 V | BUF0发送态 |<------ | -------------- | | | | S1 | ------- | 写BUF0转S2态| V | ------- | | | | | | BUF1未 | -------------- |写BUF1转S1态 发送完 V | BUF1发送态 |------- | -------------- | | S2 -------
本程序需要如下变量:状态号state(S0、S1、S2),BUF0发送完标志(buf0_txdone),BUF1发送完标志(buf1_txdone),BUF0和BUF1缓冲区(buf0[],buf1[])。 刚开始,程序处在空闲状态S0,buf0_txdone = buf1_txdone = 0发送完标志均为“发送完”。先判断BUF0是否发送完,若未发送完则等待,否则写BUF0并转S2态。在S2态判断BUF1是否发送完,若未发送完则等待,否则写BUF1并转S1态。 关于状态机及消息的更详细文档见: 状态机和消息的相关文档
|