F4107Usart資料處理程式

2021-12-29 22:40:29 字數 1242 閱讀 9915

解決: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介面能...