STM32
直播中

王波

7年用户 1368经验值
私信 关注
[问答]

如何去实现stm32f103串口一与串口二的printf函数输出呢

如何去实现STM32f103串口一与串口二的printf函数输出呢?如何对其printf函数进行配置呢?

回帖(1)

姜雨孜

2021-11-30 14:03:12
因项目需要特意配置了该段代码,不喜勿喷,纯属个人笔记。

对于串口的代码网上也是很多,无非是配置问题,该代码是基于stm32f103c8t6来编程的。

接线:

USART                                                  STM32

GND                                                     GND

  T                                                           PA3

  R                                                           PA2

在项目文件内创建usart2.c文件与usart.h文件,将文件导进去进行相关串口配置便可,

以下相关配置可根据用户手册与历程代码修改。


/*·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ý*/
void UART2SendByte(unsigned char SendData)
{          
        USART_SendData(USART2,SendData);
        while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);            
}  

/*½ÓÊÕÒ»¸ö×Ö½ÚÊý¾Ý*/
unsigned char UART2GetByte(unsigned char* GetData)
{             
        if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET)
        {  return 0;//ûÓÐÊÕµ½Êý¾Ý
                }
        *GetData = USART_ReceiveData(USART2);
        return 1;//ÊÕµ½Êý¾Ý
}
/*½ÓÊÕÒ»¸öÊý¾Ý£¬ÂíÉÏ·µ»Ø½ÓÊÕµ½µÄÕâ¸öÊý¾Ý*/
void UART2Test(void)
{
       unsigned char i = 0;

       while(1)
       {   
                 while(UART2GetByte(&i))
        {
         USART_SendData(USART2,i);
        }      
       }     
}


那么接下来就是相关printf函数的配置了

1 .MDK配置

      到工程属性的Target   -> Use MicroLIB  把勾上







2. 在usart2函数中要包含“stdio.h”



3. 重定向   “fputc”  函数,直接粘贴复制进目标文件即可


  
#if 1
#pragma import(__use_no_semihosting)            
               
struct __FILE
{
        int handle;

};

FILE __stdout;      

void _sys_exit(int x)
{
        x = x;
}
//fgetcÖض¨Ïò
int fputc(int ch, FILE *f)
{
       
                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
                USART_SendData(USART2,(uint8_t)ch);
       

       
        return ch;
}
#endif
配置完成后便可使用












举报

更多回帖

发帖
×
20
完善资料,
赚取积分