解決:cortex-m4上,usart自動傳送資料方案。
1. usart中斷太快。資料還沒有處理完。usart中斷就會把沒處理完的資料上該覆蓋掉。導致資料丟失。
2.這程式需要在main中處理4個usart口的資料,這樣出錯的概率會更大。
提出如下解決方案:
第一:規定每條完成的資料長度,步會超過256位元組。
第二:我們規定資料的結束表標誌為資料的後三位為,ffffff
第三:定義乙個全域性的資料,他是乙個三維陣列該資料用來存放4個usart口發上來的資料。
uint8_t usart_data[4][5][256];
下面解析為什麼要定義乙個三維陣列:
第乙個下標4:它分別用來接受不同的usart口的資料。
第二個下標5:它表示每個usart最多能快取的資料條數是5.
第三個下標256:它用來表示最多一條資料能存256個位元組。
下面是程式如果實現。
定義如下變數:
一:接受usart資料緩衝器的定義。它是乙個全域性的三維資料
uint8_t usart_data[4][5][256] = ;
二:記錄每個usart口,當前接收到的資料條數。
uint8_t data_count[4] = ;
三:記錄當前接受到的資料數。
uint8_t data_len[4] = ;
四:用來記錄出錯的次數。
uint8_t error_count = 0;
void uart_data_handle(uint8_t route)
else
}} }
}void usart1_irqhandler(void)
} return;
}void usart2_irqhandler(void)
} return;
}void usart3_irqhandler(void)
} return;
}void usart4_irqhandler(void)
} return;
}/****main*******/
uint8_t tmp[512] = ;
static __inline void process_usartdata(uint8_t *tmpdata, uint8_t *usartdata, char *usart_format, int flag)
if(data_count[i]>5)
}} ........
}
F4107單程序處理多個usart中斷接收到的資料
解決 cortex m4上,usart自動傳送資料方案。1.usart中斷太快。資料還沒有處理完。usart中斷就會把沒處理完的資料上該覆蓋掉。導致資料丟失。2.這程式需要在main中處理4個usart口的資料,這樣出錯的概率會更大。提出如下解決方案 第一 規定每條完成的資料長度,步會超過256位元...
STM32f1學習筆記 USART
typedef struct usart inittypedef usart stopbits usart stopbits引數 描述usart stopbits 1 在幀尾傳輸1個停止位 usart stopbits 0.5 在幀尾傳輸0.5個停止位 usart stopbits 2 在幀尾傳輸2...
STM32F4之USART 庫函式操作
stm32f407xx內嵌四個通用同步 非同步接收器 usart1,usart2,usart3 和usart6 和兩個通用非同步收發器 uart4和uart5 這6個介面提供非同步通訊的irdasir endec支援,多機通訊模式,單線半雙工通訊模式lin主 從功能。usart1和usart6介面能...