买了原子的板子,STM32串口代码问题

2019-08-23 14:39发布

下面这段代码是什么意思,谁能够解释一下。uart的代码          
#if 1
#pragma import(__use_no_semihosting)            

struct __FILE
{
        int handle;

};

FILE __stdout;      

_sys_exit(int x)
{
        x = x;
}

int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);
    USART1->DR = (u8) ch;      
        return ch;
}
#endif

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-08-23 15:08
这一段代码,是用来实现printf函数输出的。定向到了串口1上面。
树上的龙猫
2楼-- · 2019-08-23 16:37
 精彩回答 2  元偷偷看……
dingdi
3楼-- · 2019-08-23 20:09
树上的龙猫 发表于 2017-4-1 16:48
应该是重定向printf函数吧,就是让串口支持printf函数打印

while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;
                        printf(" Äú·¢ËíμÄÏûÏ¢Îa: ");
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART1, USART_RX_BUF[t]);
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
                        }
                        printf(" ");
                        USART_RX_STA=0;
                }



if(USART_RX_STA&0x8000)   这里0x8000  我不太理解
树上的龙猫
4楼-- · 2019-08-23 22:44
你去看看原子哥的开发指南5.3.1节你就会明白了。
是把USART_RX_STA当作一个16位的寄存器来使用,这一句是判断接收到了0x0A数据,也就是换行符,标志接收数据完成。

一周热门 更多>