STM32F407 MDK5软件仿真问题点

问题1:使用正点原子STM32F407串口实验的例程进行软件仿真发现卡在printf函数,如下所示:
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);
USART1->DR = (u8) ch;
return ch;
}
#endif
卡在while函数里面。
问题2:同样的例程移植RT_Thread Nano后,软件仿真卡在rt_kprintf("\n \ | /\n");中
rt_kprintf("\n \ | /\n");
rt_kprintf("- RT - Thread Operating System\n");
rt_kprintf(" / | \ %d.%d.%d build %s\n",
RT_VERSION, RT_SUBVERSION, RT_REVISION, DATE);
rt_kprintf(" 2006 - 2020 Copyright by rt-thread team\n");
深入发现卡在以下的while()里面,同问题一类似:
void rt_hw_console_output(const char *str)
{
rt_enter_critical();

while (*str != '\0')
{

   if (*str == '\n')
    {
        USART1->DR = '\r';
      while((USART1->SR & 0X40) == 0); 
   }

  USART1->DR = *str++;
   while((USART1->SR & 0X40) == 0); 

}

rt_exit_critical();

}
求告知,困扰我好多天了,谢谢大家