解決: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_in_count[4]=;
三:記錄當前接受到的資料數。
uint8_t data_len[4] = ;
四:用來記錄出錯的次數。
uint8_t error_count = 0;
五:記錄每個usart口,當前處理完的資料。
uint8_t data_out_count[4];
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)
data_in_count[i]--;
data_out_count[i]++;
if(data_out_count[i]>5)
}} ........
}
F4107Usart資料處理程式
解決 cortex m4上,usart自動傳送資料方案。1.usart中斷太快。資料還沒有處理完。usart中斷就會把沒處理完的資料上該覆蓋掉。導致資料丟失。2.這程式需要在main中處理4個usart口的資料,這樣出錯的概率會更大。提出如下解決方案 第一 規定每條完成的資料長度,步會超過256位元...
多程序 如何使用多程序處理多個任務
以下 用以建立兩個子程序處理任務,通過基本的 框架講解如何使用fork建立很明確的子程序處理任務。int groupcount 2 char ptaskgroup 2 pid t pid 1 for int i 0 i groupcount i else parent process if pid ...
Python 多程序處理多個資料檔案
問題描述 有多個資料檔案,採用相同的處理函式進行處理。如果採用序列的思想對檔案進行處理,那就需要分別處理每乙個檔案,所需要的時間非常長。所以,需要採用多程序的方法,對多個資料檔案採用並行的方式進行處理,處理時間縮短明顯。實現方法 主函式 import multiprocessing pool mul...