stm32關於串列埠輸出的幾種常用方式

2021-08-19 21:34:44 字數 2688 閱讀 9275

在使用stm32做專案時,我們常常會使用到串列埠除錯,通過串列埠來輸出我們想要看的相關引數值,這樣既方便有快捷。

具體方法有哪些呢,我自己整理了一下,這個也是借鑑別人的用法而已。希望大家可以相互討論學習。

1、使用printf語句通過串列埠輸出我們想要的引數值

具體的用法:使用之前必須包含相應的標頭檔案#include < stdio.h >

int fputc(int ch, file *f)//重定向,讓printf輸出到串列埠

使用以上函式那必須在stm32在目標選項中必須勾選use microlib選項。同時當然需要配置stm32串列埠的相關初始化才可以,這樣就可以使用printf函式來進行串列埠輸出。可以實現在vs下程式設計使用的的printf函式。

2、使用巨集定義的方式進行串列埠輸出,其實與printf函式一樣的,只是變了種形式而已,很方便的呼叫所使用的串列埠。

具體的用法:使用之前必須包含相應的標頭檔案#include< stdio.h >

// 定義除錯串列埠

#define debug_uart uart7

// 是否輸出除錯資訊

#define debug_printf

#ifdef debug_printf

#define debug(format, ...) printf(format, ##__va_args__)

#else

#define debug(format, ...)

#endif

以上,可在檔案的開始巨集定義相關的內容,之後再用使用以下函式進行輸出內容。同時在配置相關的串列埠內容即可使用除錯串列埠。
int fputc(int ch, file *f)//重定向,讓printf輸出到串列埠

3、使用串列埠傳送單位元組或多字的資料

/*****

*****

*****

*****

*****

*****

*****

*****

*****

****

* @函式名稱: usartx_send_byte

* @函式功能: 串列埠單個位元組

* @輸入引數: usartx: 選擇傳送陣列使用的串口號

* @輸出引數: 無

* @返回值 : 無

* @其它說明: 無

*****

*****

*****

*****

*****

*****

*****

*****

*****

****/

void usartx_send_byte(unsigned char byte) //串列埠傳送乙個位元組

/*****

*****

*****

*****

*****

*****

*****

*****

*****

****

* @函式名稱: uartx_send_str

* @函式功能: 串列埠傳送字串

* @輸入引數: usartx: 選擇傳送陣列使用的串口號

* @輸出引數: 無

* @返回值 : 無

* @其它說明: 傳送字串函式應用指標方法

*****

*****

*****

*****

*****

*****

*****

*****

*****

****/

void uartx_send_str(unsigned char *s)

}/*****

*****

*****

*****

*****

*****

*****

*****

*****

****

* @函式名稱: usart_sendarray

* @函式功能: 串列埠傳送多位元組

* @輸入引數: usartx: 選擇傳送陣列使用的串口號

* len :要傳送的陣列長度

* @輸出引數: 無

* @返回值 : 無

* @其它說明: 無

*****

*****

*****

*****

*****

*****

*****

*****

*****

****/

void usart_sendarray(usart_typedef* usartx, u8 *buf, u8 len)

; //傳送資料

usart_senddata(usartx,buf[t]);

}

//等待傳送結束

while(usart_getflagstatus(usartx,usart_flag_tc)==reset);

}

關於STM32的AD取樣串列埠輸出

ad的本身速率最大可以達到1m,去取樣乙個1khz的正弦訊號,乙個週期內按說可以採集1000個點,但是你去採集然後採集乙個輸出乙個你就會發現乙個週期內才取樣了10個點,這是為什麼呢?是因為你的串列埠太慢了,我們知道串列埠本身是有乙個波特率屬性的,當你把波特率慢慢調大的時候,你會發現還是那個ad速率,...

stm32串列埠輸出

stm32開發板上是如何實現串列埠通訊的,我以實現printf重定向為例來進行分析 先看 main.c include printf.h int main printf.c include printf.h include stm32f10x.h include stm32f10x rcc.h in...

STM32 的串列埠

一 串列埠使用 原則 盡量中斷中不要有延時 比如自定義delay 和自定義printf串列埠列印,明顯找事啊這麼慢能不發生溢位error嘛 接收和傳送盡量分開處理 1.串列埠傳送資料丟失 1 通常是因為傳送之前未檢測tc狀態位之前是否處於傳送完成標誌導致,關於stm32之 的測試程式來講會導致第乙個...