回覆列表
  • 1 # 叮咚同城

      freemodbus透過串列埠中斷的方式接收和傳送資料。採用這種做法我想可以節省程式等待的時間,並且也短充分使用CPU的資源。  串列埠中斷接收毋庸置疑,在中斷服務函式中把資料儲存在陣列中,以便稍後處理。但是串列埠傳送中斷使用哪種形式?串列埠傳送中斷至少有兩種方式,  第一種,資料暫存器空中斷,只要資料暫存器為空並且中斷遮蔽位置位,那麼中斷就會發生;  第二種,傳送完成中斷,若資料暫存器的資料傳送完成並且中斷遮蔽位置位,那麼中斷也會發送。我非常建議各位使用串列埠傳送完成中斷。  freemodbus多使用RS485通訊中,從機要麼接收要麼傳送,多數情況下從機處於接收狀態,要有資料傳送時才進入傳送狀態。進入傳送狀態時,資料被一個一個位元組傳送出去,當最後一個位元組被髮送出去之後,從機再次進入接收狀態。如果使用傳送暫存器為空中斷,還需要使用其他的方法才可以判斷最後一個位元組的資料是否傳送完成。如果使用資料暫存器為空中斷,那麼將很有可能丟失最後一個位元組。轉載,僅供參考。

  • 2 # 孔丙火

    首先,你的問題描述並不清楚,難以判斷具體問題。

    第二,對於接收資料的過程中,可以逐步進行排查,以確定問題所在:①先看微控制器的uart是否能進中斷;②看一幀資料能否接收完整。最有可能出現問題的地方是:接收非空中斷配置是否正確,3.5個字元週期的定時配置是否正確。

  • 中秋節和大豐收的關聯?
  • 送男士什麼禮物好?