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

STM32使用printf函數(shù)

這篇具有很好參考價值的文章主要介紹了STM32使用printf函數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

正點原子學習筆記

1,printf函數(shù)輸出流程
2,printf的使用
3,printf函數(shù)支持

printf函數(shù)輸出流程(C語言)

1)用戶調(diào)用 printf()
2)編譯器從stdio.h里解析
3)最終由fputc()實現(xiàn)輸出

由此用戶需要根據(jù)最終輸出的硬件重新定義該函數(shù),此過程稱為:printf重定向

printf的使用

1,printf("Hello World!\r\n");
2,printf("%d\r\n",121);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????? 常用輸出控制符表

控制符 說明
%d 按十進制整數(shù)型數(shù)據(jù)的實際長度輸出
%ld 輸出長整型數(shù)據(jù)
%md m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補以空格,若大于m,則按實際位數(shù)輸出
%c 用來輸出一個字符
%s 用來輸出字符
%u 輸出無符號整型(unsigned)
%f 輸出實數(shù),包括單精度和雙精度,以小數(shù)形式輸出
%x 以十六進制形式輸出整數(shù)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 常用轉(zhuǎn)義字符表

控制符 說明
\r 回車,將當前位置移到本行開頭
\n 換行,將當前位置移到下一行
\\ 代表一個反斜線字符
\' 代表一個單引號字符
\" 代表一個雙引號字符
\? 代表一個問號
\0 空字符NULL
\t 水平制表(HT)(跳到下一個TAB位置)

printf函數(shù)支持

1,避免使用半主機模式? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 兩種方法:微庫法、代碼法
2,實現(xiàn)fputc函數(shù)? ? ? ? ? ? ? ? ????????????????????????實現(xiàn)單個字符輸出

半主機模式簡介

用于ARM目標的一種機制,可將來自應用程序代碼的輸入/輸出請求傳送至運行調(diào)試器的主機
簡單說:就是通過仿真器實現(xiàn)開發(fā)板在電腦上的輸入和輸出
一般我們:不使用半主機模式??!

方法一:微庫法

stm32 printf,stm32,linux,算法

?方法二:代碼法? ? ? ?(推介)? ? ? ? ? ? ? ? ?一個預處理、兩個定義、三個函數(shù)

1,#pragma import(__use_no_semihosting),確保不從C庫中使用半主機函數(shù)
2,定義:__FILE 結(jié)構體,避免HAL庫某些情況下報錯
3,定義:FILE__stdout,避免編譯報錯
4,實現(xiàn):__ttywrch、_sys_exti 和 _sys_command_string 等三個函數(shù)

#if 1
#pragma import(__use_no_semihosting)             
//標準庫需要的支持函數(shù)                 
struct __FILE 
{ 
	int handle; 
}; 

FILE __stdout;       
//定義_sys_exit()以避免使用半主機模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 
//重定義fputc函數(shù) 
int fputc(int ch, FILE *f)
{ 	
	while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢   
	USART1->DR = (u8) ch;      
	return ch;
}
#endif 

因特殊原因,不完善,但能用,正點原子提供

當使用微庫法時,只需定義 fputc函數(shù)即可

fputc函數(shù)介紹

USART1->SR&0X40?????????????????當上一幀發(fā)送完成后,位6(TX=1)
USART1->DR =(u8) ch;? ? ? ? ? ? ?將要發(fā)送的字符ch寫入到DR寄存器
?文章來源地址http://www.zghlxwxcb.cn/news/detail-727526.html

