自己封裝乙個類似 printf 的函式(前提是已經可以實現串列埠傳送了):
#include
#include
#include
uint32_t uart_strlen ( uint8_t *str )
return cnt;
}void
usart_printf
(uint8_t usartport,
char
*fmt,..
.);va_start
(ap, fmt)
;vsprintf((
char
*)databuf, fmt, ap)
;va_end
(ap);if
(usartport ==1)
//等待串列埠1傳送完成
while
(hal_uart_getstate
(&huart1)
== hal_uart_state_busy_tx);}
else
if(usartport ==2)
//等待串列埠2傳送完成
while
(hal_uart_getstate
(&huart2)
== hal_uart_state_busy_tx);}
else
return
;}
之後就可以在**裡通過usart_printf函式實現串列埠列印,需要注意的是:
列印最後需要加上"\n\r",否則換行會不正常,比如usart_printf(1, 「hello world ! \n\r」);
使用標準的printf函式:
詳情可參考這篇博文:stm32上使用printf.
勾選use micro lib庫,包含stdio.h標頭檔案
採用串列埠的方式,主要就是重定向printf使用哪乙個串列埠輸出。
#include
#ifdef __gnuc__
#define putchar_prototype int __io_putchar(int ch)
#else
#define putchar_prototype int fputc(int ch, file* f)
#endif
/* __gnuc__ */
#ifdef __cplusplus
extern
"c"#ifdef __cplusplus
}#endif
//__cplusplus
接下來就可以直接用printf函式實現列印。
no pains, no gains.
STM32使用HAL庫寫串列埠接收中斷
硬體 正點原子戰艦開發板 stm32f103zet6 軟體 mdk5,stm32cubemx 下面講解使用hal庫配置串列埠1,使串列埠1可以使用中斷接收位元組並原樣返回。uint8 t uart1 rxbuf 10 用於存放接收到的資料 void mx usart1 uart init void ...
STM32之串列埠
名稱 stm32之串列埠 說明 對於stm32的串列埠通訊來說,從外部看,和c51差不多。從內部看,啊。我還不了解。從使用上說,也是需要先配置usart,然後通過終端或者輪詢的方式接受或者輸出資料。由於有了韌體庫函式的幫助,stm32的串列埠配置起來比c51還要方便不少。本實驗完成的是輸入輸出重定向...
STM32 的串列埠
一 串列埠使用 原則 盡量中斷中不要有延時 比如自定義delay 和自定義printf串列埠列印,明顯找事啊這麼慢能不發生溢位error嘛 接收和傳送盡量分開處理 1.串列埠傳送資料丟失 1 通常是因為傳送之前未檢測tc狀態位之前是否處於傳送完成標誌導致,關於stm32之 的測試程式來講會導致第乙個...