娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月10日(星期二)

2018年06月10日 | STM32 printf函數打印到串口

發布者:TechGuru123 來源: eefocus關鍵字:STM32  printf函數  打印到串口 手機看文章 掃描二維碼
隨時隨地手機看文章

學習STM32過程中,經常打交道的莫過于串口,你可以將任何信息,當然重要的是調試信息打印到串口中輸出,總是用一個字節發送函數或者字符串發送函數總是有些不放便,之前編程中熟悉的莫過于printf了,下面就給出了用printf打印到串口的方案,當然方案不止一個,僅供參考。


1、 添加printf的頭文件 #include


int fputc(int ch, FILE *f)

{

USART_SendData(USART1, (uint8_t) ch);


while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

return ch;

}


3、修改一下選中Use MicroLIB ,在 Target/Code Generation選中Use MicroLIB 

這樣就可以像以前那樣使用printf了。 

不過現在的USART已經在程序中加了這個重定向; 

編譯會出錯:..\OBJ\164串口轉并口.axf: Error: L6200E: Symbol fputc multiply defined (by usart.o and main.o)。


/************************************************

 劉凱教你學STM32F103

 第21講

 軟件仿真,庫函數實現USART數據發送

 2016年4月24日 10:12:39

 程序實現3 printf實現

**************************************************/

#include "sys.h"

#include "delay.h"

#include "stdio.h"



void RCC_Configuration(void);

void GPIO_Configuration(void);

void USART_Configuration(u32 Baudrate);

int fputc(int ch, FILE *f)//重定向,讓printf輸出到串口

{

    USART_SendData(USART1,ch);


    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

    return ch;

}


int main(void)

{

    u8 i,data;



    RCC_Configuration();

    GPIO_Configuration();

    USART_Configuration(9600);

    data = 'A';

    for(i=0;i<30;i++)

    {

        USART_SendData(USART1, data);

        data++;

        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);

    }

    printf("yuanbao");

}


void RCC_Configuration(void)

{

        /*---------------使用外部RC晶振----------*/

        RCC_DeInit();           //設置時鐘為缺省值

        RCC_HSEConfig(RCC_HSE_ON);  //使能外部高速晶振

        while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);//等待HSE準備就緒


        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);   //使能指令預取

        FLASH_SetLatency(FLASH_Latency_2);                      //等待2個周期


        RCC_HCLKConfig(RCC_SYSCLK_Div1);    //HCLK = SYSCLK

        RCC_PCLK2Config(RCC_HCLK_Div1);     //PCLK2 = HCLK

        RCC_PCLK1Config(RCC_HCLK_Div2);     //PCLK1 = HCLK/2

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 72MHZ

        RCC_PLLCmd(ENABLE);                                 //Enable PLLCLK

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait PLL is ready


       RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);         //SYSCLK = PLLCLK

       while(RCC_GetSYSCLKSource()!= 0x08);                   //Wait PLLCLK as system clock 



        //---------打開相應外設時鐘--------------------

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);    //使能APB2外設的GPIOA的時鐘 

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);    

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);     


void GPIO_Configuration(void)

