STM32的數據發(fā)送有兩個(gè)中斷標志,一個(gè)是發(fā)送數據寄存器空標志,一個(gè)是發(fā)送完畢標志。兩個(gè)標志都可以引起中斷.
要以中斷的方式發(fā)送一個(gè)數據包,流程是這樣的:
1.設置RS485的方向為發(fā)送,使能發(fā)送寄存器空中斷,使能完畢進(jìn)入串口中斷。
2.串口中斷里讀取串口狀態(tài),并填充一個(gè)數據到發(fā)送數據寄存器,硬件自動(dòng)清除發(fā)送數據寄存器空標志,串口數據發(fā)送開(kāi)始。
3.串口發(fā)送完一個(gè)數據,發(fā)送數據寄存器變空,再進(jìn)入中斷,繼續填充下一個(gè)數據,直到最后一個(gè)數據填充完, 使能串口
4.最后一個(gè)數據發(fā)送完畢,再次進(jìn)入中斷, 清除發(fā)送數據寄存器空標志,清除發(fā)送完畢中斷標志,清除這兩個(gè)中斷標志
注: 如果最后一個(gè)數據放入數據發(fā)送寄存器,就立刻設置RS485的方向為接收,對方將會(huì )丟失一個(gè)數據。發(fā)送完畢中斷和
51單片機的TI標志功能是一樣的。唯有發(fā)送寄存器空標志是51單片機所沒(méi)有的,使用這個(gè)標志可保證發(fā)送數據波形的連續性,
聯(lián)系客服