新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32下多個串口的Printf用法

        STM32下多個串口的Printf用法

        作者: 時間:2016-11-19 來源:網絡 收藏
        STM32多個串口Printf用法

        網上講的添加printf()到程序中一般都是這樣的(簡要提一下):
        1.配置GPIO,USART,RCC的Configuration
        2.勾選usbmicrolib
        3.在程序中添加:(頭文件需要添加#include)
        #ifdef__GNUC__
        #definePUTCHAR_PROTOTYPEint__io_putchar(intch)
        #else
        #definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)
        #endif
        PUTCHAR_PROTOTYPE
        {
        USART_SendData(USART1,(u8)ch);
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
        returnch;
        }
        很明顯這個方法使用printf()只能輸出到usart1,如果需要使用多個usart呢,肯定不能都是用printf()。

        方法如下是繼續是用usart2的printf()功能:
        1.配置usart2的串口配置,gpio,rccenable,跟上面類似
        2.勾選usbmicrolib,跟上面類似
        3.添加頭文件#include,編寫USART2的printf函數:
        voidUSART2_printf(char*fmt,...)
        {
        charbuffer[CMD_BUFFER_LEN+1];//CMD_BUFFER_LEN長度自己定義吧
        u8i=0;

        va_listarg_ptr;
        va_start(arg_ptr,fmt);
        vsnprintf(buffer,CMD_BUFFER_LEN+1,fmt,arg_ptr);
        while((i{
        USART_SendData(USART2,(u8)buffer[i++]);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
        }
        va_end(arg_ptr);
        }

        本文引用地址:http://www.104case.com/article/201611/318198.htm



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 淮滨县| 重庆市| 蒙自县| 文化| 建始县| 江安县| 湟源县| 南投县| 德令哈市| 乌海市| 富蕴县| 西充县| 景德镇市| 朝阳县| 巩留县| 茌平县| 壶关县| 岳阳市| 延吉市| 叙永县| 公主岭市| 班戈县| 房产| 平和县| 邵阳县| 遵义县| 津南区| 芜湖县| 湘潭市| 儋州市| 河源市| 定日县| 天全县| 都安| 双柏县| 什邡市| 山东省| 溆浦县| 玉山县| 宣化县| 师宗县|