基本原理:靜態佇列
/** 串列埠的fifo簡單讀取實現
* 功能,實現串列埠的fifo實現
* 使用方法:
* 版本:v1.0.0
* */#include
"sys.h
"#include
"usartbuf.h
"usartype usart_fifo_read( usart_recerivepoint rusart,uint8_t *buf,uint8_t length)
while (length--)
}return usartok;//
資料讀取成功}/*
向緩衝區中寫入length個資料
*/usartype usart_fifo_write(usart_recerivepoint rusart,uint8_t * buf,uint8_t length)//
while(length--)
}return usartok;//
資料讀取成功}
/*清空緩衝區
*/void
usart_fifo_clear(usart_recerivepoint rusart)
#ifndef _usartbuf_h#define _usartbuf_h
/*該引數設定接受區大小
*/#define recerivrsize 64//
接受區大小
typedef
struct
usart_recerivetype,*usart_recerivepoint;
#define usartype int
#define usartreadover -2//
串列埠資料超出
#define usartwriteover -3//
串列埠寫資料越界
#define usartok 1usartype usart_fifo_write(usart_recerivepoint rusart,uint8_t * buf,uint8_t length);usartype usart_fifo_read( usart_recerivepoint rusart,uint8_t *buf,uint8_t length);
void
usart_fifo_clear(usart_recerivepoint rusart);
#endif/*_usartbuf_h*/
使用方式:定義乙個usart_recerivetype型別的緩衝佇列,然後就可以利用上述檔案中提供的三個函式來實現串列埠的fifo的資料接受和讀取
使用的時候可以利用
usartype usart_fifo_write(usart_recerivepoint rusart,uint8_t
* buf,uint8_t length);
usartype usart_fifo_read( usart_recerivepoint rusart,uint8_t *
buf,uint8_t length);
這兩個函式來向緩衝區中寫入和讀取資料,其中引數的含義如下
第乙個引數(rusart)是串列埠緩衝區指標型別,用來標示串列埠,
第二個引數(buf)是乙個指uint8_t型別的指標,用來指向要寫入或者讀取資料的首位址,
第三個引數(length)表示要寫入或者讀取的資料長度
出口引數usartype 實際是乙個整形資料,返回值得意義入下
#define usartreadover –2//
串列埠資料超出
#define usartwriteover -3//
串列埠寫資料越界
#define usartok 1//串列埠緩衝區資料讀出或者寫入成功
void
usart_fifo_clear(usart_recerivepoint rusart);
這個函式用來清空緩衝區資料,實現起來比較簡單
通過串列埠實現printf和scanf函式
在做裸板開發時,常常需要通過輸出或者通過串列埠輸入一些資訊。在有作業系統機器上,我們很少關心輸入和輸出的問題。因為有很多現成的庫函式供我們呼叫。在做裸板開發時,可沒有現成庫函式供我們呼叫,一切都需要我們自己實現。下面我們通過串列埠在裸板上實現乙個printf和scanf函式。printf主要用來進行...
通過串列埠實現printf和scanf函式
草根老師部落格 程姚根 在做裸板開發時,常常需要通過輸出或者通過串列埠輸入一些資訊。在有作業系統機器上,我們很少關心輸入和輸出的問題。因為有很多現成的庫函式供我們呼叫。在做裸板開發時,可沒有現成庫函式供我們呼叫,一切都需要我們自己實現。下面我們通過串列埠在裸板上實現乙個printf和scanf函式。...
使用串列埠實現接收和傳送功能
一 前言 本文以串列埠 usart1為例,初步實現接收和傳送功能,使用的是stm32f1板子,基於火哥教學做的自我小結。電腦裝置需要安裝串列埠除錯助手和usb轉串列埠ch340g的驅動。二 正文 1.硬體設計 將 ch340g 的 txd 引腳與 usart1 的 rx 引腳連線,ch340g 的 ...