1. 程式人生 > >Freemodbus RTU在stm32上的移植分析

Freemodbus RTU在stm32上的移植分析

        可以這樣描述以上狀態轉換狀態,上電啟動或復位進入STATE_RX_INIT狀態,為了防止協議棧在初始化過程中就收到串列埠資料,要放棄這個無效的資料,要先等待一個T35時間,過了這個時間才進入STATE_RX_IDLE狀態,開始接收資料。實際上只要注意系統啟動順序,這個問題還是可以避免的。進入STATE_RX_IDLE狀態後,從收到第一個字元資料開始啟動定時器進入STATE_RX_RCV狀態,每接收一個位元組都要重新復位定時器開始定時,直到出現一個T35超時。如果接收的資料符合規定的資料格式,那麼整幀資料接收完畢,又回到STATE_RX_IDLE狀態,如果資料過長那麼就到STATE_RX_ERROR狀態,等待整幀接收完畢,放棄整個幀然後進入STATE_RX_IDLE狀態。當然實現所有狀態的狀換還需要BOOL xMBRTUTimerT35Expired(void )函式。