STM32之串列埠移植(在固定的條件下才會進行編譯)

2021-09-26 16:03:03 字數 1956 閱讀 2596

stm串列埠函式在某些條件下想要讓其串列埠列印,但是在某些時候不想讓其進行串列埠列印

本例程就是提供了乙個這樣的例程:

1.對串列埠進行初始化配置

void uart_initwbaudrate(void)

2.串列埠中斷函式:

void uart2_irqhandler(void)                	//串列埠1中斷服務程式

} if(uart_getitstatus(uart2, uart_it_txien) != reset)

}else

}}

3.串列埠傳送函式:

void  usart2sendbyte(char *data,u8 len)//傳送乙個位元組 硬體連線選用的為usart2

uart_rx_sta=0;

}

由函式3來進項串列埠資料的列印也是可以的,但是不能讓其在某些時候不列印,本例程想要的結果就是讓其在某些條件之下進行選擇性的列印

4.一下是本次主要講解的函式:

void printf_uart(char *fmt,...)

while(1)

//fuartsend((u8*)&gprintstring[0],length);

va_end(ap);

}

/*在上面的函式中

va_list(va_list是在c語言中解決變參問題的一組巨集)

va_list表示可變引數列表型別,實際上就是乙個char指標fmt

然後是va_start:va_start用於獲取函式引數列表中可變的頭指標

(獲取函式可變引數列表)

1.輸出引數為ap,型別為va_list:

用於儲存函式引數列表中可變引數的頭指標(

即可變引數列表)

2.輸入引數fmt,ap指向fmt後面的引數,

為第乙個引數的前乙個引數,是乙個固定引數

vsprintf((char *)gprintstring, fmt, ap):

送格式化輸出到串中 ,函式說明:

vsprintf()會根據引數fmt 字串來轉換並格式化資料,

然後將結果複製到引數char(*)gprintstring 的字串陣列,

直到出現字串結束('\0')為止.

va_end():va_end用於結束對可變引數的處理。

對於這段**的理解:

printf函式首先定義了乙個char指標fmt,

然後後面緊跟的是printf的變參,那麼變參轉換就開始了,

下乙個函式va_start定義了乙個指向變參的首指標args,

緊接著利用vsprintf函式,按照fmt格式以及通過args指標,

將變參乙個個按照規定好的格式轉換資料,

結果複製到char(*)gprintstring這個陣列中,

最後結束可變引數處理。

這裡我對於fmt這個指標的理解是,定義了乙個指標型別,

轉換結果就是按照這個指標的型別轉換的,

這裡轉換的結果就是將變參轉換成char字元型

就是字串轉換到乙個陣列中

*/

上面的函式在進行串列埠列印時候每次列印乙個字元的,轉化乙個就列印乙個

5.下面的函式為串列埠選擇性列印函式

#define displayatcmd(_x)           if (!getconnectedstatus()) do  while(0)
上面的函式的選擇性列印為當getconnectedstatus()==0的時候,才會進行do   while(0)迴圈,但是為0,所以就會執行一次do後面的語句,因此可以實現選擇性的列印,列印函式為displayatcmd("123456789")  

本人也是小白,希望有錯誤的地方大家給指出來,及時修正共同進步

STM32之串列埠

名稱 stm32之串列埠 說明 對於stm32的串列埠通訊來說,從外部看,和c51差不多。從內部看,啊。我還不了解。從使用上說,也是需要先配置usart,然後通過終端或者輪詢的方式接受或者輸出資料。由於有了韌體庫函式的幫助,stm32的串列埠配置起來比c51還要方便不少。本實驗完成的是輸入輸出重定向...

在STM32上移植FreeRTOS

freertos是乙個迷你的實時作業系統核心。作為乙個輕量級的作業系統,功能包括 任務管理 時間管理 訊號量 訊息佇列 記憶體管理 記錄功能 軟體定時器 協程等,可基本滿足較小系統的需要。開啟後如下如顯示 為了避免出錯,請將路徑改為全英文 將主程式改為如下 include freertos.h in...

STM32之串列埠原理

串列埠通訊定義 串列埠是計算機上一種非常通用裝置通訊的協議。大多數計算機包含兩個基於rs232的串列埠。串列埠同時也是儀器儀表裝置通用的通訊協議 很多gpib相容的裝置也帶有rs 232口。同時,串列埠通訊協議也可以用於獲取遠端採集裝置的資料。串列埠通訊原理 串列埠通訊的概念非常簡單,串列埠按位 b...