打印
[技术问答]

H32L130串口中的printf问题

[复制链接]
770|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
[code]while(1)
    {
        if(u8RxCnt>=1)
        {
                       
            u8RxCnt = 0;
           
                        Uart_SendDataIt(M0P_UART0, u8RxData); //启动UART1发送第一个字节
                       
        }
        printf("%s\n","sdfasdf");
    }
}
///< 串口发送重定向
int fputc(int ch, FILE * file)
{
    Uart_SendDataIt(M0P_UART0,ch);         //调用库函数,通过UART0发送一个字母。
    while(Uart_GetStatus(M0P_UART0, UartTC) == FALSE);
    return ch;
}

printf重定向,fputc第一行是发送一个字符,第二行判断是否发送完成,但是代码调试,他卡在第二行的循环,也通过串口助手,看了打印信息,只打印了最开始的s字符,就没有打印。
各位大神,帮忙看看,谢谢了

使用特权

评论回复
沙发
呜呜呜呜呜呜你|  楼主 | 2023-5-18 16:05 | 只看该作者
顶顶顶

使用特权

评论回复
板凳
呜呜呜呜呜呜你|  楼主 | 2023-5-18 16:10 | 只看该作者
Z:\QQ截图20230518160824.png

使用特权

评论回复
地板
csy1123| | 2023-5-18 16:23 | 只看该作者
发送完后没清楚TC标志位?

使用特权

评论回复
5
呜呜呜呜呜呜你|  楼主 | 2023-5-18 16:47 | 只看该作者
csy1123 发表于 2023-5-18 16:23
发送完后没清楚TC标志位?

刚刚在那个while循环后面清空TC标志位,还是没用

使用特权

评论回复
6
martinhu| | 2023-5-18 16:58 | 只看该作者
你为什么测试串口和打印串口用的是同一个???
而且两者都缺少TC标志清除,
建议使用两个串口分别做测试和打印

使用特权

评论回复
7
呜呜呜呜呜呜你|  楼主 | 2023-5-18 17:40 | 只看该作者
martinhu 发表于 2023-5-18 16:58
你为什么测试串口和打印串口用的是同一个???
而且两者都缺少TC标志清除,
建议使用两个串口分别做测试和 ...

我在中断服务函数里面,这样写,也没有清空发送的中断标志位,还是能发送成功,我stm32的重定向就是这样写的,没有任何问题,但是华大的就出现问题了

QQ截图20230518173824.png (15.93 KB )

QQ截图20230518173824.png

使用特权

评论回复
8
xch| | 2023-5-19 09:09 | 只看该作者
Uart_GetStatus 函数是不是被优化了仅读一次状态

使用特权

评论回复
9
csy1123| | 2023-5-19 09:49 | 只看该作者
本帖最后由 csy1123 于 2023-5-19 09:51 编辑

是不是TC中断打开了,进中断函数了,最好将测试串口和打印串口分开用不同的UART

使用特权

评论回复
10
呜呜呜呜呜呜你|  楼主 | 2023-5-19 10:31 | 只看该作者
csy1123 发表于 2023-5-19 09:49
是不是TC中断打开了,进中断函数了,最好将测试串口和打印串口分开用不同的UART ...

fputc中判断发送缓冲区是否为空,为空的话,就退出循环,然后表示发送完。如果没有中断里面清除是否发送完成的标志位,还是打印不了数据。我将清空发送完成的标志位写到fputs中的那个while后面,也是打印不了,必须要在中断里面写才行,main函数运行,就直接打印printf,我不通过串口助手发送数据打断printf的打印。
不知道为什么我已经判断了发送缓冲区是空的,表示发送完了,还必须要在中断里面判断那个发送完成标志位才行

QQ截图20230519102353.png (49.34 KB )

QQ截图20230519102353.png

使用特权

评论回复
11
呜呜呜呜呜呜你|  楼主 | 2023-5-19 10:32 | 只看该作者
xch 发表于 2023-5-19 09:09
Uart_GetStatus 函数是不是被优化了仅读一次状态

跟这个Uart_GetStatus没关系,我用的printf打印数据,然后打印不出来数据

使用特权

评论回复
12
xch| | 2023-5-19 11:35 | 只看该作者
呜呜呜呜呜呜你 发表于 2023-5-19 10:32
跟这个Uart_GetStatus没关系,我用的printf打印数据,然后打印不出来数据

你不是说它“他卡在第二行的循环” 。 调试时难道没看见 TC 置1 ?  不可能发出数据后TC 不置1

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

51

帖子

0

粉丝