国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于STM32F4系列中printf重定向問題詳解

這篇具有很好參考價值的文章主要介紹了關(guān)于STM32F4系列中printf重定向問題詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言
關(guān)于printf函數(shù)fputc函數(shù)聯(lián)系和區(qū)別

聯(lián)系:
1.共同目標:
printf 函數(shù)和 fputc 函數(shù)都用于將字符輸出到指定的輸出流中。
2.字符輸出:
兩個函數(shù)都可以用于輸出一個字符,但在實際使用時,printf 函數(shù)通常用于輸出格式化的數(shù)據(jù),而 fputc 函數(shù)更常用于單個字符的直接輸出。

區(qū)別:
1.功能差異:
printf 函數(shù)提供了更高級別的功能,可進行格式化輸出、數(shù)值轉(zhuǎn)換、對齊等操作。而 fputc 函數(shù)僅僅將單個字符寫入到指定的輸出流中。
2.參數(shù)類型:printf 函數(shù)接受格式化字符串可變參數(shù)列表作為參數(shù),因此可以輸出多個不同類型的數(shù)據(jù)。而 fputc 函數(shù)接受一個字符和指向輸出流的指針作為參數(shù)。
3.使用場景:由于 printf 函數(shù)提供了豐富的格式控制和數(shù)據(jù)轉(zhuǎn)換功能,通常用于日常的輸出和調(diào)試。而 fputc 函數(shù)更適合在特定情況下,直接將單個字符輸出到指定設備或文件中。

為什么在stm32中要重定向printf函數(shù)?
在STM32微控制器中,printf 函數(shù)是用于將格式化的字符串輸出到標準輸出的函數(shù)。然而,默認情況下,STM32芯片并沒有直接連接一個用于標準輸出的終端設備,如串口或LCD顯示屏。因此,為了使用 printf 函數(shù)來輸出調(diào)試信息或結(jié)果,需要對其進行重定向。

====================================================

其實在printf函數(shù)內(nèi)部來說,是封裝了一個fputc函數(shù)來進行字符輸出操作

所以這就是本節(jié)內(nèi)容,如何在stm32中重定向printf,就是重定向fputc函數(shù),本節(jié)使用串口實現(xiàn),直接看代碼實現(xiàn)

直接在你寫的usart.c中添加即可

//重定向fputc函數(shù)
int fputc(int ch, FILE *f)		//兩個標準參數(shù)
{
	//將要發(fā)送的數(shù)據(jù)通過串口1發(fā)送出來(可以用電腦上的串口調(diào)試軟件接收)
	USART_SendData(USART1, ch);	
	
	//等待發(fā)送是否完成
	while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
	
	return ch;
}

如何找到這個函數(shù)和函數(shù)詳解如下:

stm32 printf 重定向,stm32,單片機,嵌入式硬件

以下是關(guān)于STM32F4芯片給的寄存器手冊,具體查找為何要這樣重寫
stm32 printf 重定向,stm32,單片機,嵌入式硬件
stm32 printf 重定向,stm32,單片機,嵌入式硬件
根據(jù)上圖,我已經(jīng)把為何重定向和如何重定向,以及重定向函數(shù)參數(shù)都做了仔細解讀

使用:
1.直接在main函數(shù)直接使用printf函數(shù)即可(其他地方也可以使用,注意添加頭文件)