到了這里,關于STM32使用printf函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • stm32(HAL庫)使用printf函數(shù)打印到串口

    stm32(HAL庫)使用printf函數(shù)打印到串口

    目錄 1、簡介 2.1 基礎配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2?串口外設配置 ?2.3 項目生成 ?3、KEIL端程序整合 ??4、效果測試 在HAL庫中,常用的printf函數(shù)是無法使用的。本文通過重映射實現(xiàn)在HAL庫中進行printf函數(shù)。 2.1.1 SYS配置 ?2.1.2 RCC配置 在usart.c函數(shù)最下方復制如下代碼 接著在

    2024年02月14日
    瀏覽(25)
  • stm32---在keil 5中使用printf函數(shù)輸出到串口USART(printf函數(shù)的移植方法)以及補充窗口printf函數(shù)輸出漢字

    stm32---在keil 5中使用printf函數(shù)輸出到串口USART(printf函數(shù)的移植方法)以及補充窗口printf函數(shù)輸出漢字

    在串口函數(shù)初始化的c文件中加上#include stdio.h 重寫fputc函數(shù)?(fputc是printf函數(shù)的底層,printf就是不斷調(diào)用fputc函數(shù)一個個打印,把fputc函數(shù)重定向到串口,這樣子printf自然就輸出到串口) 在主函數(shù)main.c編寫如下代碼后直接運行. 引入#include stdarg.h ?對sprintf進行可變參數(shù)的函數(shù)封裝 在主

    2024年02月05日
    瀏覽(39)
  • 【13】STM32·HAL庫-正點原子SYSTEM文件夾 | SysTick工作原理、寄存器介紹 | printf函數(shù)使用、重定向

    【13】STM32·HAL庫-正點原子SYSTEM文件夾 | SysTick工作原理、寄存器介紹 | printf函數(shù)使用、重定向

    ??下面函數(shù)都是以sys_開頭,定義在sys.c中。正點原子函數(shù)現(xiàn)階段命名規(guī)則如果是在led.c中,則以led_開頭。在F7/H7系列中會存在Cache配置函數(shù),I-Cache中存儲指令,D-Cache中存儲數(shù)據(jù)。 ??SysTick,即系統(tǒng)滴答定時器,包含在M3/4/7內(nèi)核里面,核心是一個24位的遞減計數(shù)器( 最大計

    2024年02月15日
    瀏覽(62)
  • STM32CubeIDE串口printf函數(shù)輸出中文亂碼(配置教程+解決方法)

    STM32CubeIDE串口printf函數(shù)輸出中文亂碼(配置教程+解決方法)

    目錄 前言 平臺環(huán)境 軟件:STM32CubeIDE 硬件:STM32H7A3ZIT6Q 一、串口配置 二、printf重定向 三、中文亂碼解決方案 步驟 效果 四、總結(jié) 本文主要講述在使用CubeIDE配置串口通信的過程中,如何 重定向printf() 函數(shù),以及如何解決在 串口打印中文時輸出亂碼 的情況。 ????????

    2024年02月07日
    瀏覽(28)
  • STM32-HAL庫-printf函數(shù)重定向(簡單易懂親測有效)

    STM32-HAL庫-printf函數(shù)重定向(簡單易懂親測有效)

    由于STM32cubemx生成的HAL庫代碼沒有printf,為了讓這個函數(shù)能實現(xiàn)打印功能,我們必須要把這個函數(shù)重定向,讓它重定向到串口中,把要輸出的內(nèi)容打印到串口中。 配置好時鐘后,選擇你的串口,生成代碼。 進入到STM32xxxhal.c中,加入如下兩條語句,你的huart是數(shù)字幾,后面就修

    2024年02月05日
    瀏覽(18)
  • stm32的printf使用

    stm32的printf使用

    ?參考代碼:Embedded/stm32/STM32_printf · guorong/study - 碼云 - 開源中國 (gitee.com) ????????在剛開始學習C語言的時候,都使用過printf函數(shù),支持的格式比較齊全,相打印什么樣的信息都比較好實現(xiàn)。在使用STM32的過程中,也可以使用printf函數(shù),printf函數(shù)是C語言stdio的庫里定義好的

    2024年02月21日
    瀏覽(12)
  • STM32使用串口printf亂碼問題解決方法

    STM32使用串口printf亂碼問題解決方法

    使用stm32系列單片機串口打印問題,在使用HAL庫重新定義printf為串口輸出后,輸出的內(nèi)容全都是亂碼,試了網(wǎng)上的方法后還是亂碼。 ?像這樣的 ? ?最后發(fā)現(xiàn)是串口調(diào)試助手和keil的文字編碼方式不同, keil中是GB 2312,串口調(diào)試助手是UFT_8,所以打印出來才會亂碼 ?將串口調(diào)試助

    2024年02月11日
    瀏覽(34)
  • stm32之12.如何使用printf打印輸出

    stm32之12.如何使用printf打印輸出

    ? 主函數(shù)增加這些代碼即可實現(xiàn)printf打印輸出 ?需要添加頭文件 #include \\\"stdio.h\\\" --------------- 源碼 struct __FILE { int handle; /* Add whatever you need here */ }; FILE __stdout; FILE __stdin; int fputc(int c, FILE *f)? { ?? ?/* 發(fā)送一個字節(jié) */ ?? ?USART_SendData(USART1,c); ?? ?/* 等待發(fā)送完畢 */ ?? ?while(

    2024年02月11日
    瀏覽(18)
  • 使用clion配合STM32CubeMX開發(fā)stm32(包含斷點調(diào)試,查看寄存器值,printf重定向)

    使用clion配合STM32CubeMX開發(fā)stm32(包含斷點調(diào)試,查看寄存器值,printf重定向)

    在嵌入式領域中開發(fā)以ARM公司的Cortex M內(nèi)核為代表的單片機時程序員使用最多的IDE一定是Keil公司的MDK4 MDK5,而Keil已經(jīng)脫離現(xiàn)代智能IDE,近年來IAR逐步向現(xiàn)代智能IDE靠近但還不足,一些芯片原廠提供了基于eclipse改裝版IDE,這些工具在調(diào)試方面有優(yōu)勢,比如查看外設寄存器,內(nèi)

    2024年04月24日
    瀏覽(34)
  • 普中STM32-PZ6806L開發(fā)板(HAL庫函數(shù)實現(xiàn)-USART1 printf+scanf/gets)

    普中STM32-PZ6806L開發(fā)板(HAL庫函數(shù)實現(xiàn)-USART1 printf+scanf/gets)

    實現(xiàn)printf+scanf/gets通過USART1 的發(fā)送接收。 主芯片串口引腳圖 我的板子板子自帶串口壞掉了, 所以使用USB轉(zhuǎn)TTL線, 連接如下 電路原理圖 實物圖 scanf是以空白符(空格、制表符、換行等等)為結(jié)束標志的,當遇到空白符是就會結(jié)束一次輸入,如果你需要讀取空格的話可以使用gets或者

    2024年02月04日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包