(アイドル割り込みSCM用)可変長データプログラムを受信するためのシリアル・ポートは、20msのは時折パック現象を貼り受信側、テスト手順が50ms以上の間隔がスティックパック現象に表示されませんSTM32F4探検を送信するかどうかを判断するためにタイマーを使用しています。
typedefは構造体 { Rec_Flag uint8_t。 uint8_tプロセス; uint8_tタイムアウト。/ * 单位MS * / uint8_t Rx_Length。 uint8_t Tx_Buf [ 64 ]。 uint8_t Rx_Buf [ 64 ]。 } USART_RTx_TypeDef。 extern USART_RTx_TypeDef USART2_RTx。 空隙 USART2_IRQHandler(ボイド) { IF(LL_USART_IsActiveFlag_RXNE(USART2) =!RESET) { USART2_RTx.Rx_Buf [USART2_RTx.Rx_Length ++] = USART2-> DR。 スイッチ(USART2_RTx.Process) { ケース 0: USART2_RTx.Timeout = 3 。 USART2_RTx.Process = 1 。 LL_TIM_EnableCounter(TIM1)。 破ります; ケース 1 : USART2_RTx.Timeout = 3 。 破ります; デフォルト: USART2_RTx.Timeout = 0 ; USART2_RTx.Process = 0 ; LL_TIM_DisableCounter(TIM1)。 破ります; } } } ボイド TIM1_UP_TIM10_IRQHandler(ボイド) { / * ユーザコードはTIM1_UP_TIM10_IRQn 0 BEGIN * / 場合(!LL_TIM_IsActiveFlag_UPDATE(TIM1)= RESET) { LL_TIM_CleaRFlag_UPDATE(TIM1)を、 USART2_RTx.Timeout - ; もし(USART2_RTx.Timeoutの== 0 ) { USART2_RTx.Rec_Flag = 1。/ * 接收完成标志* / LL_TIM_DisableCounter(TIM1)。 USART2_RTx.Process = 0 ; } } }
最後に、まだあなたにいくつかの情報を提供し、私が皆を助ける方法でお願い致します
(STM32シリアルアプリケーション)
http://www.makeru.com.cn/live/1392_1164.html?s=45051
STM32に基づいてシリアル操作説明
http://www.makeru.com.cn/live/1758_490.html?s=45051を