int main(void)
{
	Usart1_Init();
	while(1)
	{
		//添加好stdio.h頭文件之后,就可以正常使用printf函數(shù)了,方便以后調(diào)試
		printf("你好,熱愛代碼陌生人!\n");
		delay_ms(1000);
	
	}

2.在編譯的時候勾選標準c微庫
stm32 printf 重定向,stm32,單片機,嵌入式硬件
3.即可在電腦上的調(diào)試助手看到打印的數(shù)據(jù)
stm32 printf 重定向,stm32,單片機,嵌入式硬件

注意:
1.打印的是亂碼,原因如下

  1. 波特率設置不匹配:在使用串口進行輸出時,波特率必須與目標終端設備(例如PC)的波特率匹配。請確保在初始化串口時,將波特率設置為與終端設備相同的值。
  2. 時鐘配置錯誤:串口通信涉及到時鐘的配置。如果時鐘配置錯誤,數(shù)據(jù)傳輸可能會出錯,導致輸出結(jié)果亂碼。請仔細檢查時鐘配置是否正確。
  3. IO引腳配置錯誤:如果將串口的TX引腳連接到錯誤的引腳上,或者配置了錯誤的引腳復用功能,也可能導致輸出亂碼。請確保將TX引腳連接到正確的引腳,并正確配置引腳復用功能。
  4. 緩沖區(qū)溢出:如果使用的緩沖區(qū)大小不足以容納輸出的數(shù)據(jù)量,可能會導致數(shù)據(jù)溢出,從而產(chǎn)生亂碼。請確保使用足夠大的緩沖區(qū)。
  5. 中斷優(yōu)先級設置錯誤:如果串口中斷的優(yōu)先級設置得不正確,可能會導致數(shù)據(jù)傳輸錯誤,進而導致輸出亂碼。請確保中斷優(yōu)先級設置正確。

如此,STM32F4中printf函數(shù)重定向已經(jīng)完成,具體芯片還是要看具體的函數(shù)和寄存器進行重寫
最后如果覺得文章對您有幫助,請留下您免費的贊,祝生活開心!文章來源地址http://www.zghlxwxcb.cn/news/detail-774844.html

到了這里,關(guān)于關(guān)于STM32F4系列中printf重定向問題詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Keil環(huán)境下CANopenNode移植到STM32問題記錄(一)---printf重定向問題

    Keil環(huán)境下CANopenNode移植到STM32問題記錄(一)---printf重定向問題

    在直接將CANopenSTM32的示例工程直接移植到Keil環(huán)境下。 如果移植工程未實現(xiàn)printf函數(shù)重定向,則要注釋掉log_printf下面的printf函數(shù),使日志打印失效 在未在選項中勾選使用微庫的時候,程序會卡死。調(diào)試會發(fā)現(xiàn)是卡死在了BKAP 0xAB處,網(wǎng)上搜索會有很多說明,是因為使用了print

    2024年02月13日
    瀏覽(16)
  • 關(guān)于LWIP用法之HTTPD:基于STM32F4搭建web服務器

    關(guān)于LWIP用法之HTTPD:基于STM32F4搭建web服務器

    一,STM32CUBEMX配置(使用的是6.4.0版本) 前提是在配置好LWIP的情況下(能ping通你的開發(fā)板),使能HTTPD功能。 然后是使能LWIP_HTTPD_CGI, 使能:LWIP_HTTPD_SUPPORT_POST(), 使能 :HTTPD_USE_CUSTOM_FSDATA。 會發(fā)現(xiàn)fs.c這個文件的#include HTTPD_FSDATA_FILE,這一句編譯報錯,解決辦法:1) 在KEIL中l(wèi)wipop

    2023年04月08日
    瀏覽(23)
  • STM32F4 IAP 跳轉(zhuǎn) APP問題

    STM32F4 IAP 跳轉(zhuǎn) APP問題

    ??IAP 的作用,網(wǎng)上其他資料已經(jīng)有很多介紹了,這里放一個鏈接,不進行深入的介紹。本文的關(guān)注重點是Bootloader在跳轉(zhuǎn)APP程序中出現(xiàn)的問題。 IAP的實現(xiàn)原理講解以及中斷向量表的偏移 ??本人主要做應用層的開發(fā),所有Bootloader和APP程序使用的是STM32CubeMX工具生成代碼后,

    2024年02月11日
    瀏覽(14)
  • 【STM32F4系列】【HAL庫】電機控制(轉(zhuǎn)速和角度)(PID實戰(zhàn)1)

    【STM32F4系列】【HAL庫】電機控制(轉(zhuǎn)速和角度)(PID實戰(zhàn)1)

    實現(xiàn)電機最常使用的兩個功能, 轉(zhuǎn)速控制 和 位置控制 使用PID閉環(huán)控制(控制線性系統(tǒng)最簡單快捷的控制方法) 為了實現(xiàn) 控制電機轉(zhuǎn)動 和 閉環(huán)控制 需要: 電機(廢話) 編碼器( 霍爾編碼器 或者 光電編碼器 均可) 電機驅(qū)動(這里選的是 l298n模塊 ) 千萬注意黑色的地線,單片機的地要

    2024年02月02日
    瀏覽(38)
  • 【STM32F4系列】【HAL庫】【自制庫】WS2812(軟件部分)(PWM+DMA)

    【STM32F4系列】【HAL庫】【自制庫】WS2812(軟件部分)(PWM+DMA)

    硬件介紹(PCB設計方案) 模擬時序發(fā)送 WS2812是一種異步串行通信,它每一位數(shù)據(jù)時間是ns級別的 默認是高電平狀態(tài) 0碼:220-380ns高電平+580-1600ns低電平 1碼:580-1600ns高電平+220-380ns低電平 復位碼:280us低電平 24Bit數(shù)據(jù)來代表GRB的亮度值 從高位到低位發(fā)送,分別按照G-R-B的順序發(fā)送

    2024年02月15日
    瀏覽(25)
  • 【STM32F4系列】【HAL庫】【模塊介紹】MPU6050設置與DMP庫使用

    【STM32F4系列】【HAL庫】【模塊介紹】MPU6050設置與DMP庫使用

    MPU6050是一個3軸陀螺儀(測角加速度)和3軸加速度計(測量線加速度)的測量芯片 內(nèi)部自帶運算單元(DMP),可以輸出經(jīng)姿態(tài)融合計算后的 四元數(shù) (一種表示旋轉(zhuǎn)的方法) 而且MPU6050的價格較低(10r以下),常被用于精度不高的場合作為姿態(tài)感知的芯片 如經(jīng)典項目平衡車,某年電賽題目風力擺

    2024年02月05日
    瀏覽(63)
  • GD32F4移植STM32F4

    GD32F4移植STM32F4

    近期在項目中采用了GD32F407VET6替換原項目中的STM32F407VET6,網(wǎng)傳GD的兼容性很好,之前也用F1系統(tǒng)的替換了一下,按照CSND各位大佬的經(jīng)驗一步步改進了代碼,測試直接通過,現(xiàn)在也一直在項目中實際應用了,一直沒有出問題。 所以這SMT時,嘉立創(chuàng)沒有STM的貨果斷換成了GD,可換時

    2024年02月16日
    瀏覽(32)
  • STM32-HAL-串口的printf重定向

    STM32-HAL-串口的printf重定向

    一、C語言的格式化輸出 C語言的printf是一個標準庫函數(shù),用于將格式化的數(shù)據(jù)輸出到標準的輸出設備(通常是終端) 基本語法: 其中的第一個參數(shù) const char *format 表示輸出格式,后面的參數(shù)是可變參數(shù),用于填充格式化字符串中的占位符。 字符輸出原理: 格式化字符串處理

    2024年02月11日
    瀏覽(29)
  • stm32 串口調(diào)試配置及printf重定向

    stm32 串口調(diào)試配置及printf重定向

    stm32使用串口調(diào)試打印時,需要對串口進行配置并對printf進行重定向,本文介紹如何配置串口以及printf重定向。 示例: 1、配置選項選中要配置的usart 2、模式選擇異步模式,硬件流控制disable 3、配置串口參數(shù) 生成代碼后可以在工程中usart.c中查看到串口相關(guān)代碼 在工程配置中

    2024年02月11日
    瀏覽(20)
  • STM32F4使用高級定時器(TIM1和TIM8)輸出PWM問題

    STM32F4使用高級定時器(TIM1和TIM8)輸出PWM時要使用TIM_CtrlPWMOutputs使能PWM輸出,否則不會輸出PWM波形,這一點是和通用定時器輸出PWM不一樣的地方,通用定時器是不用配置TIM_CtrlPWMOutputs函數(shù)的。、

    2024年02月15日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包