新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32下多個(gè)串口的Printf用法

        STM32下多個(gè)串口的Printf用法

        作者: 時(shí)間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
        STM32多個(gè)串口Printf用法

        網(wǎng)上講的添加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;
        }
        很明顯這個(gè)方法使用printf()只能輸出到usart1,如果需要使用多個(gè)usart呢,肯定不能都是用printf()。

        方法如下是繼續(xù)是用usart2的printf()功能:
        1.配置usart2的串口配置,gpio,rccenable,跟上面類似
        2.勾選usbmicrolib,跟上面類似
        3.添加頭文件#include,編寫USART2的printf函數(shù):
        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



        關(guān)鍵詞: STM32多個(gè)串口Printf用

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 福海县| 平凉市| 繁峙县| 鄂托克旗| 大厂| 汨罗市| 乡宁县| 资兴市| 新巴尔虎右旗| 霞浦县| 隆林| 贺兰县| 屯留县| 玉环县| 安化县| 乃东县| 息烽县| 汉阴县| 罗甸县| 台东县| 蒙自县| 蒙山县| 澄迈县| 四会市| 桦南县| 出国| 芒康县| 齐河县| 霍山县| 石嘴山市| 灵台县| 琼海市| 隆化县| 华容县| 邯郸市| 南昌县| 乐山市| 黄陵县| 怀远县| 东平县| 田阳县|