UCOS-II移植STM32F103C8出现串口无法正确发送浮点数的问题

尝试向洋桃一号上移植UCOS-II系统,参考原子哥的教程,其中验证移植成功性方面原子哥给出了几个实验:

img

在验证float_task时,发现从串口发送回的浮点数出现错误

img

void float_task(void *pdata)
{
  OS_CPU_SR cpu_sr=0;
  static float num=0;
  while(1){
    num+=0.01f;
    OS_ENTER_CRITICAL();
    printf("Count:%.2f \r\n",num);
    OS_EXIT_CRITICAL();
    delay_ms(500);
  }
}

之后我验证发现核心板本身运算float加法时并没有出现错误,是串口无法正确发送float类型。验证方法如下:

void float_task(void *pdata)
{
  OS_CPU_SR cpu_sr=0;
  static float num=0;
  int intnum=0;
  while(1){
    num+=0.01f;
    intnum=100*num;
    OS_ENTER_CRITICAL();
    printf("Count:%d \r\n",intnum);
    OS_EXIT_CRITICAL();
    delay_ms(500);
  }
}

img

由此可知是串口发送出现了问题。写入其他串口发送程序发送浮点数,可以正确收到数据。
本人使用的是洋桃编写的usart.c函数文件,不清楚应该如何修改以解决这个问题。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^