使用sprintf格式化浮点数为0.0

2019-12-21 12:11发布

本帖最后由 SUPER_CRJ 于 2018-2-27 16:36 编辑

如下:在STM32F1编程中使用了类似下面的函数:
        char Value[30];
        sprintf( Value,"%3.1lf",19.0);
        格式化后Value里面为0.0。但是之前是OK的,突然有一天不可以了,之前没有解决,查看网上的解决办法,说是8字节对齐,但是看了μc/OS-Ⅲ中的堆栈都是8的整数倍,怀疑是使用了:#para强制对齐造成的结果(项目其它地方使用的!)。现在要如何解决这个问题呢?我当前的方法是:sprintf( Value,"%d.%d",190/10,190%10);请问大家有没有更好的方法?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
love_ourdev
2019-12-21 21:36
  1. CPU_STK  *OSTaskStkInit (OS_TASK_PTR    p_task,
  2.                          void          *p_arg,
  3.                          CPU_STK       *p_stk_base,
  4.                          CPU_STK       *p_stk_limit,
  5.                          CPU_STK_SIZE   stk_size,
  6.                          OS_OPT         opt)
  7. {
  8.   CPU_STK    *p_stk;
  9.   
  10.   (void)opt;                                                  /* 'opt' is not used, prevent warning                   */
  11.   
  12.   p_stk = &p_stk_base[stk_size];                              /* Load stack pointer                                   */
  13.   p_stk = (CPU_STK *)((CPU_STK)(p_stk) & ~7u);                /* Align the stack to 8-bytes.                          */
  14.                                                               /* Registers stacked as if auto-saved on exception      */
  15.   *(--p_stk) = (CPU_STK)0x01000000uL;                         /* xPSR                                                 */
  16.   *(--p_stk) = (CPU_STK)p_task;                               /* Entry Point                                          */
  17.   *(--p_stk) = (CPU_STK)OS_TaskReturn;                        /* R14 (LR)                                             */
  18.   *(--p_stk) = (CPU_STK)0x12121212uL;                         /* R12                                                  */
  19.   *(--p_stk) = (CPU_STK)0x03030303uL;                         /* R3                                                   */
  20.   *(--p_stk) = (CPU_STK)0x02020202uL;                         /* R2                                                   */
  21.   *(--p_stk) = (CPU_STK)0x01010101uL;                         /* R1                                                   */
  22.   *(--p_stk) = (CPU_STK)p_arg;                                /* R0 : argument                                        */
  23.   *(--p_stk) = (CPU_STK)0x11111111uL;                         /* R11                                                  */
  24.   *(--p_stk) = (CPU_STK)0x10101010uL;                         /* R10                                                  */
  25.   *(--p_stk) = (CPU_STK)0x09090909uL;                         /* R9                                                   */
  26.   *(--p_stk) = (CPU_STK)0x08080808uL;                         /* R8                                                   */
  27.   *(--p_stk) = (CPU_STK)0x07070707uL;                         /* R7                                                   */
  28.   *(--p_stk) = (CPU_STK)0x06060606uL;                         /* R6                                                   */
  29.   *(--p_stk) = (CPU_STK)0x05050505uL;                         /* R5                                                   */
  30.   *(--p_stk) = (CPU_STK)0x04040404uL;                         /* R4                                                   */
  31. #if defined(__ARMVFP__)
  32.   *(--p_stk) = (CPU_STK)0xFFFFFFFDuL;                         /* EXEC_RETURN; See Note 5                              */
  33. #endif

  34.   return (p_stk);
  35. }
复制代码

一周热门 更多>