{

    GPIO_InitTypeDef    GPIO_InitStructure;     //聲明一個結構體變量

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;   //

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //管腳頻率為50MHZ

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 


    GPIO_Init(GPIOA,&GPIO_InitStructure);                //初始化GPIOA寄存器


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  //選擇

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    

    GPIO_Init(GPIOA,&GPIO_InitStructure);                //初始化GPIOA寄存器      


void USART_Configuration(u32 Baudrate)

{

    USART_InitTypeDef USART_InitStructure; 

    USART_InitStructure.USART_BaudRate = Baudrate;      

    USART_InitStructure.USART_WordLength = USART_WordLength_8b; 

    USART_InitStructure.USART_StopBits = USART_StopBits_1; 

    USART_InitStructure.USART_Parity = USART_Parity_No; 

    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 

    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; 

    USART_Init(USART1, &USART_InitStructure);


    USART_Cmd(USART1,ENABLE);

}


關鍵字:STM32  printf函數  打印到串口 引用地址:STM32 printf函數打印到串口

上一篇:STM32 串口通信 printf方法
下一篇:基于STM32的虛擬多線程

推薦閱讀

1、首先要確保使用keil程序正確編譯,并且程序經過調試,已經可以正常發送英文字符,但是發送中文字符時亂碼。2、使用記事本打開main.c文件(或其他主程序),點擊另存為,在右下方選擇編碼方式為ANSI,替換原文件即可
中國正在以官民聯合的方式全力推行其高科技產業政策。其中在“新能源車”領域,繼車載電池后,又在生產驅動電機和自動駕駛技術基礎零部件方面,涌現出了頗具競爭力的企業。 報道稱,東風日產乘用車公司負責純電版軒逸研發工作的首席工程師門田英稔4月在上海車展上說:“我們已經進入了缺少中國生產的零部件就造不出電動汽車的時代。”東風日產是由中國本土...
據BusinessKorea報道,隨著東芝、索尼即將推出各自的首款OLED電視產品,韓國LG電子(LG Electronics)將面臨由日本品牌發起的挑戰。近期,日本東芝(Toshiba)在其官網上發布了48英寸OLED電視Regza系列的產品信息。據了解,東芝計劃在6月19日發布該系列中的48X8400型號,并于秋季發布48X9400型號。X8400是一款經濟型產品,相比之下, X9400則是一款在音質...
據《華爾街日報》9日報道,拜登當日簽署行政令,撤銷特朗普時期有關在美國境內禁止下載和使用TikTok和微信的命令。取而代之的是,拜登將指示商務部長調查與外國“對手”有聯系的應用程序,美國政府認為這些應用程序可能對該國數據隱私及國家安全構成風險。在今年2月11日,美國政府要求聯邦上訴法院暫停針對微信海外版(WeChat)禁令的訴訟。1天前,美國政府...

史海拾趣

問答坊 | AI 解惑

【社區大講堂】頂嵌與你一起:動手做嵌入式產品

緣起:        EEWORLD與頂嵌合作,重磅推出“頂嵌與你一起:動手做嵌入式產品”。希望通過對一個典型嵌入式產品研發過程進行描述,讓初級的嵌入式技術愛好者了解嵌入式開發過程和思路,從而提高學習效率。對于有一定開發經驗 ...…

查看全部問答∨

臺灣RF大牛Shuenn-Yuh Lee課件Radio Frequency Integrated Circuits

1Radio Frequency Integrated Circuits Instructor : Shuenn-Yuh Lee National Chung Cheng University Department of Electrical Engineering Office : 431 TEL : (05)2720411-33223, BP : 0921565137 E-mail : sylee@vlsi.ee.ccu.edu.t ...…

查看全部問答∨

直流鎳氫充電器3

直流鎳氫充電器3…

查看全部問答∨

WaitForMultipleObjects用得對么??

我創建了一個key_Interrupt_event[10]中斷事件組,分別用KernelIoControl與InterruptInitialize函數與對應的外部中斷注冊上了。 然后用一個WaitForMultipleObjects等待任何一個中斷的發生,然后執行響應動作。如下: while(1){ IntrEventNum = W ...…

查看全部問答∨

求助語音存儲與回放的一些問題?

大家好! 由于平時電子作品做的比較少,真正動手做的時候發現有很多小問題不知如何處理,如果哪位大蝦做過《數字化語音存儲與回放系統的設計》還望不吝賜教(不可以用單獨的語音芯片,需要使用AD和DA模塊)。謝謝。我的問題如下: 1、怎么樣控制A ...…

查看全部問答∨

GPSONE問題,求救!

使用anydata DTU800,獲取的GPS信息總是一個位置,而且偏離很大,我對應地圖發現是蓮花橋東南角,我實際位置在西四環(大概3公里外) 發AT+GPSSTRT后MPC,PDE連接都正常,就是返回的+GPS:中的經緯度不是我的位置,更改OMODE,QOSLVL,QOSFH等都不起作 ...…

查看全部問答∨

關于單片機的一段小程序,大家幫我看看,好嗎?

//一個工程文件中 unsigned char USART_Receive(void) { while (!(UCSR0A&(1…

查看全部問答∨

error: can\'t open file \'/.obj\' for input

本帖最后由 dontium 于 2015-1-23 13:37 編輯 我在將vc程序向dm642evm移植時,出錯 video.cmd:   error: can\\\'t open file \\\'/.obj\\\' for input   怎么解決,請賜教 …

查看全部問答∨

EEWORLD大學堂----嵌入式課程

嵌入式課程:https://training.eeworld.com.cn/course/2305…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 扎鲁特旗| 文成县| 沙雅县| 措美县| 赤壁市| 福建省| 喀喇沁旗| 修文县| 日土县| 辽中县| 沂水县| 临桂县| 五寨县| 克什克腾旗| 遂昌县| 邮箱| 绥棱县| 蓝山县| 安吉县| 灵丘县| 集安市| 枣强县| 囊谦县| 嵩明县| 宾川县| 武汉市| 溧水县| 桃园县| 白银市| 舟曲县| 贵阳市| 翁牛特旗| 曲松县| 漠河县| 乌兰县| 固镇县| 平阴县| 巍山| 四会市| 托克托县| 溆浦县|