求助,求助,一个奇怪的问题

2019-07-21 01:19发布

本帖最后由 悠悠三千载 于 2019-5-17 15:14 编辑

用的是rtthread 系统,问题出现在rt_kprintf() 重映射上面当使用如下方式时,rt_kprintf只能打印最后一个字符
[mw_shl_code=c,true]void rt_hw_console_output(const char *str)
{
    unsigned int k = 0;

    /* 进入临界段 */
    rt_enter_critical();

   

    /* 直到字符串结束 */
    while(*str != '')
    {
        /* 换行 */
        if(*str == ' ')
        {
            USART_SendData(HC05_USARTx, ' ');

            while(USART_GetFlagStatus(HC05_USARTx, USART_FLAG_TXE) == RESET);
        }

        USART_SendData(HC05_USARTx, *str++);

        while(USART_GetFlagStatus(HC05_USARTx, USART_FLAG_TXE) == RESET);
    }

    /* 退出临界段 */
    rt_exit_critical();
}
[/mw_shl_code]

当使用如下方式时,是正常的
[mw_shl_code=c,true]void rt_hw_console_output(const char *str)
{
    unsigned int k = 0;

    /* 进入临界段 */
    rt_enter_critical();

    do
    {
        Usart_SendByte(HC05_USARTx, *(str + k));
        k++;

        /* 换行 */
        if(*(str + k) == ' ')
        {
            Usart_SendByte(HC05_USARTx, ' ');
        }

    }
    while(*(str + k) != '');

    /* 等待发送完成 */
    while(USART_GetFlagStatus(HC05_USARTx, USART_FLAG_TXE) == RESET);


    /* 退出临界段 */
    rt_exit_critical();
}
[/mw_shl_code]

这是为什么呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。