<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          STM32下多個串口的Printf用法

          作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          STM32多個串口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;
          }
          很明顯這個方法使用printf()只能輸出到usart1,如果需要使用多個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.ex-cimer.com/article/201611/318198.htm



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

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();